怎样在百度地图上高效的添加几千个 marker 不至浏览器 卡死?

2014-08-13 09:57:17 +08:00
 shangjiyu
百度开源库 markersClusterer.js 性能也不好,也会导致浏览器卡死。。。
10233 次点击
所在节点    问与答
8 条回复
sun019
2014-08-13 10:12:57 +08:00
没那么密吧 ,你看参考搜房的做法,太多的时候就显示这个区(县)的总个数,满屏几千个点,是人都没点击的欲望啊。
shangjiyu
2014-08-13 10:20:18 +08:00
@sun019 现在项目里碰到的的模拟设备都集中在一个地方。。。然后搜索显示的时候一下全部集中在一个点上了,,1000+的marker 浏览器卡10多秒样子。。 我倒是看到google map的那个markersClustererPlus.js 聚合1000个才几百个毫秒。

嗯, 我去看看搜房
learnshare
2014-08-13 10:23:09 +08:00
根据缩放等级筛选显示的点吧,一次全部显示不仅卡,而且难看。

Google 的 Map Engine 应该是 Canvas 的,只会增大一点点内存。不像百度这样,对 DOM 的改动过多。
hvsy
2014-08-13 10:26:08 +08:00
@shangjiyu 百度地图也有 markersCluster 工具.
http://developer.baidu.com/map/library.htm
在这里可以找到.但是这个是聚合起来的..之前开发类似产品的时候,客户要求都要用点.显示出来
只能用 baidu 地图的麻点图..
shangjiyu
2014-08-13 12:46:06 +08:00
@hvsy 麻点图是不是就是那个lbs云的api? 数据要上传的?
catcn
2014-08-13 13:43:54 +08:00
google的fusion table。
绘制贴图
hvsy
2014-08-13 14:09:56 +08:00
@shangjiyu 自己模拟麻点图.在服务器端绘制图片.然后贴到 baidu 地图上面.
http://developer.baidu.com/map/reference/index.php?title=Class:总类/地图图层类
用这个图层类来显示你在服务器端渲染的图片
http://www.cnblogs.com/jz1108/tag/地图API/
这里有百度地图的各种坐标转换的文章.
otakustay
2014-08-13 16:28:09 +08:00
如果不是IE6-8的话,几千个应该不是问题,以前用OpenLayers,因此有更高的自己定制性,有2种优化方式可以很好地提升性能,不知道百度地图是不是允许这么玩

1. 先创建一个层,不要加到DOM中,在上面放完1000个点,然后再把层加进地图里,使用这个方法当时在2000-3000个点的时候,IE6依旧“能操作”,并没有卡到无法接受,注意地图移动的时候改变的是这个层的left/top,不要每个点都去改
2. 让服务器生成一张图,直接在图上把点画完(就是一张有几千个点的透明图片),然后把这张图作为一个层图,使用<map>标签在图上面做标记控制点击

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127565

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX