我使用地理编码来允许用户导航到特定位置,然后将特定半径的标记添加到此导航点。如果用户再次点击该按钮并想要导航到另一个地方,则应该删除第一个请求的所有标记。我不得不说,导航点标有蓝色标记,其他标记有红色标记。我用这个代码来做到这一点:使用JavaScript再次点击按钮删除Google地图标记
// 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] has no method 'setMap'
如果我只是改变markers
到它删除蓝色标记。有人可以给我一个提示,我犯了一个错误吗?
更多信息:https://developers.google.com/maps/documentation/javascript/examples/marker-remove – Swires