我的地图引脚可以非常密集地填充,以便当选择一个引脚时,标注会弹出,但大部分被所有其他地图引脚遮挡 - 我可以将地图引脚放到前面,其中有一个代表选定的地图引脚(未点击标注,选定引脚)。
有关解决方案的任何建议吗?
答案 0 :(得分:2)
如果您使用的是自定义注释视图,则可以为selected属性添加一个观察者,该观察者就像选择该引脚时的委托一样。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
MKAnnotation *annview = ...code to either dequeue or create new object...
[annview addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:@"selectedmapannotation"];
return annview;
}
然后您可以使用
监控所选状态- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context;
Mugunth Kumar链接的答案也会给你想要的结果,只是你在你的问题中提到了类似代表的功能。
编辑:
以下是observeValueForKeyPath:ofObject:change:context:method
的内容示例NSString *action = (NSString*)context;
if([action isEqualToString:@"selectedmapannotation"]){
BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
MKAnnotationView *ann = (MKAnnotationView *)object;
if (annotationAppeared) {
// do something with the annotation when it is selected
}
else {
// do something with the annotation when it is de-selected
}
}
答案 1 :(得分:1)
UICallout视图是MKAnnotationView的子视图。所以,我想如果你将Map ping带到前面,UICAlloutView也会在那里。