使用 MapBox 添加和显示本地存储的 GeoJSON 文件中的数据

Adding and displaying data from a locally stored GeoJSON file using MapBox

我正在尝试从已添加到 "asset" 文件夹的 GeoJSON 文件向地图添加标记。

我已尝试遵循 the documentation 但是无法获得预期的结果,因为在 运行 应用程序时无法找到标记。

我的尝试:

public void onMapReady(@NonNull final MapboxMap mapboxMap) {
    this.mapboxMap = mapboxMap;

    mapboxMap.setStyle(Style.MAPBOX_STREETS,
            new Style.OnStyleLoaded() {
                @Override
                public void onStyleLoaded(@NonNull Style style) {
                    enableLocationComponent(style);
                    GeoJsonSource source = null;
                    try {
                        source = new GeoJsonSource("geojson-source", new URI("asset://markerdata.geojson"));
                    } catch (URISyntaxException e) {
                        e.printStackTrace();
                    }

                    style.addSource(source);

                    Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.marker);
                    style.addImage("marker", icon);


                    SymbolLayer symbolLayer = new SymbolLayer("layer-id", "source-id"); // ?
                    symbolLayer.setProperties(PropertyFactory.iconImage("marker"));

                    style.addLayer(symbolLayer);

                }
            });

}

我注意到 SymbolLayer 需要 layer-idsource-id 但是不明白它们是什么。

如果您将 GeoJsonSource id 作为 SymbolLayer 源 id,应该会出现标记:

SymbolLayer symbolLayer = new SymbolLayer("layer-id", "geojson-source");

层id是层的标识符,源id是要显示的数据源的id,在你的例子中是"geojson-source"。