地图在加载大数据量的mark的解决方…

Marker Cluster面面观

1.问题描述:当向地图上加载大数量Marker或者Pushpin时,会出现彼此覆盖和加载速度过慢的问题,解决方案就是Marker Cluster或者叫Pushpin Clustering。简要原理图示:这里 

             

GoogleMaps的解决方案:《Handling Large Amounts of Markers in Google Maps》详细论述并比较了Google Maps上目前的7种解决方案。若果非得挑选一种,那就是Google Geo今年4月在官方博客中提到的“MarkerClusterer”,作者是中国的工程师Xiaoxi Wu,而且已经开源,放到gmaps-utility-library中了。(V3版的工具库:这里。)

         

地图在加载大数据量的mark的解决方法

          

              

Bing Maps的解决方案:微软于去年9月发布6.2版时官方支持,称之为Pushpin Clustering。在交互式iSDK中Customize Shape下有个 Pushpin cluster ,同时有两篇文章介绍如何使用和如何自定义。之前也有非官方的替代方案,不再介绍。

     

地图在加载大数据量的mark的解决方法
      

ESRI的解决方案:ESRI在Flex API中提供了解决方案,据说非常之受欢迎,Silverlight API也提供了类似的功能。

地图在加载大数据量的mark的解决方法

           

还有一些其他公司的解决方案,比如IDV,UMapper等,其中 Maptimize 似乎专业做这个的。

地图在加载大数据量的mark的解决方法
  地图在加载大数据量的mark的解决方法   地图在加载大数据量的mark的解决方法

2.百度的解决案例:

   标注数据量请控制在150个以内,以保持高性能。
标注数量在260以内,可以使用自定义覆盖物实现。
标注数量大于300个,建议尝试marker聚合,或者数据抽希。
Marker聚合:http://tieba.baidu.com/f?kz=1031097376
数据抽希:比如有10个marker,选择其中6个做为显示点。
我的建议是,不要一次在地图上添加过多的marker,而是先把point存储在数据库里,当需要显示某个marker是,再addOverlay。

你可能感兴趣的:(javascript)