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