关于百度地图点聚合的问题
来源:互联网 发布:excel矩阵相乘 编辑:程序博客网 时间:2024/05/16 13:46
浑浑噩噩的很长时间了,感觉这样下去不是办法,所以想给自己找点事来做。但又不知道做什么,所以,先从在csdn写点什么开始吧,权当写给以后的自己看。
之前有个个项目,需要在地图上打点,数量大概三五万吧,常规逻来做地图肯定就卡死了。所以需要做点聚合功能,人懒,也不想去找别人现成的东西。好在同事之前做过,所以问了大概思路然后就自己开始搞了。
具体思路很简单。 两种情况。
1、当地图放大到一定比例的时候,如1:500米比例尺,这个时候能看到的范围很小,只需要判断需要打的点位置是不是在屏幕范围内(具体百度API提供了方法不再做赘述),不在屏幕范围的舍弃,剩下的点不会太多。
2、返过来,当地图缩小到一定比例的时候,我们能看到很大的范围,有可能所有点都在屏幕范围内能显示完,这个时候也需要先做第一步,筛选出屏幕范围内的点(点数量很多的情况下还是很有必要,因为不确定当前比例尺下在或者不在屏幕范围内的点到底有多少),然后将地图等分成很多个部分(或者说网格划分),可以创建点的数组point[row][col],计算筛选出来的点,在屏幕上属于哪个区域,可以赋值point[i][j],数据保存的就是聚合后的点,最后遍历这个二维数组,就可以画出聚合后的点。当然,最后别忘了非空判断,有的区域可能没有点覆盖。
在实际使用中,发现在做筛选点是不是在屏幕范围内的时候很耗时,发现是百度地图在做地理坐标和屏幕坐标转换时比较耗时,一万个点就点转一万次。所以这里我们用逆向思维改一下。计算当前地图屏幕左下角和右上角两个点的经纬度,然后判断各个点的经纬度是不是在这两个点形成的矩形范围内(这里我们姑且当成是理想状态的水平面而不是球面)。实际发现,效率提升了很多。
自我总结:有时候逆向思维能带来意向不到的效果。在这个案例中还有不完善的地方,例如在拖动地图的时候,聚合的结果会发生改变,虽然不影响效率,但总觉得有点不完美,可以尝试根据比例尺大小来动态调整筛选距离大小,然后计算集合中各点的距离来做筛选,这样结果就只和比例尺大小有关,而和地图屏幕位置无关了。
- 关于百度地图点聚合的问题
- 百度地图聚合点
- 百度地图点聚合的聚合点样式修改
- 百度地图聚合点的展示
- 使用百度地图的点聚合功能
- 百度地图点聚合提高效率
- 百度地图点聚合改造
- 关于百度地图(四):点聚合及只显示屏幕范围内的marker
- 百度地图点聚合中marker的infowindow消失的问题
- 百度地图API 重新生成点聚合的功能
- 关于地图marker的聚合问题
- 关于百度地图的问题
- Android百度地图点聚合功能
- 百度地图加载海量点、聚合
- Android:百度地图 点聚合功能
- 百度地图点聚合-设置lable显示
- 百度地图点聚合实现方法
- 百度地图开发之点聚合功能
- 一些简单的cmd命令
- Qt中Json循环渐进的简单例子分享,有错误欢迎指正,咸鱼一枚
- JS禁用复制、反键、F12
- c# 模仿 vue 实现 winform 的数据模型双向绑定
- sdsad
- 关于百度地图点聚合的问题
- ExtJs常用控件属性
- bzoj1914 Triangle Counting 数三角形【极角排序】
- DB2
- python功能测试
- 大数据案例二详解 基于大数据技术的全国高速公路通行数据 动态监测平台建设
- 水仙花数
- 数组灌水问题
- Android 端外推送到底有多烦?