我有一个 MKMapView
,我正在添加这样的注释:
for (NSDictionary *tmp in response)
{
NSDictionary *places = [tmp objectForKey:@"place"];
NSDictionary *location = [places objectForKey:@"location"];
NSLog(@"long: %@ Lat:%@",[location objectForKey:@"longitude"], [location objectForKey:@"latitude"]);
float longitude = [[location objectForKey:@"longitude"] floatValue];
float latitude = [[location objectForKey:@"latitude"] floatValue];
CLLocationCoordinate2D locationco = {latitude,longitude};
NSString *titleString = [tmp objectForKey:@"name"];
Place *pin = [[Place alloc] init];
pin.coordinate = locationco;
pin.title = titleString;
pin.subtitle = @"A Location";
//NSArray *annots = [[NSArray alloc] initWithObjects:pin, nil];
//[map addAnnotations:annots];
[map addAnnotation:pin];
[[map viewForAnnotation:pin] setCanShowCallout:YES];
}
MKAnnotation
很好地显示在 map 上,我可以选择它们,但是没有出现标注气泡。我知道他们是从这个中正确选择的
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
[view setCanShowCallout:YES];
NSLog(@"Title:%@",[view.annotation description]);
}
但这只是打印出来
Title:(null)
我正在使用 ARC,我已经在我的 Place 对象中设置了属性:
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic,readwrite, copy) NSString *title;
@property (nonatomic,readwrite, copy) NSString *subtitle;
我做错了什么/遗漏了什么? 谢谢。
最佳答案
标注未显示,因为 title
为 nil
。
没有必要实现 viewForAnnotation
来显示标注,因为默认的 map View 实现显示标注。 (但是,如果您确实实现了它,则必须在该委托(delegate)方法中设置 canShowCallout
,而不是您现在正在执行的位置。)
即使您将 canShowCallout
设置为 YES
,如果 title
为 nil
,标注仍然不会显示> 或空白。
记录tmp
字典。 name
键为空或不存在。
关于objective-c - MKAnnotation 未在 MKMapView 上显示标注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8203436/