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

来源:互联网 发布:小米手机淘宝商城 编辑:程序博客网 时间:2024/06/05 06:39

Marker Cluster面面观

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

            

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

         

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

          

             

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

     

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

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

地图在加载大数据量的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。

原创粉丝点击