Google Maps Api - 点击鼠标即可删除标记

时间:2011-09-21 17:28:37

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

我在点击鼠标时删除标记时出现问题。好吧,事情并不像看起来那么简单。

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。这就是为什么我确定我需要使用“标记”。

1 个答案:

答案 0 :(得分:1)

在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/