`
iaiai
  • 浏览: 2145694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多
ios中使用百度地图监听哪个点击BMKPointAnnotation的方法

在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);
}

用上面代码从mapView里的viewForAnnotation方法根据anntation生成对应的View,然后设置一下tag就可以了,我没找到其它办法,如果大家知道其它更好的办法请告诉我。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics