我一直在遵循Mapbox提供的本指南来熟悉SymbolLayers以及如何在地图上操作它们的属性。
https://blog.mapbox.com/a-guide-to-the-android-symbollayer-api-5daac7b66f2c
我遇到问题的关键步骤是第 5 步,他们在 MapClick 上更新iconSize
属性。在他们向选定的Feature
添加属性后,指南说调用source.setGeoJson(featureCollection);
以重置图层的源。
我正在处理的项目使用VectorSource
作为SampleLayer
的数据源,而不是像示例那样使用GeoJsonSource
。问题是VectorSource
没有提供类似setGeoJson
的方法,因此在更改属性后我无法重置图层源。
我可以做些什么来解决此问题,而无需更改所有源数据?
for (Feature feature : featureCollection.getFeatures() {
if (feature.getStringProperty("title").equals(selectedFeature.getStringProperty("title"))) {
feature.getProperties().addProperty("selected", true);
}
}
source.setGeoJson(featureCollection);
该示例的完整来源可以在此处找到:https://github.com/mapbox/mapbox-android-demo/blob/286f33d848c9fea48de908b144682081961b986b/MapboxAndroidDemo/src/main/java/com/mapbox/mapboxandroiddemo/labs/SymbolLayerMapillaryActivity.java
对于将来遇到此问题的任何人,这里唯一可能的方法是使用更新的源再次删除并添加图层。然而,这是一个无效的解决方案,所以你最好使用 GeoJson 源。