2013-05-03 5 views
2

Я рассмотрел все существующие вопросы по этой теме, и многие говорят, что нет способа изменить z-порядок маркеров на Google Maps (Android API v2), мне было интересно, как Google Maps решает сам заказ.Как Google Maps Android API v2 определяет порядок совпадающих маркеров?

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

Мое требование не изменять порядок, только предскажите его, чтобы я мог добавить фрагмент в информационное окно, например. «1 из 2 ...».

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

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

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

+0

Я предлагаю вставить этот запрос функции, чтобы добавить элемент управления z-order для маркеров в трекер gmaps-api-issue - https://code.google.com/p/gmaps-api-issues/issues/detail? id = 4688 –

ответ

2

Если вы имеете в виду, что два маркера имеют одинаковое положение LatLng, тогда это может быть случайным, как вы сказали. Если они очень, очень близки друг к другу, то из моего наблюдения видно, что видимый маркер - это тот, у которого больше значение y позиции экрана. Даже если это значение является субпикселем.

В любом случае вы должны избегать наличия маркеров в одном положении, и я могу предложить два решения для кластеризации: Android Maps Extensions и Clusterkraf.

+0

Спасибо за ваш ответ MaciejGórski. Это были события, происходящие в одном и том же месте, и поэтому имели тот же LatLng. Поэтому я считаю, что ваше первое предложение - правильный ответ на вопрос. В конце концов, я сделал так, что для каждого LatLng был всего один маркер, а затем создал мою собственную структуру данных для хранения отдельных данных для каждого события. Затем создается расширение InfoWindowAdapter и overrode getInfoContents(), чтобы поочередно отображать данные, связанные с каждым событием. –

Смежные вопросы