百度地图相关Demo:http://mapopen-portal-mis.cdn.bcebos.com/iOS/Sample/BaiduMap_IOSSDK_v4.2.1_Sample.zip.demo里面还是比较全的。
首先按照demo集成点集合功能,主要就是这个目录导入项目:
01这里提醒一下,百度地图sdk里面是没得这些功能的,只有按照demo导入文件目录到自己的项目,估计是官方不想把sdk搞那么大。
定位代码、地图代码、点聚合代码这里我就不贴了,太长了,,主要是说一下每个点的tag值问题,,
由于点聚合功能的点模型数据,官方是放在BMKClusterManager类的初始化里面,并没有开放出来,所以读者需要把所有点的模型数据在进入地图页面前存在本地,进入地图页面后在BMKClusterManager里面取数据.
1.在for循环的里面进行tag赋值
BMKQuadItem*quadItem = [[BMKQuadItemalloc]init];
quadItem.tag = model.Id;
quadItem.coordinate= coordinate;
2.在BMKClusterManager里面的- (NSArray*)getClusters:(CGFloat) zoomLevel这个方法添加下图红色框tag
02这里涉及到两个类需要增加tag属性,如图03/04
03 043.回到地图页面,在ClusterAnnotation里新增tag属性
054.在updateClusters方法里面赋值tag
065.最后在viewForAnnotation代理方法里面获取tag
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation {
ClusterAnnotation*cluster = (ClusterAnnotation*)annotation;
DLog(@"----当前cluster的tag值为:%ld---",(long)cluster.tag);
BMKPinAnnotationView *annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationViewIdentifier];
}
最后,不管是这里的点聚合,还是普通的标注都是自己写一个类然后继承BMKPointAnnotation这个类,去设置tag。
网友评论