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版的工具库:这里。)
Bing Maps的解决方案:微软于去年9月发布6.2版时官方支持,称之为Pushpin Clustering。在交互式iSDK中Customize Shape下有个 Pushpin cluster ,同时有两篇文章介绍如何使用和如何自定义。之前也有非官方的替代方案,不再介绍。
ESRI的解决方案:ESRI在Flex API中提供了解决方案,据说非常之受欢迎,Silverlight API也提供了类似的功能。
2.百度的解决案例:
标注数量在260以内,可以使用自定义覆盖物实现。
标注数量大于300个,建议尝试marker聚合,或者数据抽希。
Marker聚合:http://tieba.baidu.com/f?kz=1031097376
数据抽希:比如有10个marker,选择其中6个做为显示点。
我的建议是,不要一次在地图上添加过多的marker,而是先把point存储在数据库里,当需要显示某个marker是,再addOverlay。