如何在同一位置显示两个或多个标记?

时间:2012-01-15 11:11:05

标签: google-maps google-maps-api-3

我对GOOGLE MAP API有疑问。如果您有两个以上共享相似地址的数据,那么如何在同一地址上显示Pins Drop?

实施例

  1. 您有以下数据:

    Name=>Ray | Address=>Melon Park, California, USA ; 
    Name=>John | Address=>Melon Park, California, USA ; 
    Name=>Steve | Address=>Melon Park, California, USA
    
  2. 您想在Google地图上显示类似地址的3个Pins Drop。

4 个答案:

答案 0 :(得分:1)

上面链接的帖子有一些很好的建议。你的选择是:

  1. 稍微偏移标记,因此它们不是全部显示在标记上,而是彼此非常接近。只需为每个添加或减去小增量即可。

  2. 为每个位置使用不同的图标。如果您知道在同一位置可能重叠的标记的最大数量(例如4?),您可以制作自己的旋转图标,因此它们可以指向左,右或向上而不是指向“向下”的典型泪滴形状

  3. 处理infowindow / UI中的数据重叠。

答案 1 :(得分:1)

添加小delta会像这样工作(这个脚本是用PHP编写的):

$random_num_lat = .00065 * mt_rand(1, 10); // delta to the lat value added
$random_num_lng = .00065 * mt_rand(1, 10); // delta to the lon value added

$lat=$row['lat']+$random_num_lat;
$lon=$row['lon']+$random_num_lng;

//now in loop it will be three `enter code here`marker display seperate to each other

while ($row = mysql_fetch_array($query)) {
    echo ("addMarker($lat, $lon,'<b>$name</b><br/>$desc1');\n");
}

答案 2 :(得分:0)

我使用&#34;蜘蛛侠&#34; to&#34; spiderfy&#34;。

GoogleMaps v3 Spidifier可用heredemo)。

Leaflet.js还可以加载GoogleMaps v3并拥有一个漂亮的聚类spidifier heredemo)。

答案 3 :(得分:0)

注意:以下是更多的技巧而非解决方案:

编写一种检查数组中重复坐标的算法。

找到重复项后,将一个小值(例如0.000001)添加到找到的坐标。 请注意,值越小,放大越多,可以看到差异。