-1

我对 MapKit 实现非常陌生

在我的应用程序中,一页是地图视图

因为我已经显示了大量的引脚及其注释操作。

我在这些披露按钮上添加了一个披露按钮,popup bubble并为这些披露按钮设置操作,如下所示。

i Want to Same action When tap on that gray bubble

//To add a discloser button to show route map
        UIButton *detailBtn=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        pinView.rightCalloutAccessoryView=detailBtn;
        [detailBtn addTarget:self action:@selector(showRoute:) forControlEvents:UIControlEventTouchUpInside];
        DisplayMap *ann=(DisplayMap *)annotation;
        detailBtn.tag = ann.detailButtonTag;



//viewForAnnotation DELEGATE for annotions
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
(id <MKAnnotation>)annotation {
    MKPinAnnotationView *pinView = nil;
    if(annotation != mapView.userLocation)
    {
        static NSString *defaultPinID = @"com.invasivecode.pin";
        pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
        if ( pinView == nil ) pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] ;
        pinView.pinColor = MKPinAnnotationColorRed;
        pinView.canShowCallout = YES;
        pinView.animatesDrop = YES;

        //To add a discloser button to show route map
        UIButton *detailBtn=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        pinView.rightCalloutAccessoryView=detailBtn;
        [detailBtn addTarget:self action:@selector(showRoute:) forControlEvents:UIControlEventTouchUpInside];
        DisplayMap *ann=(DisplayMap *)annotation;
        detailBtn.tag = ann.detailButtonTag;
    }
    else
    {
        [mapView.userLocation setTitle:@"I am here"];
    }
    return pinView;
}

但我想在点击那个灰色气泡时采取同样的行动..

怎么做在此处输入图像描述

4

2 回答 2

0

您必须使用以下委托方法来点击气泡。

    -(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(id<GMSMarker>)marker 
   {
    DetailViewController *Detail = [[DetailViewController alloc]initWithNibName:@" DetailViewController" bundle:nil];    
    Detail.data=marker.userData;  // passing the data    
    [self.navigationController pushViewController:restDetail animated:YES];  
   }
于 2013-08-19T07:01:19.630 回答
0

在MKMapViewDelegate中有两种方法:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

有关如何使用这些方法的更多详细信息,您可以查看 Rob 的答案

更新 :

为此,您可以使用自定义标注。您可以使用“showRoute”方法创建自定义按钮,并将其作为子视图添加到自定义标注内容视图。

于 2013-08-19T07:01:27.797 回答