使用矢量源时单击时更改符号图层属性



我一直在遵循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 源。

最新更新