gpt4 book ai didi

javascript - 使用 JavaScript 再次单击按钮删除 Google map 标记

转载 作者:行者123 更新时间:2023-11-30 12:49:53 25 4
gpt4 key购买 nike

我使用地理编码允许用户导航到特定位置,然后将特定半径内的标记添加到该导航点。如果用户再次点击按钮并想导航到另一个地方,它应该删除第一个请求的所有标记。不得不说导航点用蓝色marker标示,其他用红色marker标示。我使用这段代码来做到这一点:

// global
var previousTarget = 0;
var markers = new Array(); // All my markers are stored here
// end global

geocoder.geocode(
{'address': address},
function(results, status){
if(status == google.maps.GeocoderStatus.OK){
map.setCenter(results[0].geometry.location);
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: 'http://maps.google.com/mapfiles/ms/micons/blue.png'
});

var marker, i;
var splitted = locations.splitted(",");

for(var i = 0; i < splitted.length; i++){
geocoder.geocode(
{'address': splitted[i]},
function(results, status){
if(results != null){
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});

markers.push(marker);
google.maps.event.addListener(marker, 'click', (function(marker, i){
return function() {
$.ajax({
url: 'myfile.php',
type: 'POST',
data: {addrData: jqXHR.responseText},
success: function(datas, textStatus, jqXHR){
for(var l = 0; l < markers.length; l++){
if(marker == markers[l]){
infowindow.setContent('test');
infowindow.open(map, marker);
}
}
},

error: function(jqXHR, textStatus, errorThrown){
alert("Error");
}
});
}
})(marker, i));
}
}
);

if(previousTarget > 1){ // Here is the function to click the button twice
markers.setMap(null);
}
}
}
}
);

如果我这样做,则通过按两次按钮在控制台中出现错误:

Uncaught TypeError: Object [object Array] 没有方法 'setMap'

如果我将 markers 更改为 marker,它只会删除蓝色标记。有人可以提示我哪里出错了吗?

最佳答案

您需要遍历标记数组并删除每个标记。

for (var i=0; i<markers.length; i++) {

markers[i].setMap(null);
}

关于javascript - 使用 JavaScript 再次单击按钮删除 Google map 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com