我有一个带有多个叠加层的 MKMapView。一切都很好,而且它的工作原理是如此简单,令人难以置信。然而,有一件事我无法去上班。这个想法很简单:当用户在覆盖层覆盖的区域内点击时,必须出现包含有关该覆盖层的一些信息的标注。叠加都是MKPolygon
s,它遵循 MKOverlay 协议,因此也遵循 MKAnnotation 协议。
MKOverlay协议符合
MKAnnotation 协议。因此,
所有覆盖对象也是
注释对象可以是
在代码中被视为其中之一或两者。
如果您选择处理覆盖对象
作为两者,你都有责任
在两个地方管理该对象。如果
您想要显示叠加层
视图和注释视图,你
必须同时实施
mapView:viewForOverlay: 和
mapView:viewForAnnotation: 中的方法
您的应用程序委托。它也是
意味着您必须添加和删除
来自覆盖层和
地图的注释数组。
这来自苹果文档。我尝试过这样的事情:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
aView.canShowCallout = YES;
}
但这似乎不起作用。我尝试过使用手势识别器,但除了使用canShowCallOut
财产...
我想你还必须添加 MKOverlays 作为注释
[self.mapView addAnnotations:myOverlays];
然后在 (mapView:viewForAnnotation) 中返回一个未隐藏的 MKAnnotationView,可以是图形(可点击)或零 Alpha 视图。接下来,为每个 MKOverlayView 添加一个 UITapGestureRecognizer,确保它可以与地图的手势配合使用(用于同时识别的 UIGestureRecognizerDelegate 实现)。最后当你的手势识别器触发时执行此操作
[self.mapView setSelectedAnnotations:[NSArray arrayWithObject:myOverlayView.overlay]];
我不确定这是否真的会触发 callOut 显示。
还要确保您从叠加对象中返回标题和/或副标题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)