我有大量的标记,我想显示基于用户的观点。我正在寻找最有效的方式,我可以迅速更新我的地图,当用户改变一个观点。换句话说,只显示这些落入边界的标记(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;
};https://stackoverflow.com/questions/36635731
复制相似问题