如何在 MKAnnotations 上方显示 MKOverlay?
How do I show MKOverlay above MKAnnotations?
我正在尝试使用 MKOverlay
(特别是 MKPolyline
)在地图上显示路线。但是,我需要路线显示在我现有的引脚上方(自定义 MKAnnotationView
s)。有什么好方法可以把 MKPolyline
放到引脚上方的前面吗?
调查注释层的 zOrder
属性 可能会有用。在父视图的层次结构中向后发送注释可能会帮助您实现所需的效果。更改注释 z 轴位置可能应该在 mapView:didAddAnnotationViews:
委托方法中完成。
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
annotationView.layer.zPosition = x;
}
自从我处理 MKPolyline
以来已经有一段时间了,我知道 iOS 8 中的情况发生了很大变化,但是您可以直接操作多段线的 z 位置,同时您正在画它。[=21=]
更新
当您将 MKOverlay
添加到地图时,从 iOS 7.0+ 开始,使用 addOverlay:level:
方法。这允许您指定叠加层的 z 位置。 MKOverlayLevels
定义的叠加层的最高 z 位置之一是 MKOverlayLevelAboveLabels
:
Place the overlay above map labels, shields, or point-of-interest icons but below annotations and 3D projections of buildings.
遗憾的是,如上面的文档所述,地图不支持在注释上方放置叠加层。一个可能的解决方案可能是将注释添加到单独的 MKOverlay
对象,然后使用 insertOverlay:aboveOverlay:
.
将另一个叠加层(带有路径)添加到地图
我正在尝试使用 MKOverlay
(特别是 MKPolyline
)在地图上显示路线。但是,我需要路线显示在我现有的引脚上方(自定义 MKAnnotationView
s)。有什么好方法可以把 MKPolyline
放到引脚上方的前面吗?
调查注释层的 zOrder
属性 可能会有用。在父视图的层次结构中向后发送注释可能会帮助您实现所需的效果。更改注释 z 轴位置可能应该在 mapView:didAddAnnotationViews:
委托方法中完成。
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
annotationView.layer.zPosition = x;
}
自从我处理 MKPolyline
以来已经有一段时间了,我知道 iOS 8 中的情况发生了很大变化,但是您可以直接操作多段线的 z 位置,同时您正在画它。[=21=]
更新
当您将 MKOverlay
添加到地图时,从 iOS 7.0+ 开始,使用 addOverlay:level:
方法。这允许您指定叠加层的 z 位置。 MKOverlayLevels
定义的叠加层的最高 z 位置之一是 MKOverlayLevelAboveLabels
:
Place the overlay above map labels, shields, or point-of-interest icons but below annotations and 3D projections of buildings.
遗憾的是,如上面的文档所述,地图不支持在注释上方放置叠加层。一个可能的解决方案可能是将注释添加到单独的 MKOverlay
对象,然后使用 insertOverlay:aboveOverlay:
.