在iOS 5上放置一个CLPlacemark在地图上
在iOS 5中,有一种新的方式来转发地理编码地址(像美国加利福尼亚州的1无限循环地址转换为经纬度地址)。 更多信息在这里。
有没有人试图把前进的地理编码CLPlacemark对象在MKMapView? 地理编码后,我有一个CLPlacemark对象,但不知道如何把它放在地图上。
我将不胜感激任何forms的帮助。 Google迄今为止没有任何帮助。
除了选定的答案之外,还有一种方法可以将注释添加到mapView以进行前向地理编码。 CLPlacemark对象可以直接转换为MKPlacemark并添加到mapview中。 喜欢这个:
MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:placemark]; [self.mapView addAnnotation:placemark];
这是一个前向地理编码的完整例子。
NSString *address = @"1 Infinite Loop, CA, USA"; CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:address completionHandler:^(NSArray* placemarks, NSError* error){ // Check for returned placemarks if (placemarks && placemarks.count > 0) { CLPlacemark *topResult = [placemarks objectAtIndex:0]; // Create a MLPlacemark and add it to the map view MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; [self.mapView addAnnotation:placemark]; [placemark release]; } [geocoder release]; }];
CLPlacemark
没有实现MKAnnotation
协议,所以你仍然需要创build你自己的注解类,或者你可以使用MKPointAnnotation
。 地标的坐标位于其location
属性中。
例如:
MKPointAnnotation *pa = [[MKPointAnnotation alloc] init]; pa.coordinate = placemark.location.coordinate; pa.title = ABCreateStringWithAddressDictionary(placemark.addressDictionary, YES); [mapView addAnnotation:pa]; [pa release]; //remove if using ARC
您可以根据地标将title
设置为任何您想要的内容,但如示例中所示,可以使用地址簿UI框架从地址字典中提供地址string。
在迅速3.0
let pm = placemarks! as [CLPlacemark] // this is Clpmacemark let placemark = MKPlacemark.init(placemark: pm) self.mapview.addAnnotation(placemark)