2013-04-08 145 views
1

我有以下功能添加一个标记,但我想通过单击地图添加多个标记。我已经谷歌搜索,但我无法得到任何直接的答案,我可以如何解决这个问题。使用Google Maps API v3添加多个标记

function placeMarker(location) { 
    if(marker) { 
     marker.setPosition(location); 
    } else { 
     marker = new google.maps.Marker({ 
      position: location, 
      map: gm_map, 
      draggable: true 
     }); 
    } 
} 

我知道我需要使用Array()但我不知道具体如何。我如何解决我的问题?

DEMO:已删除,因为问题已解决。

回答

2

你需要使用placeMarker功能的变量之外?您的功能不会删除标记,而是检查标记变量是否存在,并使用函数移动标记。如果您想要存在多个标记,则需要删除该行。

function placeMarker(location) { 
    //marker variable will only exist inside this function 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: gm_map, 
     draggable: true 
    });   
} 

下面是一个例子:http://jsfiddle.net/bryan_weaver/aEyfW/

+0

有时最难的问题是最简单的--.-非常感谢! :d – Erik 2013-04-08 12:57:47

1

好的,你需要在地图上为'click'事件设置一个事件监听器。这需要将当前点击的位置传递给placeMarker函数。试试这个

google.maps.event.addListener(gm_map, 'click', function(event) { 
     placeMarker(event.latLng); 
}); 

(在你初始化地图相同的地方添加此事件侦听器)并修改placeMarker功能,因此不是你每次点击更新一个全局变量标志,创建的每个新的标记时间:

function placeMarker(location) { 
    var marker = new google.maps.Marker({ 
      position: location, 
      map: gm_map, 
      draggable: true 
     }); 
} 
+0

哦drats!我忘了提一个重要的细节:(我真的很抱歉,我想用API – Erik 2013-04-08 11:35:01

+0

中的点击功能添加多个标记感谢您的编辑,但只设置了一个标记,如果再次点击地图,旧标记会删除并设置在新的位置上,请点击我的编辑中的链接查看我的意思(当问题解决后,我将删除链接) – Erik 2013-04-08 12:33:22

+1

好的,摆脱全球化'marker',每次重新创建它(尽管你可能会得到很多标记) – duncan 2013-04-08 12:54:04

相关问题