我想从谷歌地图中删除所有旧标记并添加新标记,但setMap(null)不起作用,它添加新标记而不删除旧标记。请查看我的代码
var markers = data['map'];
if (marker != null) {
marker.setMap(null);
}
marker.setMap(null);
for (var i = 0; i < markers.length; i++) {
alert(1);
var data = markers[i];
var infoWindow = new google.maps.InfoWindow();
var img1 = data.imageUrl != '' ? '<img src= <?php echo $baseUrl; ?>/uploads/property/thumb/' + data.imageUrl + '>' : "";
var bed1 = data.beds != '' ? data.beds + ' beds' : "";
var bath1 = data.bath != '' ? data.bath + ' bath' : "";
var squarefeet1 = data.areaSqaureFeet != '' ? data.areaSqaureFeet + ' squarefeet' : "";
var contentString = '<div id="content">';
contentString += img1+ '<p>' + data.propertyAddress + ' </p><p> ' + bed1 + ' </p><p>' + bath1 + ' </p><p>' + squarefeet1 + ' </p>';
contentString += '</div>';
var myLatlng = new google.maps.LatLng(data.lat, data.lng);
marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: contentString
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(this.title);
infowindow.open(map, this);
});
}
}
答案 0 :(得分:1)
我看不到你在哪里定义了“标记”变量。 但是,一般来说,你应该创建一个标记 - &gt;将它推入一个全局定义的数组(或只是一个你可以访问的数组),所以你有一个引用它。然后,您可以只运行标记数组并将其设置为null。所以你可以这样做:
var markers = []; //Global Marker array to keep references
var marker = new google.maps.Marker({
position: {lat: lat, lng: lng},
icon: icon,
map: map
});
markers.push(marker);
这将使您的标记可以访问。如果要将它们设置为null 你可以写一个像这样的函数:
removeMarker: function () {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
},
希望有所帮助。