美文网首页
百度地图maker过多,导致卡顿的优化

百度地图maker过多,导致卡顿的优化

作者: Pino | 来源:发表于2019-02-25 16:38 被阅读0次

原文:https://blog.csdn.net/yzyssg1/article/details/73130679
百度地图的API虽然说覆盖物多了可以用聚合,但聚合使用下来,性能并不好
目前解决方案是,获取地图的左下角和右上角的经纬度,然后根据此经纬度范围,到数据库中搜索,把该区域内的覆盖物取出标注到地图上。
生成地图时绑定事件,在移动和缩放时触发:

Js代码  
 map.addEventListener("moveend", queryInRect);  
//map.addEventListener("moveend", funMoveend);  
          
map.addEventListener("zoomend", queryInRect);  
Js代码  
function queryInRect (event) {  
    //alert(event.type + '==' + event.target);  
      
    var cp = map.getBounds(); // 返回map可视区域,以地理坐标表示  
    var sw = cp.getSouthWest(); // 返回矩形区域的西南角  
    var ne = cp.getNorthEast(); // 返回矩形区域的东北角  
  
    zoom = map.getZoom();  
  
    if (zoom < defaultShowLampZoom) {  
        // 放大级数小于17后,清除所有覆盖物,但百度覆盖物不能删除  
        // 以后做成清除非网关控制器 TODO  
        var markers = getCurrentMarkers();  
        for (var i=0; i<markers.length; i++) {  
            map.removeOverlay(markers[i]);  
        }  
        return;  
    }  
      
    //如果放大到17级别,则取屏幕范围内的标注  
    var param = {  
        swlng : sw.lng,  
        swlat : sw.lat,  
        nelng : ne.lng,  
        nelat : ne.lat  
    };  
    $.ajax( {  
        type : "POST",  
        url : "queryInRect.action",  
        data : param,  
        dataType : "json",  
        success : function(jsonData) {  
            // 把数据加载到地图上去。  
            if (jsonData.rtnMsg) {  
                alert(jsonData.rtnMsg);  
                //window.location.href = "login.html";  
                return;  
            }  
            if (jsonData.controllerList) {  
                // 添加前清空地图上标记物 TODO,应该是有,则不更新,而不是现在全部清空  
                // 但不清空百度地图标记物  
                var markers = getCurrentMarkers();  
                for (var i=0; i<markers.length; i++) {  
                    map.removeOverlay(markers[i]);  
                }  
                  
                $.each(jsonData.controllerList, function(i, controller) {  
                    var point = new BMap.Point(controller.longitude, controller.latitude);  
                    addMarker(point, controller, markers);  
                      
                    // 插入或更新数据采集的taffyDb  
                    insertOrUpdateDataCollection(controller);  
                    // 插入或更新故障信息的taffyDb  
                    insertOrUpdateAlarm(controller);  
                      
                });  
                  
                //如果是树上右击定位而来,0.8秒后设置灯跳跃  
                if (find) {  
                    setTimeout(jumpIcon, 800);  
                }  
            }  
        },  
        error : function(XMLHttpRequest, textStatus, errorThrown) {  
            //if (XMLHttpRequest.status == 12029 && textStatus == "error") {  
            //alert("WEB服务器未启动或已宕机,请联系管理员。");  
            //}  
            alert('服务器异常');  
        }  
    });  
}  

相关文章

  • 百度地图maker过多,导致卡顿的优化

    原文:https://blog.csdn.net/yzyssg1/article/details/73130679...

  • 性能优化

    性能优化 - 因为手机CPU和内存受到限制,过多使用内存会可能会导致内存溢出、过度使用CPU可能会导致手机卡顿,从...

  • android优化

    1. 绘制优化 卡顿原因:16ms需要绘制一帧,如果主线程操作过多,会导致vsync到来时数据没有准备号,导致丢帧...

  • 卡顿优化

    卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检测 耗电优化

  • 21-性能优化

    一、CPU和GPU 二、卡顿产生的原因和优化 卡顿优化-CPU 卡顿优化-GPU 卡顿监测 监控卡顿的demo:推...

  • 如何做百度地图推广

    2016年新启程,继续开启全新百度地图优化精准推广。什么是百度地图推广?百度地图优化是指将地图信息提升到百度地图的...

  • Android性能优化总结

    性能优化: 1. 卡顿优化 绘制问题布局复杂导致 -》 使用hierarchy viewer分析。减少嵌套层级,使...

  • iOS 性能优化

    iOS的性能优化主要可提现在以前的几个方面:卡顿优化、耗电优化、启动优化、安装包的瘦身。 1、卡顿优化 在了解卡顿...

  • 性能优化

    面试题 CPU和GPU 屏幕成像原理 卡顿产生的原因 卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检...

  • 百度地图放置多个点位(可以1000以上)

    作为在百度地图基础上开发的程序员来说 ,如果在地图上放置大量点位,则会出现界面卡顿甚至卡死的现象,选择百度地图自带...

网友评论

      本文标题:百度地图maker过多,导致卡顿的优化

      本文链接:https://www.haomeiwen.com/subject/fnpgyqtx.html