我在点击鼠标时删除标记时出现问题。好吧,事情并不像看起来那么简单。
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
。这就是为什么我确定我需要使用“标记”。
答案 0 :(得分:1)
在for循环中,您不是指数组中的标记。
试试这个:
function usun(){
for (var i=0; i < markersArray.length; i++){
google.maps.event.addListener(markersArray[i], 'click', function() {
this.setMap(null);
});
}