在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)