我有一个带有自己图层的 Mapbox,上面写着城镇和地标的标签......
假设我想突出显示一个特定的地标,并且我想将其 z 索引移得更高,因为否则,它会与其他一些元素重叠...
我可以使用
map.setLayoutProperty
或者还有什么我可以做的吗?
如果我正确地回答了你的问题,那么你正在寻找一种方法来更改另一层上方某些layer的z-index。 (不是某些功能高于另一个功能)。就是这样:
https://www.mapbox.com/mapbox-gl-js/api/#map#movelayer
map.moveLayer(yourLandmarkLayerId, someAnotheLayerId);
如果您只想将地标图层移动到图层层次结构的顶部:
map.moveLayer(yourLandmarkLayerId);
附注对于移动图层,你应该知道它的 ID:
var layers = map.getStyle().layers;
var layerId = layers[i].id;
对于想要在 android 上执行此操作的人来说,最简单的方法是删除该图层并将其再次添加到另一个图层的上方或下方。我没有找到更好的方法:
/**
* Remove the target layer and add it again above the specific layer
*/
fun moveLayerAvobe(layer: Layer, breakpointLayerID: String, style: Style) {
// Remove Layer
style.removeLayer(layer)
// Add it again
style.addLayerAbove(layer, breakpointLayerID)
}
在 MapBox SDK v10 上重新排序图层如下所示:
mapboxMap.getStyle()?.moveStyleLayer(layerId, LayerPosition(/*above*/null, /*below*/null, /*at*/zIndex))
在此示例中,我们不使用
above
和 below
参数,将图层直接发送到 zIndex
值指定的位置。