在日常的开发工作中经常可以遇到地图的相关应用,但是大部分的问题我们都可以通过查询相关的地图api接口就可以得到我们想要的结果,无非会在数据处理以及一些基础的函数的问题,但是如果想在地图上实现一些大量数据的标绘制的时候,问题就出现了。经过测试,百度地图(本文中的地图均指百度地图)在实现基于图片的标绘物品的时候,在200个点属于完美性能(PC,移动端未测试)一旦超过2000个标绘物的时候就会出现明显的卡顿,而超过5000的时候则会出现浏览器直接奔溃的情况。经过多方查找且改进,我找到了基于百度地图canvas的额外图层绘制。经过测试,可以实现10000个点基本完美性能。但是再往上我也不太会了,因此希望诸位大佬给出改进意见。
在这儿需要感谢一位大哥完成了代码里最麻烦的部分,就是百度地图和canvas的经纬度坐标和canvas的屏幕坐标转换的部分,而他也完成了多条地铁线路的地图标会,而我在他的基础上加入了海量图片的标绘以及热力图的嵌入+点聚合的优化方法,这是那哥们的github地址:https://github.com/chengquan223
实现的结果如下图所示:
下面是我的源码地址,可以直接运行,具体的点聚合算法以及屏幕切割算法、点击重合标绘物的判断方法等等我都有详细的注释,目前10万左右的数据会在最小层级上卡顿,还有就是图片需要用到base64的方法,因为做测试老是出现图片跨域的方法,我也懒得专门弄一个服务端的环境了。具体的解决方法自行百度。。。