`

百度地图上的标注物太多导致界面卡顿的解决办法

 
阅读更多

百度地图的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('服务器异常');
		}
	});
}

 

 

分享到:
评论

相关推荐

    BaiduMap_IOSSDK_v6.1.0_Sample.zip

    1. **性能优化**:合理控制覆盖物数量,避免过多导致地图卡顿。 2. **用户体验**:适时更新地图和定位信息,确保流畅的交互体验。 3. **错误处理**:对API调用可能产生的错误进行妥善处理,提高应用稳定性。 通过...

    高德地图组件与Android与JavaScript的交互

    例如,合理使用缓存,避免加载大量数据导致应用卡顿,以及适时释放不再使用的资源。 8. **安全性与权限** - 虽然使用JavaScript Key简化了集成过程,但必须确保Key的安全,防止被恶意使用。同时,由于可能涉及到...

    pb 11 与 Google Map 整合技术

    8. **性能优化**:考虑到PB 11可能需要处理大量数据,如地理位置信息,我们需要考虑性能优化,例如使用异步加载、分页加载等技术,避免一次性加载过多数据导致页面卡顿。 9. **安全与授权**:在使用Google Maps API...

    懒人许cad加速工具套餐V4.0

    3. **缓存管理**:对于大型图纸的处理,套餐中的工具可以有效地管理和利用缓存,避免因频繁读取硬盘导致的卡顿现象,使浏览和编辑大图更为顺畅。 4. **插件优化**:CAD用户常常会安装各种插件来扩展功能,但过多的...

    强大截图软件

    由于描述中提到“占内存CPU非常小”,这意味着该软件在运行时对系统资源的占用极低,不会影响电脑的正常运行速度,对于那些希望避免软件运行导致系统卡顿的用户来说,这是一个极具吸引力的特点。 描述中还提到...

    软件测试BUG参考标准

    ### 软件测试BUG参考标准 ...通过上述内容的详细介绍,我们可以更好地理解软件测试中BUG管理的重要性及其具体实施方法。这有助于提升软件产品的质量,减少后期维护成本,从而满足用户的期望并增强产品的市场竞争力。

    仿照QQ截图功能代码.rar

    在实现过程中,需要注意性能优化,因为屏幕捕获可能会频繁进行,过多的计算可能导致程序卡顿。此外,考虑到多显示器环境,可能需要处理屏幕的边界和跨屏选择情况。 最后,对于压缩包中的“仿照QQ截图功能代码”,...

    一款好用的pdf浏览器-windows

    对于那些经常需要处理PDF文档,尤其是大型、包含大量图像或复杂图形的PDF文件的用户来说,SumatraPDF是一个理想的选择,因为它能够快速打开和流畅浏览这些大文件,不会像某些重量级的PDF阅读器那样导致电脑卡顿。...

    界面设计规范

    5) **简洁美观**:界面应简洁而不失美感,避免过多的装饰元素,使得用户能快速聚焦于主要任务。同时,色彩搭配应和谐,字体清晰易读。 **界面设计的规则和细节**: - **UI字体与色彩**:保持字体和色彩的一致性,...

    Windows-8-App:带有地理标记的照片库

    - 对于地图上的标记,考虑动态加载和分组,避免一次性加载过多图钉导致地图卡顿。 在“Windows-8-App-master”这个项目中,开发者可能已经实现了上述功能,并通过示例代码展示了如何将这些知识点融合到实际应用中...

    最好用的高清截图软件

    在截图后,你可以直接在软件内进行标注、裁剪、添加箭头、文字注释等操作,使截图更具说明性。这对于解决问题或解释步骤时尤其有用。 视频录制功能是FSCapture的另一大亮点。它能轻松录制屏幕活动,包括音频,非常...

    克克PDF阅读器

    克克PDF阅读器的设计理念是让用户能够快速上手,因此它的界面设计简洁直观,没有过多复杂的设置选项。打开软件,用户可以直接拖拽或通过菜单导入PDF文件进行阅读。此外,软件提供了常见的阅读模式,如单页、双页、...

    bookstore_finder

    7. **性能优化**:由于可能会涉及到大量的地理位置数据,应用可能采用分页加载、懒加载等技术来提高性能,避免一次性加载过多数据导致页面卡顿。 8. **安全与隐私**:应用在处理用户位置信息时,需遵循严格的隐私...

    SPX截图软件相当好的截图工具

    简洁明了的界面设计使得用户能够迅速上手,而优化的性能则确保了软件运行的流畅性,即使在处理大量截图时也不会感到卡顿。软件的轻量化使得它在任何类型的计算机上都能快速启动,不会占用过多系统资源。 总的来说,...

    HyCam2录像软件

    9. **多语言支持**:考虑到全球用户的需求,HyCam2提供多语言界面,包括中文,方便不同地区的用户使用。 10. **实时预览**:在录制前,用户可以预览录制区域,确保一切设置都符合预期。 在使用HyCam2时,需要注意...

    oCam 屏幕录制.zip

    这款软件以其简单易用的界面和丰富的录制选项赢得了众多用户的喜爱。本文将深入探讨oCam的核心功能和使用技巧,帮助你更好地掌握这一工具,提升屏幕录制的质量和效率。 首先,oCam的录制范围灵活可调。你可以选择...

    Android_典型UI欣赏_第一季

    - 状态标注提供了额外的上下文信息。 - 可拖动的GridView提升了操作的灵活性。 - **应用场景**: - 任务管理应用的任务列表。 - 文件管理器的文件夹浏览。 - **设计要点**: - 扩展内容的设计需简洁明了。 - ...

    自定义不带文字的LoadingDialog,旋转的菊花图案

    在Android应用开发中,用户界面的交互体验是至关重要的,特别是在数据加载或处理过程中,为了提供良好的用户体验,通常会使用Loading Dialog来提示用户系统正在进行后台操作。本项目着重讲解如何自定义一个不带文字...

Global site tag (gtag.js) - Google Analytics