Маркеры Google Maps скрыты друг за другом

#google-maps #google-maps-markers

#google-карты #google-карты-маркеры

Вопрос:

У меня проблема с маркерами, скрытыми за другими маркерами.
Проблема возникает, когда адреса расположены слишком близко друг к другу. например street 20, street 22 .

Изменение zIndex не поможет, потому что это просто «укладка».
Как я могу «перемещать» маркеры так, чтобы все они были видны на карте?

Комментарии:

1. Используете ли вы какую-либо базу данных для хранения координат?

2. Да. Единственное решение, которое я вижу, — это контролировать каждую геолокацию, и если две должны закрываться, немного передвинуть одну.

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

4. У вас случайно все еще есть этот код? 🙂

5. Вот почему я спросил вас, какую СУБД вы используете, потому что я использовал postgis и использую функции, специфичные для этой БД.

Ответ №1:

Я рекомендую вам изучить кластеризацию маркеров.

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/examples/advanced_example.html

Обновить:

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 и столкнулся с той же проблемой. Я добавляю небольшое случайное число к координатам. Я не хочу так сильно менять расположение маркеров, поэтому в спутниковом режиме проблема все еще существует, но в режиме карты мы можем увеличить масштаб намного больше. Возможно, это не очень хорошее решение, но достаточно хорошее для моего приложения.