首页 > 解决方案 > 使用 VectorSource 时单击更改 SymbolLayer 属性

问题描述

我一直在按照 Mapbox 提供的指南来熟悉 SymbolLayers 以及如何在地图上操作它们的属性。

https://blog.mapbox.com/a-guide-to-the-android-symbollayer-api-5daac7b66f2c

我遇到问题的关键步骤是第 5 步,他们更新了iconSizeonMapClick 属性。在他们将属性添加到 selectedFeature之后,指南说调用source.setGeoJson(featureCollection);以重置图层的源。

我正在使用的项目使用 aVectorSource作为 的数据源SampleLayer,而不是GeoJsonSource示例使用的 a。问题是它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

标签: androidmapboxmapbox-android

解决方案


对于将来遇到此问题的任何人,这里唯一可能的方法是使用更新的源再次删除并添加层。然而,这是一个无效的解决方案,因此您最好使用 GeoJson 源代码。


推荐阅读