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

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

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


person Steven    schedule 17.04.2011    source источник
comment
Используете ли вы какую-либо базу данных для хранения координат?   -  person Argiropoulos Stavros    schedule 18.04.2011
comment
Ага. Единственное решение, которое я вижу, - это контролировать каждую геолокацию, и если две должны закрыться, немного переместить одну.   -  person Steven    schedule 19.04.2011
comment
Да. В похожей проблеме я сделал именно это. Перед вставкой места в базу данных я проверил область вокруг, существовало ли уже место, и если оно существовало достаточно близко, я немного переместил их.   -  person Argiropoulos Stavros    schedule 19.04.2011
comment
У вас случайно не остался этот код? :)   -  person Steven    schedule 19.04.2011
comment
Вот почему я спросил вас, какие базы данных вы используете, потому что я использовал postgis и использую функции, специфичные для этой базы данных.   -  person Argiropoulos Stavros    schedule 19.04.2011


Ответы (5)


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

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

ОБНОВЛЕНИЕ:

Теперь Google поддерживает кластеризацию маркеров через собственную библиотеку: https://developers.google.com/maps/documentation/javascript/marker-clustering

person herostwist    schedule 17.04.2011
comment
Я посмотрел на это, и это не решит мою проблему. Он группирует маркеры только при уменьшении масштаба. Как только вы увеличите масштаб, маркеры будут видны и сложены друг над другом. - person Steven; 18.04.2011
comment
Гиперссылка устарела. Хорошо, что вы упомянули название функции, кластеризация маркеров. - person ChrisW; 18.04.2017
comment
Спасибо @ChrisW, я обновил ответ новой ссылкой. - person herostwist; 18.04.2017

Вам это пригодится? Оно называется "Spiderfier":

http://blog.mackerron.com/2011/06/22/overlapping-marker-spiderfier/ https://github.com/jawj/OverlappingMarkerSpiderfier

person almack    schedule 14.02.2013

Это может помочь использовать маркеры меньшего размера. Когда у меня возникла эта проблема, я изменил размер изображений маркеров с 20x34 пикселей на 20x20 пикселей.

person Carolyn    schedule 18.04.2011
comment
Я проверил это, и это не помогает. Расположение остается прежним, а значки имеют тот же размер, поэтому они будут скрыты друг под другом. - person Steven; 19.04.2011

Итак, вы можете использовать пространственные расширения mysql и MBRContains(RectangleAroundYourPoint,GeometryColumnOfYourTable)

-если, конечно, в вашей таблице есть столбец геометрии, что легко (при создании вы выбираете ie point в качестве типа столбца, а при выполнении вставки вы должны сделать это с помощью GeomFromText)-

чтобы проверить, существует ли другое место в этом прямоугольнике, и если оно перемещается в новое место, пока mbrcontains не вернет false или что-то в этом роде.

Надеюсь, поможет

person Argiropoulos Stavros    schedule 19.04.2011

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

person aldebaran    schedule 12.12.2012