3

我在单击鼠标时删除标记时遇到问题。嗯,事情并不像看起来那么简单。

function addPoint(event) {
path.insertAt(path.length, event.latLng);

var marker = new google.maps.Marker({
  position: event.latLng,
  map: map
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
  marker.setMap(null);
  markers.splice(i, 1);
  }
);

如果我使用该代码,在创建标记时立即添加侦听器,删除它会很容易,因为我指的是marker.setMap(null);. 但在我的情况下,我希望创建它们,然后我想将事件侦听器添加到它们使用

function usun(){
for (var i=0; i<markersArray.length; i++){
    google.maps.event.addListener(marker, 'click', function() {
        alert('lol');
    });
}

我正在推动每个标记markersArray,让我现在可以向每个标记添加事件,但是我怎样才能删除它?当我marker.setMap(null);代替警报时,它说标记未定义,我不知道如何引用我刚刚单击的标记:S 也不能将标记用作全局变量,因为我收到Uncaught TypeError: Cannot read property '__e3_' of undefined错误消息。

编辑:如果我尝试使用

function usun(){
for (var i=0; i<markersArray.length; i++){
    google.maps.event.addListener(markersArray[i], 'click', function() {
        markersArray[i].setMap(null);
    });
}

我得到错误Uncaught TypeError: Cannot call method 'setMap' of undefined。这就是为什么我确定我需要使用“标记”。

4

1 回答 1

2

在您的 for 循环中,您不是指数组中的标记。

试试这个:

function usun(){
for (var i=0; i < markersArray.length; i++){

    google.maps.event.addListener(markersArray[i], 'click', function() {
        this.setMap(null);
    });

}

工作示例:http: //jsfiddle.net/52nJc/1/

于 2011-09-21T17:53:37.783 回答