Приведенные выше ответы более элегантны, но я нашел быстрый и грязный способ, который на самом деле работает очень хорошо. Вы можете увидеть это в действии на сайте www.buildinglit.com
Все, что я сделал, - это добавил случайное смещение к широте и долготе на мою страницу genxml.php, чтобы она каждый раз возвращала немного разные результаты со смещением каждый раз, когда карта создается с помощью маркеров. Это звучит как взлом, но на самом деле вам нужно всего лишь, чтобы маркеры переместились в случайном направлении, чтобы их можно было нажимать на карте, если они перекрываются. На самом деле он работает очень хорошо, я бы сказал, лучше, чем метод паука, потому что кто хочет справиться с этой сложностью и заставить их прыгать повсюду. Вы просто хотите иметь возможность выбрать маркер. Случайное подталкивание работает идеально.
Вот пример создания итерационного узла оператора while в моем php_genxml.php
while ($row = @mysql_fetch_assoc($result)){ $offset = rand(0,1000)/10000000;
$offset2 = rand(0, 1000)/10000000;
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("name", $row['name']);
$newnode->setAttribute("address", $row['address']);
$newnode->setAttribute("lat", $row['lat'] + $offset);
$newnode->setAttribute("lng", $row['lng'] + $offset2);
$newnode->setAttribute("distance", $row['distance']);
$newnode->setAttribute("type", $row['type']);
$newnode->setAttribute("date", $row['date']);
$newnode->setAttribute("service", $row['service']);
$newnode->setAttribute("cost", $row['cost']);
$newnode->setAttribute("company", $company);
Обратите внимание, что под lat и long есть смещение +. от 2 переменных выше. Мне пришлось разделить случайное число на 0,1000 на 10000000, чтобы получить десятичную дробь, которая была случайным образом достаточно маленькой, чтобы просто перемещать маркеры. Не стесняйтесь поработать с этой переменной, чтобы получить более точную для ваших нужд.