前段时间公司项目需要基于三方地图开发一个根据行政区的点聚合功能,本以为官方sdk有现存的api可以拿来用,后发现官方demo是根据距离做的聚合,但也不是完全不能用,大体思路还是值得借鉴的。
于是就弄了这么一个基于行政区的聚合功能,想想百度也没搜到类似的玩意儿,于是就开源下吧。
安卓地图点聚合
关于使用方法,大家请移步:https://github.com/codersth/mapx
下面就简单地说下设计思路。
开局一张图,内容全靠编(编码的编哈)。
上图中共分为两个部分,上面的虚线框内容为mapx lib,也就是我们的依赖包;下面的application是我们具体的应用。
为什么要分开,放在一起不是很好吗?
因为老朽还是想做一个通用的聚合功能,啥意思?就是与地图无关,无论你用高德、百度、还是腾讯等其它三方地图,均可以通过继承ClusterOverlay来扩展,然后自定义自己的标记显示样式等,具体可以参照git中已实现了高德行政区聚合的sample。
说白了,mapx lib就是一个处理聚合算法的空壳子,主要包含两大过程:计算和绘制,分别在两个子线程中处理,具体请参数UML图中的CalculateHandler和DrawHandler。
标注通过泛型参数指定具体地图的Marker,标注点击后需手动调用onClusterMarkerClick方法。
DisplayAreaLevel是行政区等级的划分,共分5个等级。
Country,
Province,
City,
County,
Point;
其他相关请直接READING THE FUCKING SOURCE CODE!
展望
mapx lib后面会一直维护,致力于将三方地图中的常用功能囊括于此但又与具体地图无关,有兴趣的小伙伴可以了起撸哦~
有问题请直接在下方留言,三日没回复差不多就被祭天了。。。