我在点击鼠标删除标记时遇到了问题。好吧,事情并不像看起来那么简单。
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
。这就是为什么我确定我需要使用“标记”。
最佳答案
在您的 for 循环中,您没有引用数组中的标记。
试试这个:
function usun(){
for (var i=0; i < markersArray.length; i++){
google.maps.event.addListener(markersArray[i], 'click', function() {
this.setMap(null);
});
}
关于google-maps - Google Maps Api - 使用鼠标点击删除标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504017/