我想根据用户观点显示大量标记。我正在寻找最有效的方法,当用户更改视点时,我可以快速更新我的地图。换句话说,只显示这些落入边界的标记(lg,ln)。
目前我的解决方案如下:
目前的解决方案有效,但速度慢,效率低,复杂度较高,无法刷新地图O(N*M)
,其中N
旧标记需要删除,M
新标记需要放在地图。
我想知道是否有人知道如何让它比这更快?
如何仅检测需要更新(删除/添加)的标记?
我一般都在寻找任何优化建议 - 可能是算法改进,技术或架构(在后端处理?)。
当前代码:
var places = function(){} // Some function that pulls a lot of places on page load
function updatePlaces(places){
google.maps.Map.prototype.clearMarkers();
if(places != null){
for(var i = 0; i < places.length; i++){
var lat = places[i].lat;
var lng = places[i].lng;
var position = new google.maps.LatLng(lat, lng);
if(map.getBounds().contains(position) && placedMarkers < markerLimitNumber) {
var marker = new MarkerWithLabel({
position: position,
draggable: false,
raiseOnDrag: true,
map: map,
labelContent: '',
labelAnchor: new google.maps.Point(-10, 15),
labelClass: "labels", // the CSS class for the label
labelStyle: {opacity: 1.0},
icon: 'images/markers/grey_circle_small.png'
});
marker.addListener('click', function(){});
markers.push(marker);
placedMarkers = placedMarkers + 1;
}
}
}
}
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i < markers.length; i++){
markers[i].setMap(null);
}
markers = new Array();
placedMarkers = 0;
};
答案 0 :(得分:0)
您可以尝试使用Google Map Marker Clusterer。它以低缩放级别隐藏标记,并以更高的缩放级别显示它们,并允许添加大量标记。
答案 1 :(得分:0)