Android: маркеры добавлены в карту с супер задержкой - PullRequest
2 голосов
/ 08 апреля 2019

Я использую карту в моем приложении для Android. После инициализации поля карты, я хочу добавить маркер, когда на longClick на блоке карты, чтобы по порядку в соответствии с официальным сайтом я добавил маркерную зависимость для 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;
}

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

Первая проблема: location_ic появляются в верхней и левой частях экрана, а через секунду или более значок помещается в нужное место

Другая проблема: Когда я перемещаю карту, эти маркеры остаются фиксированными и не перемещаются вместе с картой, но через секунду или более помещаются в нужное место.

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

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

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

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

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));

для помощи в просмотре этой страницы и этой .

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

0 голосов
/ 08 апреля 2019

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

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

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

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

...