首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地图数据优化

地图数据优化
EN

Stack Overflow用户
提问于 2016-04-14 23:23:20
回答 2查看 88关注 0票数 0

我有大量的标记,我想显示基于用户的观点。我正在寻找最有效的方式,我可以迅速更新我的地图,当用户改变一个观点。换句话说,只显示这些落入边界的标记(lg,ln)。

目前,我的解决办法如下:

  1. 在页面加载时,从服务器上提取关于所有位置的所有数据,并将其存储在数组中。
  2. 更新地图
  3. 每次用户拖动地图时,移除旧的标记并放置新的属于绑定的标记。

当前的解决方案工作缓慢且效率低下,因为需要删除O(N*M)N旧标记和需要放置在地图上的M新标记刷新映射的复杂性。

我想知道是否有人知道如何使它比这个更快?

仅检测需要更新的标记(删除/添加)如何?

我通常在寻找任何优化建议--这可能是算法改进、技术或体系结构(后端处理?)。

当前代码:

代码语言:javascript
复制
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;
};
EN

回答 2

Stack Overflow用户

发布于 2016-04-15 07:30:29

您可以尝试使用谷歌地图标记集群。它在低缩放级别隐藏标记,并在较高的缩放级别上显示它们,并允许添加大量标记。

票数 1
EN

Stack Overflow用户

发布于 2016-04-15 09:29:48

这是一篇很好的文章

四月

请看一看

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36635731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档