避免在谷歌地图上加载具有相同纬度和经度的标记

时间:2010-12-21 15:58:23

标签: javascript ajax google-maps

我希望通过ajax标记我的地图移动。但是,是否有任何方法可以避免在谷歌地图上加载具有相同纬度和经度的标记?假设一旦加载了某个纬度和经度的标记,当地图移回该位置时,它将不会第二次添加。谢谢。

4 个答案:

答案 0 :(得分:1)

保留一系列标记并在加载新标记之前查看它们,以确保它们尚未加载。添加每个新标记后,将其附加到数组中。

答案 1 :(得分:1)

将标记存储在对象“哈希”中,并将其键入lat-long

因此:

var marker_dict = {}, i=0, l=latLongArray.length, lat, lng;

while ( i < l ) {
    lat = latLongArray[i][0], lng = latLongArray[i][1]
    marker_dict[lat + '-' + lng] = new google.maps.Marker(
                                       new google.maps.LatLng(lat, lng)
                                   );
    i++;
}

然后,当您添加新标记时,只需确保检查该密钥不在您的marker_dict中。

这样,每次移动地图时都不必遍历(可能)整个数组。

答案 2 :(得分:0)

要创建标记,您必须在某处具有lat和long数据。在调用创建标记的方法之前,请确保这组数据不包含重复项。

例如,我有一个lat和long值数组var latLong = [ [1.8, 2.6], [3.4, 1.1], ...];。我可以迭代这个数组并删除重复项。然后将结果数据集传递给我的标记创建程序。

答案 3 :(得分:0)

您可以在视口更改时删除所有标记并检索当前视口的新标记并显示它们。

如果您希望所有标记保留在地图上我不推荐,因为减速,您可以将所有新标记推送到数组并进行某种检查(如果此数组中已存在的标记不推送。)