Android: маркеры добавляются в мапбокс с супер задержкой

Я использую поле карты в своем приложении для Android. После инициализации поля карты я хочу добавить маркер при долгом нажатии на поле карты, поэтому в порядке, соответствующем официальному сайту, я добавил зависимость markerview для приложения gradle:

dependencies {
  implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-markerview-v7:0.2.0'
}

А затем я реализую MapboxMap.OnMapLongClickListener и переопределяю onMapLongClick.

Когда представление карты готово, я включаю enableLocationComponent, создаю markerViewManager и устанавливаю карту long click listener.

 mapView.getMapAsync(mapboxMap -> {
            this.mapboxMap = mapboxMap;
            mapboxMap.setStyle(Style.MAPBOX_STREETS, style -> {
                createCustomAnimationView();
                moveTo(home_longitude, home_latitude, home_zoom);
                enableLocationComponent();
                markerViewManager = new MarkerViewManager(mapView, mapboxMap);
                mapboxMap.addOnMapLongClickListener(this);
                createCustomAnimationView();
            });
        });

Наконец, в переопределенном методе onMapLongClick я создаю изображение и добавляю его в markerViewManager.

@Override
public boolean onMapLongClick(@NonNull LatLng point) {
    ImageView imageView = new ImageView(requireContext());
    imageView.setLayoutParams(new RelativeLayout.LayoutParams(
            (int) Measurement.convertDpToPixel(32, requireContext()),
            (int) Measurement.convertDpToPixel(32, requireContext())));
    imageView.setImageResource(R.drawable.location_ic);
    MarkerView markerView = new MarkerView(new LatLng(point.getLatitude(), point.getLongitude()), imageView);
    markerViewManager.addMarker(markerView);
    return false;
}

Когда я запускаю приложение и долго нажимаю на экран:

First problem: location_ic appear on the top and left of the screen and after a second or more, icon placed in right place

Other problem: When I move map, those markers stay fixed and not moved with map but after a second or more then placed in right place.

Надеюсь, я понятно объяснил, но если вы не понимаете, я загрузил небольшое видео !!!
Мое видео

Похоже, видео уже недоступно, пишет, что файл в корзине...

Mahendra Gunawardena 23.08.2020 14:09
2
1
1 408
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В настоящее время я тоже работаю с маркерами в mapbox. Но в последних версиях они называются «Символы».

Чтобы использовать их, добавьте в свой проект зависимость mapbox android sdk (учебник от mapbox здесь) и следуйте другому руководству, чтобы использовать слой символов (ссылка здесь).

Если у вас есть все маркеры в виде файла GeoJSON, вы также можете добавить их на пользовательскую карту, которую вы бы стилизовали на веб-сайте mapbox, а затем использовать в своем приложении. ( прочая информация здесь )

Я надеюсь, что это может помочь вам, это моя первая попытка ответить кому-то.

Я думаю символы использовать для объемного маркера. Я хочу просто добавить несколько маркеров с точкой на карте. Но мне было интересно, в чем моя проблема и почему у меня возникают эти проблемы :-( @PottokDev

Cyrus the Great 08.04.2019 17:45
Ответ принят как подходящий

после нескольких дней гугления я, наконец, решил использовать SymbolManager, чтобы добавить маркер на карту:

просто добавь :

dependencies {
  implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v7:0.5.0'
}

в приложение gradle, а затем инициализируйте плагин onMapReady, как показано ниже:

symbolManager = new SymbolManager(mapView, mapboxMap,style);
symbolManager.setIconAllowOverlap(true);
symbolManager.setTextAllowOverlap(true);

и используйте:

symbolManager.create(new SymbolOptions()
                .withLatLng(point)
                .withIconImage(IMAGE_MARKER_DEFAULT));

за помощь в поиске эта страница и это.

Я надеюсь, что это может быть полезно.

Привет, можно ли добавлять/удалять маркеры с помощью менеджера символов во время выполнения stackoverflow.com/questions/57991180/…

Steve Kamau 18.09.2019 13:07

Другие вопросы по теме