Ⅰ 高德地圖點聚合演算法實現與思考
為了實現在地圖上對大量的標注點進行聚合顯示,使都有標注點根據中心點以及縮放比例的變化動態排列並完成點聚合的功能。現提供基於高德地圖SDK的點聚合實現方式。
以下分別為兩種放縮比例下標注點的聚合情況效果圖:
在預研前期,我考慮了數據從後台獲取的方式,在地圖上添加overlay的方式,但是考慮到用戶的操作會要求所有數據必須實時生成並展現,這意味著每次縮放比例和中心點的改變都要訪問伺服器以重載數據,實現起來難度較大,並且對伺服器和客戶端都造成了較大的壓力。
在閱讀高德開放平台提供的API時發現高德地圖示例中心在2017年2月10日更新了 點聚合效果示例 。
其中 receivedData 可以通過後台獲取或本地生成,包含經度、緯度以及 pID ,即每一個標注點的唯一ID。 mapView regionDidChangeAnimated: 方法在mapView區域變化時自動調用,重算 annotation ,初始化時手動調用一次,使標注點以聚合的形式載入到地圖上。
注意:此處必須要使用多線程
在 mapView viewForAnnotation: 方法中
這樣,就在四叉樹演算法的基礎上完成了點聚合功能的實現。
MACluster地址:
https://github.com/fusugz/MACluster.git