ios中使用百度map监听哪个点击BMKPointAnnotation的方法

2025年05月05日 13:22
有1个网友回答
网友(1):

在ios中使用BMKPointAnnotation来创建定位点的泡泡,点击泡泡也可以监听到点击
-(void)viewDidLoad{
[super viewDidLoad];
...
// 添加一个PointAnnotation
BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
CLLocationCoordinate2D coor;
coor.latitude = 39.915;
coor.longitude = 116.404;
annotation.coordinate = coor;
annotation.title = @"这里是北京";
[mapView addAnnotation:annotation];
}

- (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view{
NSLog(@"paopaoclick");
}

上面这段代码是添加了一个泡泡,点击泡泡监听到点击,但是有个问题就是如果有多个泡泡,我不知道是哪个点击的,通过BMKAnnotationView无法获取到BMKPointAnnotation,并且BMKPointAnnotation无法设置tag,查询官方示例也没查到,百度了很久也没查到,这两个完全是脱节的,在单击的监听方法里无法知道是哪个点击的,也不可能用经纬度再从数据里再去查一遍,如果有相同的经纬度查询就会有问题。

后来终于查到一个方法可以解决这个问题,看下面代码:
-(void)viewDidLoad{
[super viewDidLoad];
...
// 添加一个PointAnnotation
BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
CLLocationCoordinate2D coor;
coor.latitude = 39.915;
coor.longitude = 116.404;
annotation.coordinate = coor;
annotation.title = @"这里是北京";
[mapView addAnnotation:annotation];
BMKAnnotationView* aview = [mapView viewForAnnotation:annotation];
aview.tag = 1;
}

- (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view{
NSLog(@"paopaoclick___tag:%d",view.tag);
}