При добавлении нескольких маркеров на карту Mapbox в android невозможно добавить источник в mapboxMap. - PullRequest
0 голосов
/ 08 марта 2020

после этого урока SymbolLayer Я создал строку geo Json из списка объектов, которые я получил из своей базы данных. Когда мне нужно вызвать

mapboxMap.addSource(source);

, я не могу найти метод addSource для своей карты. Ни аддлайер один. То, что я сделал и сделал, находится внутри моего метода onMapReady, называемого style.addSource и style.addLayer, но он не работает. Вот как это выглядит:

public void onMapReady(@NonNull final MapboxMap mapboxMap) {
    MainActivity.this.mapboxMap = mapboxMap;
    Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_fuel_11, null);
    Bitmap bitmap = BitmapUtils.getBitmapFromDrawable(drawable); 
  //got the image to display
    String geoJsonData = toJson(getDistr()); 
  //got the geoJson String
    FeatureCollection featureCollection = FeatureCollection.fromJson(geoJsonData);
    Source source = new GeoJsonSource("id", featureCollection);
    SymbolLayer symbolLayer = new SymbolLayer("layerId", "id");

    mapboxMap.setStyle(new Style.Builder().fromUri("mapbox://styles/mapbox/navigation-preview-day-v4"),
            new Style.OnStyleLoaded() {
                @Override
                public void onStyleLoaded(@NonNull Style style) {
                    style.addImage("img", bitmap);
                    style.addSource(source);
                    style.addLayer(symbolLayer.withProperties(PropertyFactory.iconImage("img")));
                    enableLocationComponent(style);
                }
            });

Кто-нибудь может сказать, что я делаю неправильно или какой другой подход я должен предпринять, чтобы отобразить список объектов, которые у меня есть в моей БД с широтой и долготой на карте?

1 Ответ

0 голосов
/ 09 марта 2020

См. https://docs.mapbox.com/android/maps/examples/marker-symbol-layer/

Попробуйте переместить следующий код в обратный вызов onStyleLoaded() вместо onMapReady(). Попробуйте запустить его до строки style.addImage("img", bitmap);.

MainActivity.this.mapboxMap = mapboxMap;
    Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_fuel_11, null);
    Bitmap bitmap = BitmapUtils.getBitmapFromDrawable(drawable); 
  //got the image to display
    String geoJsonData = toJson(getDistr()); 
  //got the geoJson String
    FeatureCollection featureCollection = FeatureCollection.fromJson(geoJsonData);
    Source source = new GeoJsonSource("id", featureCollection);
    SymbolLayer symbolLayer = new SymbolLayer("layerId", "id");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...