Как установить Z-индекс маркера на MapBox Android?

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

Любая идея?


person Neon Warge    schedule 17.02.2017    source источник
comment
ты найдешь решение своей проблемы?   -  person Linh    schedule 03.07.2017
comment
@PhanVanLinh, к сожалению, нет. Невозможно контролировать это, если в противном случае вы не реализуете свой собственный маркер, который возможен с помощью ViewMarkerOptions, который реализует представление, я думаю, там есть другие интересные параметры, такие как привязка, смещение и т. Д. Не могу вспомнить, есть ли у него z-порядок. Не могу поверить, что эти базовые вещи в 2D-рендеринге были упущены, что на самом деле очень досадно. Я не могу перейти на ViewMarkerOptions, карта становится такой медленной, если у вас их сотни. Думаю, лучшим вариантом будет Mapbox Studio, хотя я еще не пробовал.   -  person Neon Warge    schedule 04.07.2017


Ответы (3)


Если кто-то ищет более новый ответ для последних SDK.

Класс Mapbox Marker объявлен устаревшим в более новых версиях Mapbox Android SDK. Вместо этого предлагается плагин Annotations с символом класс для маркеров.

В библиотеке mapbox-android-plugin-annotation-v7 класс Symbol имел метод withZIndex(), который позволял управлять Z-порядком объектов карты.

В mapbox-android-plugin-annotation-v8 этот метод был переименован в withSymbolSortKey() (что было немного сложно найти и обнаружить).

person Jedi-Philosopher    schedule 17.09.2020

Отсюда есть решение https://github.com/mapbox/mapbox-gl-native/pull/5294

Если вы используете MarkerView, вы можете вывести свой маркер на самый верх с помощью MarkerViewManager#select call.

mapboxMap.getMarkerViewManager().select(marker);

Он завершится вызовом View#bringToFront из Android View API, выбранный вид маркеров будет отображаться поверх всех других представлений маркеров.

person alijandro    schedule 28.11.2017

Думаю, это может помочь:

Mapbox Android SDK: переместите маркер на передний план

да. Начиная с Mapbox Android SDK v4.1, выбранный маркер будет отображаться на переднем плане.

Вы можете выбрать маркер с помощью mapboxMap.selectMarker(marker);

person Ivan Yulin    schedule 01.04.2019