我在Map项目与swift工作.我创建了一个数据集,tileset和样式的工作室和它的工作完美的罚款现在.我需要添加一些过滤器在Map上,所以我创建2层的交流和直流.但我不能改变层按钮.我试过这个.
func showACStationLayer(){ guard let style =mapView.styleelse { return }
// Hide DC Station layer
if let dcStationLayer = style.layer(withIdentifier: dcStationLayerIdentifier) {
dcStationLayer.isVisible = false
}
// Show AC Station layer
if let acStationLayer = style.layer(withIdentifier: acStationLayerIdentifier) {
acStationLayer.isVisible = true
} else {
let acStationSource = VectorSource(identifier: "acStationSource", configuration: ["url": "your-source-url"])
let acStationLayer = FillLayer(identifier: acStationLayerIdentifier, source: acStationSource)
acStationLayer.fillColor = .red
style.addLayer(acStationLayer)
}
}
但是有一些问题。idk我能解释一下我的问题吗?
或者我如何用按钮过滤我的图层?非常感谢x1c 0d1x
1条答案
按热度按时间ej83mcc01#
你需要调用
mapView.mapboxMap.style.updateLayer(withId:type:update:)
来更新图层属性。直接赋值是没有效果的。看看官方的示例代码ShowHideLayerExample
。要过滤POI源数据,必须设置
Layer.filter
表达式。下面是通过class
属性过滤数据的示例:我建议你先在Mapbox Studio中测试表达式。在那里你也可以了解存在哪些类型和类的POI。例如,为了只显示食物POI,有一个
food_and_drink
类。