Javascript 地图数据的优化
我有大量的标记要基于用户视点显示。我正在寻找最有效的方法,当用户更改视点时,我可以快速更新我的地图。换言之,只显示这些属于边界(lg、ln)的标记 目前我的解决方案如下:Javascript 地图数据的优化,javascript,algorithm,google-maps,optimization,google-maps-api-3,Javascript,Algorithm,Google Maps,Optimization,Google Maps Api 3,我有大量的标记要基于用户视点显示。我正在寻找最有效的方法,当用户更改视点时,我可以快速更新我的地图。换言之,只显示这些属于边界(lg、ln)的标记 目前我的解决方案如下: 在页面加载时,从服务器中提取有关所有位置的所有数据并将其存储在数组中 更新地图 每次用户拖动地图时,删除旧的标记并放置新的标记,这些标记属于绑定 当前的解决方案工作缓慢且效率低下,刷新地图的复杂性增加了O(N*M)其中N需要删除的旧标记和M需要放置在地图上的新标记 我想知道是否有人知道如何使它比这更快 只检测需要更新(删除/添
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;
};
var places=function(){}//某个函数在页面加载时占用了很多位置
函数更新位置(位置){
google.maps.Map.prototype.clearMarkers();
if(places!=null){
对于(变量i=0;i
您可以尝试使用。它以较低的缩放级别隐藏标记,以较高的缩放级别显示标记,并允许添加大量标记 您可以尝试使用。它以较低的缩放级别隐藏标记,以较高的缩放级别显示标记,并允许添加大量标记 这是一篇关于这方面的好文章
请看一下这是一篇关于这方面的好文章 请看一看