更新时间:2020-06-23
点聚合简介
iOS地图SDK支持点聚合功能,可通过缩小地图层级,将定义范围内的多个标注点,聚合显示成一个标注点,解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。
绘制点聚合的方法
初始化点聚合管理类
Objective-C
Swift
//声明点聚合管理类全局变量 @property (nonatomic, strong) BMKClusterManager *_clusterManager; //初始化点聚合管理类 _clusterManager = [[BMKClusterManager alloc] init];
var clusterManager = BMKClusterManager()
添加点数据
Objective-C
Swift
CLLocationCoordinate2D coor = CLLocationCoordinate2DMake(39.915, 116.404); //向点聚合管理类中添加标注 for (NSInteger i = 0; i < 20; i++) { double lat = (arc4random() % 100) * 0.001f; double lon = (arc4random() % 100) * 0.001f; BMKClusterItem *clusterItem = [[BMKClusterItem alloc] init]; clusterItem.coor = CLLocationCoordinate2DMake(coor.latitude + lat, coor.longitude + lon); [_clusterManager addClusterItem:clusterItem]; }
let coor = CLLocationCoordinate2D(latitude: 39.915, longitude: 116.404) for _ in 0..<20 { let lat: Double = Double((arc4random() % 100)) * 0.001 let lon: Double = Double((arc4random() % 100)) * 0.001 let coordinate = CLLocationCoordinate2D(latitude: coor.latitude + lat, longitude: coor.longitude + lon) let quadItem = BMKQuadItem() quadItem.coordinate = coordinate objc_sync_enter(quadtree) quadItems.append(quadItem) quadtree.addItem(quadItem: quadItem) objc_sync_exit(quadtree) }
点聚合源码,请参考demo中的BMKClusterAnnotationPage;Swift源码参考BMKSwiftDemo中的BMKClusterAnnotationPage.swift
点聚合效果
效果如下: