Android 上 Mapbox 的 CannotAddSourceException

CannotAddSourceException with Mapbox on Android

当我尝试将源添加到 Android 上的 Mapbox 地图时出现异常,即使我之前删除了所有具有相同名称的源。

我尝试先删除源然后删除图层或删除图层然后删除源但没有任何效果。

    if (map != null){
        String layerName = floor.getLayerName();

        map.removeLayer(layerName);
        //Remove source and layer if already selected
        map.removeSource(SOURCE); //SOURCE IS A CONST
        map.clear();

        String url = GEOSERVER_URL_NAME;
        RasterSource resource = new RasterSource(SOURCE,new TileSet("tileset",url+layerName));
        map.addSource(resource);
        RasterLayer webMapLayer = new RasterLayer(layerName,SOURCE);
        map.addLayerBelow(webMapLayer, "com.mapbox.annotations.points");
        poisViewModel.refreshPoisByName(building.getId(), floor.getId(), "");
    }

我得到:

com.mapbox.mapboxsdk.style.sources.CannotAddSourceException: Source floor_map_source already exists. floor_map_source is the value of SOURCE.

我发现了问题,实际上,我使用的 layerName 是不同的,这防止了源删除。 在设置新层之前,我必须添加旧层的名称并删除它。

在我的例子中,我只更改了 GeoJsonSource id,但忘记更改图层和图像 id。它解决了我的问题。