我在设置地标的 title 和 subtitle 时遇到问题。
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:location
completionHandler:^(NSArray* placemarks, NSError* error){
if (placemarks && placemarks.count > 0) {
CLPlacemark *topResult = [placemarks objectAtIndex:0];
MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];
placemark.title = @"Some Title";
placemark.subtitle = @"Some subtitle";
MKCoordinateRegion region = self.mapView.region;
region.center = placemark.region.center;
region.span.longitudeDelta /= 8.0;
region.span.latitudeDelta /= 8.0;
[self.mapView setRegion:region animated:YES];
[self.mapView addAnnotation:placemark];
}
}
];
placemark.title = @"Some Title";
和 placemark.subtitle = @"Some subtitle";
给我一个错误:
Assigning to property with 'readonly' attribute not allowed
为什么这里不能设置Title和Subtitle?
最佳答案
我想我会唤醒这个线程并给你一个我想出的解决方案。
据我所知,由于固有分配,MKPlacemark 的标题/副标题是只读属性。但是,使用我找到的解决方案,您可以简单地将 MKPlacemark 传递到 MKPointAnnotation 中,如下所示:
CLPlacemark *topResult = [placemarks objectAtIndex:0];
// Create an MLPlacemark
MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];
// Create an editable PointAnnotation, using placemark's coordinates, and set your own title/subtitle
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = placemark.coordinate;
point.title = @"Sample Location";
point.subtitle = @"Sample Subtitle";
// Set your region using placemark (not point)
MKCoordinateRegion region = self.mapView.region;
region.center = placemark.region.center;
region.span.longitudeDelta /= 8.0;
region.span.latitudeDelta /= 8.0;
// Add point (not placemark) to the mapView
[self.mapView setRegion:region animated:YES];
[self.mapView addAnnotation:point];
// Select the PointAnnotation programatically
[self.mapView selectAnnotation:point animated:NO];
请注意,最后的 [self.mapView selectAnnotation:point animated:NO];
是允许自动弹出地标的解决方法。但是,animated:BOOL
部分似乎只适用于 iOS5 中的 NO
- 如果您在手动弹出点注释时遇到问题,您可能需要实现解决方法,这可以在这里找到:
MKAnnotation not getting selected in iOS5
我相信您现在已经找到了自己的解决方案,但我希望这在某种程度上能提供信息。
关于iOS - MKPlacemark 设置标题问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608731/