百度地图上的标注物太多导致界面卡顿的解决办法
百度地图的API虽然说覆盖物多了可以用聚合,但聚合使用下来,性能并不好
目前解决方案是,获取地图的左下角和右上角的经纬度,然后根据此经纬度范围,到数据库中搜索,把该区域内的覆盖物取出标注到地图上。
生成地图时绑定事件,在移动和缩放时触发:
- map.addEventListener("moveend", queryInRect);
- //map.addEventListener("moveend", funMoveend);
- map.addEventListener("zoomend", queryInRect);
- 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('服务器异常');
- }
- });
- }
转载于:https://www.cnblogs.com/yzycoder/p/6824439.html
百度地图上的标注物太多导致界面卡顿的解决办法相关推荐
- vue+cesium cesium数据量太大导致浏览器卡顿解决办法
vue+cesium cesium数据量太大 导致浏览器卡顿 解决办法 解决方案 : 不要把任何的cesium对象 放在data中监听,因为在data中的变量 , vue会劫持数据 , 导致迟缓. 解 ...
- Word 域嵌套太深弹窗,更新域卡顿,解决办法
1.问题描述 用Word编辑几百页或者上千页的文档时,因为资料来源和拷贝的关系,总会遇到各种有问题的文档块,一般更新目录页码或者题注序号时,最快的操作就是CTRL+A,然后F9,但是偶尔会遇到这样的文 ...
- vue+cesium cesium数据量太大 导致浏览器卡顿 解决办法
如题 博主在开发过程中遇到了问题就是 当数据量过大时 浏览器特别卡 情景: 每秒实时渲染数据 效果:当前数据没有渲染完就开始渲染下一秒的数据了 如何将巨大的数据 在一秒内快速渲染到页面上呢? 解决方案 ...
- 怎么在百度地图上标注公司地址
从某种意义上来讲,现在的地图推广是非常重要的,百度地图,就相当于以百度的名义来为自己量身定做一种随时查阅的电子名片.这是非常不错的一种方法,通过这样的方式能够在第一时间快速的完成推广,能够让用户更加轻 ...
- 百度地图上自定义添加一个标注
在百度地图上,自定义添加一个标注,标注可以是自己的图片. 步骤:先确定你要标注的点的坐标–>创建一个添加标注的函数addMarker–>(1)在该函数中创建这个图标,并说明图标的来源(网址 ...
- python百度地图标注自己的店名_百度地图上怎么显示店名 百度地图标注店名方法...
对于很多经营小店的小伙伴来说,能让人一打开百度地图就能看到自己的店名显示在其中便觉得这是一件颇为高兴的事情,但问题是如何在百度地图上怎么显示自己的店名呢?下面小编就为大家带来百度地图标注店名方法,希望 ...
- 如何将小车标注在百度地图上并且设置车头方向
如何将小车标注在百度地图上并且设置车头方向 首先,需要在项目中引入百度地图的API 第二步,将百度地图嵌入到项目中 第三步,将小车标注在地图中 第四步,设置车头的方向 <html lang=&q ...
- 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍...
摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. -------------------------------------------------- ...
- 怎样在百度地图上标注上自己公司的名称使别人能在搜索百度地图的同时在地图上能看见本公司地址?
怎样在百度地图上标注上自己公司的名称使别人能在搜索百度地图的同时在地图上能看见本公司地址? 百度地图 分享到: 专业回答 飞花SEO 团队 光娟娟 2015-04-25 13:00 1.注册 ...
最新文章
- Java小案例——使用双重for循环实现杨辉三角的输出
- BZOJ 4300: 绝世好题( dp )
- boost::iostreams::grep_filter用法的测试程序
- django2.0.6 连接使用redis集群
- 最高201万!华为高薪招应届生!专业是...
- sonarqube怎么分析php项目,SonarQube代码质量分析平台介绍
- 树莓派4B Raspbian-buster 更换源
- javascript java html_JS入门篇(二):在html中如何使用Javascript
- 谷歌浏览器一进百度空间就崩溃的临时解决方法
- CAS在Java类中的应用
- 将字符串中连续的多个空格替换成一个空格
- SQLServer示例数据库AdventureWorks下载地址
- 性能测试总结(performance testing)(二)
- HarmonyOS鸿蒙学习笔记(1)基于eTS的入门应用结构简单梳理
- 账套恢复失败 文件服务器,用友T3恢复账套时提示:备份信息文件无效,恢复失败?...
- STM8S003做无刷电机控制需要配置的选项字节
- Java学习lesson 10
- linux sort排序及取前几条数据
- 井盖智能监测终端——井盖状态监测仪
- 每天一个Linux命令-使用du查看文件大小