我正在尝试使用MKOverlay
(特别是MKPolyline
)在地图上显示路径。然而,我需要该路径显示在我的现有大头针(自定义MKAnnotationView
)之上。有没有一种好的方法将MKPolyline
置于大头针之上?
我正在尝试使用MKOverlay
(特别是MKPolyline
)在地图上显示路径。然而,我需要该路径显示在我的现有大头针(自定义MKAnnotationView
)之上。有没有一种好的方法将MKPolyline
置于大头针之上?
研究注释层的zOrder
属性可能会很有用。将注释发送到父视图层次结构中的后面可能会帮助您实现所需的效果。更改注释的z轴位置应该在mapView:didAddAnnotationViews:
委托方法内完成。
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
annotationView.layer.zPosition = x;
}
我已经有一段时间没有处理MKPolyline
了,我知道在iOS 8中有很多变化,但是你可能可以在绘制时直接操作折线的z位置。
更新
从iOS 7.0+开始,当您将MKOverlay
添加到地图中时,请使用addOverlay:level:
方法。这允许您指定覆盖层的z位置。根据MKOverlayLevels
定义,覆盖层的最高z位置之一是MKOverlayLevelAboveLabels
:
将叠加层置于地图标签、盾牌或兴趣点图标上方,但低于注释和建筑物的3D投影。
不幸的是,如上面的文档所述,地图不支持将叠加层放置在注释上方。一个可能的解决方案是将注释添加到单独的MKOverlay
对象中,然后使用insertOverlay:aboveOverlay:
将其他带路径的叠加层添加到地图中。