[我正在使用我的视图控制器上显示的Mapbox MGLMapView
编码iOS应用,在此mapView上,我使用MGLShapeSource
,MGLLineStyleLayer
和MGLPolylineFeature
对象绘制路线。
这里是代码:
let newSource = MGLShapeSource(identifier: "polylineBlue", shape: self.polylines, options: nil)
mapView.style?.addSource(newSource)
let newStyle = MGLLineStyleLayer(identifier: "polylineBlueLayer", source: source)
...styling my layer...
mapView.style?.addLayer(newStyle)
source.shape = self.polylines // a MGLPolylineFeature object
非常适合该路线,但有一个问题:出现在我的注释顶部。
我使用常规的mapView函数添加注释:
mapView.addAnnotations([..my MGLPointAnnotation objects...])
我尝试在这里和其他网站上搜索,我只找到一个主题,除了有人说我们无法在注释上设置z图层位置之外,没有其他帮助。
有人知道解决方法吗?我是否必须使用:https://docs.mapbox.com/ios/maps/examples/add-marker-symbol/?
如果是,我是否需要为每个注释创建一个MGLSymbolStyleLayer
?
听起来像是对基本需求的痛苦解决方案...
谢谢!
在您提供的代码段中,您的注释似乎是MGLPointAnnotations
。在这种情况下,您需要使用MGLPointAnnotations
将MGLShapeSource
添加到MGLShapeSource(initWithIdentifier:shapes:),然后使用此形状源创建MGLSymbolStyleLayer
。
为了确保注释显示在路线的顶部,您需要验证何时添加每个图层,因为在渲染之前将图层“烘焙”到地图中。如果在将路线添加到地图后添加负责注释的MGLSymbolStyleLayer
,它们将显示在顶部。如果在路线加载之前添加它们,它们将显示在路线线图层下方。只需要一个MGLSymbolStyleLayer
。
有关标记和注释的其他信息,请查看Mapbox的文档here。