ios - 如何在 MKAnnotations 上方显示 MKOverlay?

标签 ios mapkit mkannotation mkoverlay mapkitannotation

我正在尝试使用 MKOverlay(特别是 MKPolyline)在 map 上显示路线。但是,我需要路线显示在我现有的引脚上方(自定义 MKAnnotationView)。有什么好的方法可以将 MKPolyline 放在引脚上方的前面?

最佳答案

研究注释层的 zOrder 属性可能会有用。在父 View 的层次结构中向后发送注释可能会帮助您实现所需的效果。更改注释 z 轴位置可能应该在 mapView:didAddAnnotationViews: 委托(delegate)方法中完成。

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
    annotationView.layer.zPosition = x;
}

自从我处理 MKPolyline 以来已经有一段时间了,我知道 iOS 8 中的事情发生了很大变化,但是您可以在绘制时直接操作多段线的 z 位置


更新
当您将 MKOverlay 添加到 map 时,从 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.

不幸的是,如上面的文档所述, map 不支持在注释上方放置叠加层。一种可能的解决方案是将注释添加到单独的 MKOverlay 对象,然后使用 insertOverlay:aboveOverlay: 将另一个叠加层(带有路径)添加到 map 。

关于ios - 如何在 MKAnnotations 上方显示 MKOverlay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240855/

相关文章:

ios - 如何知道 MKMapView visibleMapRect 是否包含坐标?

ios - 将视点转换为 MKMapView 坐标

ios - 如何永久修复 Xcode 5 SpringBoard 无法启动应用程序,错误为 : -3

iOS 私有(private)目录

ios - 没有 iCloud 的 UIDocumentBrowserViewController

iphone - 创建一个 Drop Pin MKPointAnnotation 支持拖动,就像 map 应用程序中的 Drop Pin 一样

iphone - 问题从mapView删除注释

ios - 全屏 iOS Swift

输入多个单词时,Swift UIText 字段抛出 nil 错误

ios - 在 UITableViewCell 上时,MKPointAnnotation 在 mapView 上闪烁。如何阻止它?