Ami*_*hah 14 objective-c mkmapview ios automatic-ref-counting
我有一个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];
}
Run Code Online (Sandbox Code Playgroud)
本MKAnnotation的显示在地图上罚款,我可以选择它们,但是没有出现标注泡沫.我知道他们正在被选中
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
[view setCanShowCallout:YES];
NSLog(@"Title:%@",[view.annotation description]);
}
Run Code Online (Sandbox Code Playgroud)
但那只是打印出来的
Title:(null)
Run Code Online (Sandbox Code Playgroud)
我正在使用ARC,并且我已经在我的Place对象中设置了属性:
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic,readwrite, copy) NSString *title;
@property (nonatomic,readwrite, copy) NSString *subtitle;
Run Code Online (Sandbox Code Playgroud)
我做错了什么/错过了什么?谢谢.
小智 41
标注不会显示,因为它title是nil.
viewForAnnotation由于默认地图视图实现显示标注,因此没有必要实现显示标注.(不过,如果你这样做实现它,你必须设置canShowCallout在该委托方法,而不是在那里你正在做的事情吧.)
即使您设置canShowCallout为YES,标注仍然不会显示是否title为nil空白.
记录tmp字典.无论是name键为空或不存在.
您需要实现MKMapViewDelegate方法mapView:viewForAnnotation:,该方法创建视图并返回它.在该方法中,调用[view setCanShowCallout:YES];您计划为注释返回的视图.
因为在mapView:didSelectAnnotationView:选择了引脚后调用它,它对启用/禁用标注没有任何影响.
| 归档时间: |
|
| 查看次数: |
10748 次 |
| 最近记录: |