我正在调用 API 并在几秒钟的间隔后绘制新标记。新的标记被绘制出来,但旧的标记仍然存在。我想在绘制新标记时清除旧标记。这是我的代码。
var myMarkers = [];
var i;
var marker = new google.maps.Marker({
position: new google.maps.LatLng(12.967086,77.746564),
map: map,
});
setInterval(function(){
$.post(contextPath+"/api/getlocations", {} , function(data){
var response = data;
var locations = response.locations;
var marker, i;
for (var i = myMarkers.length; i > 0; i--) {
myMarkers[i].setMap(null);
}
myMarkers = [];
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.open(map, marker);
}
})(marker, i));
myMarkers.push(marker);
}
});
}, 5000);
* map 已初始化。
任何帮助将不胜感激。谢谢
最佳答案
在窗口级别声明 myMarkers 来管理标记集合
var myMarkers = [];
在创建标记之前清除之前的标记
for (i = 0; i < myMarkers.length; i++) {
myMarkers.[i].setMap(null);
}
myMarkers = [];
..
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
//在您的标记集合中添加标记
myMarkers.push(marker);
关于javascript - 绘制新标记时,谷歌地图会清除旧标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44655382/