首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKAnnotation -地图针标注在其他地图针后面弹出

MKAnnotation -地图针标注在其他地图针后面弹出
EN

Stack Overflow用户
提问于 2009-09-22 04:04:41
回答 2查看 2.2K关注 0票数 7

我的图钉可以非常密集地填充,以便当一个图钉被选中时,标注弹出,但大多数情况下会被所有其他地图图钉遮挡-我可以将地图图钉放在前面它有一个代表选定的地图图钉(不是点击的标注,选定的图钉)。

对解决问题有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2010-05-05 11:52:01

如果您使用的是自定义注释视图,则可以为选定的属性添加一个观察者,该观察者将在别针被选中时充当代理。

代码语言:javascript
复制
- (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;
}

然后,您可以使用以下命令监视所选状态

代码语言:javascript
复制
- (void)observeValueForKeyPath:(NSString *)keyPath
                  ofObject:(id)object
                    change:(NSDictionary *)change
                   context:(void *)context;

Mugunth Kumar链接的答案也会给你想要的结果,只是你在问题中提到了类似委托的功能。

编辑:

以下是observeValueForKeyPath:ofObject:change:context:方法内容的示例

代码语言:javascript
复制
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
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-02-22 02:23:19

UICallout视图是MKAnnotationView的子视图。所以,我认为如果你把Map ping带到前面,UICAlloutView也会在那里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1458052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档