#google-maps #google-maps-markers
#google-карты #google-карты-маркеры
Вопрос:
У меня проблема с маркерами, скрытыми за другими маркерами.
Проблема возникает, когда адреса расположены слишком близко друг к другу. например street 20, street 22
.
Изменение zIndex
не поможет, потому что это просто «укладка».
Как я могу «перемещать» маркеры так, чтобы все они были видны на карте?
Комментарии:
1. Используете ли вы какую-либо базу данных для хранения координат?
2. Да. Единственное решение, которое я вижу, — это контролировать каждую геолокацию, и если две должны закрываться, немного передвинуть одну.
3. Да. В аналогичной задаче я сделал именно это. Перед вставкой места в базу данных я проверил в области вокруг, существует ли уже место, и если оно существует достаточно близко, я слегка перемещаю их.
4. У вас случайно все еще есть этот код? 🙂
5. Вот почему я спросил вас, какую СУБД вы используете, потому что я использовал postgis и использую функции, специфичные для этой БД.
Ответ №1:
Я рекомендую вам изучить кластеризацию маркеров.
Обновить:
Google Now поддерживает группирование маркеров с помощью встроенной библиотеки:https://developers.google.com/maps/documentation/javascript/marker-clustering
Комментарии:
1. Я посмотрел на это, и это не решит мою проблему. Он группирует маркеры только при уменьшении масштаба. Как только вы увеличите масштаб, маркеры станут видны и будут наложены друг на друга.
2. Гиперссылка устарела. Хорошо, что вы упомянули название функции «кластеризация маркеров».
3. Спасибо @ChrisW, я обновил ответ новой ссылкой.
Ответ №2:
вам это как-нибудь пригодится — это называется «Spiderfier»:
http://blog.mackerron.com/2011/06/22/overlapping-marker-spiderfier/
https://github.com/jawj/OverlappingMarkerSpiderfier
Ответ №3:
Возможно, было бы полезно использовать маркеры меньшего размера. Когда у меня возникла эта проблема, я изменил размер своих изображений маркеров с 20×34 пикселей на 20×20 пикселей.
Комментарии:
1. Я тестировал это, и это не помогает. Местоположение остается тем же, а значки имеют тот же размер, следовательно, они будут скрыты друг под другом.
Ответ №4:
Таким образом, вы можете использовать пространственные расширения mysql и MBRContains (RectangleAroundYourPoint,GeometryColumnOfYourTable)
-если, конечно, в вашей таблице есть столбец геометрии, что просто (при создании вы выбираете, т. е. point в качестве типа столбца, и при выполнении вставки вы должны сделать это с помощью GeomFromText)-
чтобы проверить, существует ли другое место внутри этого прямоугольника, и если оно есть, перемещайте новое место, пока mbrcontains не вернет false или что-то в этом роде.
Надеюсь, это поможет
Ответ №5:
Я использую marker clusterer и столкнулся с той же проблемой. Я добавляю небольшое случайное число к координатам. Я не хочу так сильно менять расположение маркеров, поэтому в спутниковом режиме проблема все еще существует, но в режиме карты мы можем увеличить масштаб намного больше. Возможно, это не очень хорошее решение, но достаточно хорошее для моего приложения.