我在点击鼠标时删除了一个标记时遇到问题。那么,事情并不像看起来那么简单。Google Maps Api - 用鼠标点击删除标记
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
。这就是为什么我确定我需要使用“标记”。
这是一个经典的问题 “在环路闭合”。这是和这里一样的问题:http://stackoverflow.com/questions/8325736/creating-markers-in-loop-infowindow-does-not-open-when-inside-an-click-listene/8326203#8326203 – TMS