CoreLocation - [5] MKPlacemark

2010年10月15日金曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

[前回] Cocoaの日々: CoreLocation - [4] 緯度経度から住所情報を得る - MKReverseGeocoder

今回は MKPlacemark を触ってみた。


MKPlacemark


MKPlacemarkのオブジェクト は MKReverseGeocoder から生成され、国や住所情報が格納されている。

MKPlacemark Class Reference より


実際に MKReverseGeocoder を使い任意の緯度経度から MKPlacemarkを取得した時の例
addressDictionary['CountryCode']: JP
addressDictionary['Street']: 14丁目 236−1
addressDictionary['SubThoroughfare']: 236−1
addressDictionary['SubLocality']: 日本橋
addressDictionary['City']: 中央区
addressDictionary['State']: 東京都
addressDictionary['Thoroughfare']: 14丁目
addressDictionary['Country']: 日本
addressDictionary['FormattedAddressLines'][0]: 日本
addressDictionary['FormattedAddressLines'][1]: 東京都中央区日本橋14丁目236−1
----
thoroughfare : 14丁目
subThoroughfare : 236−1
locality : 中央区
subLocality : 日本橋
administrativeArea : 東京都
subAdministrativeArea : (null)
postalCode : (null)
country : 日本
countryCode : JP


addressDictionary の各キーは Address Book framework - ABPerson クラスの "Address Property" で定義されている。
ABPerson Reference より



<MKAnnotaction>


MKPlacemark は MKAnnotationプロトコルを実装している。ということはそのまま MKMapView へ追加することができる。前回のコードで自前の MKAnnotation実装オブジェクトを使うのをやめて単純に取得した MKPlacemarkオブジェクトを MKMapViewへ addAnnotation したところ地図上にピンが表示され、タップで住所が表示されるようになった。
- (void)reverseGeocoder:(MKReverseGeocoder*)geocoder didFindPlacemark:(MKPlacemark*)placemark {

 [self.mapView addAnnotation:placemark];

 /*
 self.label.text = placemark.title;
 [self logPlacemark:placemark];

 SimpleAnnotation* annotation =
  [self annotationForCoordinate:geocoder.coordinate];
 annotation.title = placemark.title;
  */
}
簡易な用途ならこれで十分。


ソースコード


GitHubからどうぞ。

Responses

Leave a Response

人気の投稿(過去 30日間)