2

Я должен показать набор маркеров на карте, чтобы указать близлежащие достопримечательности. Эти маркеры откроют общедоступные чаты, щелкнув мышью, и поэтому я думаю, что пользователи должны увидеть краткую информацию о каждом маркере перед тем, как войти в эту комнату, без необходимости нажимать на маркер. Однако, если я изменить маркер иконки в этом смысле, некоторые маркеры могут столкнуться, как вы можете увидеть ниже:Как устранить встречные маркеры в Картах Google

enter image description here

То, что я хочу сделать, это показывает как можно больше маркеров без столкновений и заменить иконку из этих сталкивающихся из них с очень маленьким маркером, как точка (и никакой информации об адресе):

enter image description here

я достиг, чтобы получить этот результат выполнения алгоритма ось х развертки для обнаружения столкновений, но к сожалению, если маркер перестает сталкиваться после того, как пользователь прокручивает карту o r он существует с экрана или другие маркеры входят в экраны и начинают сталкиваться с другими маркерами, или пользователь прокручивает до совершенно новой области, этот алгоритм должен выполняться снова и снова на каждом шагу. Чтобы устранить большинство встречных маркеров, я использую кластеры маркеров-utils, но для решения этой проблемы мне нужна более кропотливая методология. Я считаю, что реализовать quadtree, но я не мог быть уверен, что это лучший способ или нет. Любой совет?

Пример:

enter image description here

ответ

0

Google Maps для Android Marker кластеризация Utility от https://developers.google.com/maps/documentation/android-api/utility/marker-clustering это делает.

+0

Я упомянул об этом в вопросе. Я не хочу видеть перекрытие маркеров именно так: https://tctechcrunch2011.files.wordpress.com/2015/02/citymaps.jpg?w=687 Кластеризация маркеров не может сделать то же самое. Посмотрите первое изображение в указанной вами ссылке. Хотя есть несколько хороших кластеров, есть также перекрывающиеся маркеры. –

+0

Извините, я немного ускорился. Тем не менее, я бы подумал, что вы можете просто изменить код кластеризации? (это открытый источник на github) ... – SteelBytes

+0

На самом деле одним из лучших способов сделать это является установление минимального размера кластера как одного, а затем определение многоэлементных кластеров в виде точек. –

1

ИМХО, лучший способ может сочетаться уровень масштабирования, определение четырехъядерных деревьев и столкновений. Таким образом, в этом случае

Здесь квадратное дерево будет использоваться для уменьшения размера элементов (маркеров) для выполнения алгоритма обнаружения столкновений. Потому что вы должны интересоваться только маркерами, а не целыми маркерами отдельно.

Если вы обнаружили сталкиваясь деталью уровня масштабирования (не только для видимой области/оценки, как вы делали), вы не будете сталкиваться с проблемами, связанные ниже

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

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

  • Нет связанных вопросов^_^