1

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

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

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

DEMO : 因为问题已经解决所以删除。

4

2 回答 2

2

您需要在函数marker之外使用变量吗?placeMarker您的函数没有删除标记,它正在检查标记变量是否存在并使用该setPosition函数移动标记。如果您希望存在多个标记,则需要删除该行。

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/

于 2013-04-08T12:53:39.383 回答
1

好的,您需要为地图上的“点击”事件设置一个事件侦听器。这需要将当前单击的位置传递给您的 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
        });
}
于 2013-04-08T11:31:34.620 回答