Добавление и отображение данных из локально сохраненного файла Geo JSON с помощью MapBox - PullRequest
7 голосов
/ 30 января 2020

Я пытаюсь добавить маркеры на карту из файла Geo JSON, который был добавлен в папку "asset".

Я пытался следовать документации однако не удалось получить ожидаемый результат, поскольку при запуске приложения маркеры не найдены.

Моя попытка:

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-id и source-id, однако не понимает, что это такое.

1 Ответ

7 голосов
/ 02 февраля 2020

Маркеры должны появиться, если вы поставите идентификатор GeoJsonSource в качестве идентификатора источника SymbolLayer:

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

Идентификатор слоя - это идентификатор слоя, идентификатор источника - это идентификатор источник данных для отображения, в вашем случае это "geo json -source".

...