MapKit 座標から地名などの取得
座標から Placemark 情報取得
coord: CLLocationCoordinate2D は取得済だとして、
placemark: CLPlacemark を取得する
swift
let geoCoder = CLGeocoder()
let location = CLLocation(latitude: coord.latitude, longitude: coord.longitude)
geoCoder.reverseGeocodeLocation(location) { placemarks, error in
if let placemark = placemarks?.first {
print(placemark.name)
print(placemark.location?.coordinate)
}
}
Placemark から情報取得
- 型名は
CLPlacemark nameでは 施設名の場合は施設名、そうでない場合は番地までの情報が取得されるようだ
| 項目 | 例1 | 例2 | 例3 |
|---|---|---|---|
| name | 弘明寺町XXX-X | 西蒲田X丁目XX-X | 猿楽小学校 |
| locality | 横浜市南区 | 大田区 | 渋谷区 |
| subLocality | 弘明寺町 | 西蒲田 | 猿楽町 |
| administrativeArea | 神奈川県 | 東京都 | 東京都 |
| subAdministrativeArea | - | - | - |
subLocality と name で情報が一部重複しているが、
ここが国によって違ったとか、そんなトラップがあった気がする。
(日本以外を表示する機会があった場合に調べる)
横道
- これを「住所」と書くと、人の住んでいる場所とも限らないので違和感
- 「位置情報」と書くと coord のみのように見えてしまう
- 適切なのは「所在地」や「地名」だろうか
- 英語でも、address ではなく location か