Ⅰ 高德地图点聚合算法实现与思考
为了实现在地图上对大量的标注点进行聚合显示,使都有标注点根据中心点以及缩放比例的变化动态排列并完成点聚合的功能。现提供基于高德地图SDK的点聚合实现方式。
以下分别为两种放缩比例下标注点的聚合情况效果图:
在预研前期,我考虑了数据从后台获取的方式,在地图上添加overlay的方式,但是考虑到用户的操作会要求所有数据必须实时生成并展现,这意味着每次缩放比例和中心点的改变都要访问服务器以重载数据,实现起来难度较大,并且对服务器和客户端都造成了较大的压力。
在阅读高德开放平台提供的API时发现高德地图示例中心在2017年2月10日更新了 点聚合效果示例 。
其中 receivedData 可以通过后台获取或本地生成,包含经度、纬度以及 pID ,即每一个标注点的唯一ID。 mapView regionDidChangeAnimated: 方法在mapView区域变化时自动调用,重算 annotation ,初始化时手动调用一次,使标注点以聚合的形式加载到地图上。
注意:此处必须要使用多线程
在 mapView viewForAnnotation: 方法中
这样,就在四叉树算法的基础上完成了点聚合功能的实现。
MACluster地址:
https://github.com/fusugz/MACluster.git