我在平移或缩放后在谷歌地图上绘制标记
如果视口没有完全改变,而不是移动前出现的标记,并且在它们一次又一次地在它们上面绘制之后仍然应该出现。
我知道在绘制新标记之前我必须从地图中删除所有标记,我知道我应该使用marker.setMap(null);
。
我只是不知道如何以及在哪里适合我的代码。
google.maps.event.addListener(map, 'idle', showMarkers);
function showMarkers(){
// get viewport bounds
var southWestLat = map.getBounds().getSouthWest().lat();
var southWestLng = map.getBounds().getSouthWest().lng();
var northEastLat = map.getBounds().getNorthEast().lat();
var northEastLng = map.getBounds().getNorthEast().lng();
var marker;
$.ajax({
type: "POST",
url: "markers.php",
dataType: "json",
data: ({'southWestLat' : southWestLat , 'southWestLng' : southWestLng , 'northEastLat' : northEastLat , 'northEastLng' : northEastLng}),
success: function(coordinatesMap){
for (var id in coordinatesMap){
if (coordinatesMap.hasOwnProperty(id)){
marker = new google.maps.Marker({
position: new google.maps.LatLng(coordinatesMap[id].lat,coordinatesMap[id].lng),
map: map
});
}
}
}
});
}
答案 0 :(得分:0)
对于性能推理,您不想清除所有标记;只有那些不再在地图上。这可以通过将标记存储在数组或对象中来实现。在“成功”上,您想要使用数组/对象检查标记是否已经在lat lng中。如果是,那么不要添加新的,如果没有,那么添加它。在ajax请求中处理完标记后,删除地图上不再可见的标记。