Я использую поле карты в своем приложении для 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.
Надеюсь, я понятно объяснил, но если вы не понимаете, я загрузил небольшое видео !!!
Мое видео
В настоящее время я тоже работаю с маркерами в mapbox. Но в последних версиях они называются «Символы».
Чтобы использовать их, добавьте в свой проект зависимость mapbox android sdk (учебник от mapbox здесь) и следуйте другому руководству, чтобы использовать слой символов (ссылка здесь).
Если у вас есть все маркеры в виде файла GeoJSON, вы также можете добавить их на пользовательскую карту, которую вы бы стилизовали на веб-сайте mapbox, а затем использовать в своем приложении. ( прочая информация здесь )
Я надеюсь, что это может помочь вам, это моя первая попытка ответить кому-то.
Я думаю символы использовать для объемного маркера. Я хочу просто добавить несколько маркеров с точкой на карте. Но мне было интересно, в чем моя проблема и почему у меня возникают эти проблемы :-( @PottokDev
после нескольких дней гугления я, наконец, решил использовать 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/…
Похоже, видео уже недоступно, пишет, что файл в корзине...