iOS11에서 CLPlaceMark의 name에서 취할 수 있는 값이 바뀌었다고 생각해 검증하면, 이상한 프로퍼티인 것을 알았다

5936 단어 iOSSwift아이폰

그것은 iOS11 대응에서 일어났다.



MapKit을 이용하여 아래 샘플과 같이 위도경도에서 주소를 취득했을 때 iOS10과 11에서는 CLPlaceMark에서 취득할 수 있는 정보에 차이가 있음을 발견했습니다.

샘플
let geocoder = CLGeocoder()
// 東京タワー(東京都港区芝公園4丁目2番8号)のlocationを作る
let location = CLLocation(latitude: 35.658581, longitude: 139.745433)

// 経度、緯度から逆ジオコーディングして住所を取得する
geocoder.reverseGeocodeLocation(location) { (placeMarkArray, error) in
    let placemark = placeMarkArray?.first
    //ここでCLPlaceMarkから住所情報を取得可能
}

iOS10까지의 경우




속성
안의 값


이름
시바 공원 4가 2번 8호

isoCountryCode
JP

contry
일본

postalCode
105-0011

administrativeArea
도쿄도

subAdministrativeArea
nil

locality
미나토구

subLocality
시바 공원

thoroughfare
시바 공원 4초메

subThoroughfare
2번 8호


iOS11의 경우




속성
안의 값


이름
〒105-0011

isoCountryCode
JP

country
일본

postalCode
105-0011

administrativeArea
도쿄도

subAdministrativeArea
nil

locality
미나토구

subLocality
시바 공원

thoroughfare
시바 공원 4초메

subThoroughfare
2번 8호


알아보기 좋은 분이라면 깨달았다고 생각합니다만 name 로부터 돌아오는 값이 지금까지와 전혀 다릅니다.
iOS10까지라면 throughfare와 subThoroughfare를 합체시킨 문자열을 취득할 수 있었습니다만, iOS11로부터 기호 첨부의 우편 번호를 취득으로 하게 되어 있습니다.

덧붙여서, Document의 name 프로퍼티의 란에는, 이하와 같이 쓰여져 있으므로, iOS11에서 어떤 이유로 바뀌었는지 수수께끼네요.


수정 방법



iOS10 이전에 name 속성에서 정보를 얻는 경우 iOS11 이상에서도 사용할 수 있도록 thoroughfare와 subThoroughfare를 결합한 문자열로 변경해야 할 것입니다.

해외 주소에서도 해봤다.



백악관





백악관
//ホワイトハウス(ワシントンD.C.ペンシルベニア大通り1600)
let location = CLLocation(latitude: 38.897667, longitude: -77.036611)



속성
안의 값


이름
백악관

isoCountryCode
미국

country
미국

postalCode
20500

administrativeArea
DC

subAdministrativeArea
nil

locality
워싱턴 D.C.

subLocality
Washington Mall

thoroughfare
Pennsylvania Ave NW

subThoroughfare
1600년


뭐라고 말할 것입니다. iOS10과 11 모두 동일한 정보를 얻을 수있었습니다.
게다가 name에는 thoroughfare와 subThoroughfare의 조합된 문자열이 아니라 제대로 백악관과 들어 있습니다.

그렇다면 name은 고유 명사를 얻을 수 있다는 것입니까?
그렇지만, 그 경우라면 최초의 도쿄 타워의 위도 경도를 넣은 경우는, name에는 도쿄 타워가 들어가 있는 것은? 라는 의문이 떠오르고 점점 이상합니다.

풀 하우스



만약, name에는 고유명사 들어간다고 하면, 예를 들면 고유명사가 없는 민가의 위도 경도를 입력하면 어떻게 되는 것일까요.
하지만 마음대로 민가의 위도 경도를 넣어 여기에 쓸 수 없으므로 드라마 '풀하우스'의 모델이 된 민가의 위도 경도를 입력해 봅시다.


태너 집
// フルハウスのタナー家のモデルとなった民家(1709 Broderick St, San Francisco, California)のlocation
let location = CLLocation(latitude: 37.786334, longitude: -122.441976)



속성
안의 값


이름
1709 Broderick St

isoCountryCode
미국

contry
미국

postalCode
94115

administrativeArea
CA

subAdministrativeArea
샌프란시스코

locality
샌프란시스코

subLocality
Lower Pacific Heights

thoroughfare
Broderick St

subThoroughfare
1709년


태너가도 iOS10과 11에서 차이가 없었습니다.
다만, 이번의 경우는, thoroughfare와 subThoroughfare가 조합된 캐릭터 라인을 name로부터는 취득할 수 있었습니다.

결론



・name 프로퍼티로 취득할 수 있는 정보는, 국내, 국외에서 흩어져 있으므로 조심한다.
・iOS10까지로, 일본 국내의 위도 경도를 넣어 name 프로퍼티로 주소의 일부를 취득하고 있었을 경우는, 11 이후에서도 사용할 수 있도록 thoroughfare와 subThoroughfare를 조합한다
・Netflix에서는 풀하우스 전 시즌을 볼 수 있는 데다, 오리지널 작품의 속편 풀러 하우스는 재미있다.

좋은 웹페이지 즐겨찾기