iphone - 使用 MapKit 在 map 中的 pin(注释)标注中显示自定义 UIView

标签 iphone dictionary mkmapview

在我的应用程序中,我想在用户触摸 map (标准引脚)上的注释的情况下显示自定义 View (带按钮)。 我知道我可以子类 MKAnnotationView 并更改 pin 的 View 。但是我如何更改用户触摸图钉时出现的附加信息 View 的外观(默认情况下它显示 MKAnnotation 对象的标题和副标题)。 我该怎么做?

谢谢。

最佳答案

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id )annotation
{
    MKPinAnnotationView *pinView = nil;
    static NSString *defaultPinID = @"ReusedPin";
    pinView = (MKPinAnnotationView*)[mVdequeueReusableAnnotationViewWithIdentifier:defaultPinID];
    if ( pinView == nil )
        pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
    if (((PinAnnotationView*)annotation).tag == 0 )
    {
        pinView.pinColor = MKPinAnnotationColorPurple;
    }
    else {
        pinView.pinColor = MKPinAnnotationColorRed;
    }
    pinView.canShowCallout = YES;
    pinView.animatesDrop = YES;
    UIImageView *pinImageView = [[UIImageView alloc] initWithFrame:CGRectMake(-5, 0, 34, 34)];
    UIImage *pinImage = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"]];
    pinImageView.image = pinImage;
    [pinImage release]; 
    [pinView addSubview:pinImageView];
    [pinImageView release];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    btn.tag = ((PinAnnotationView*)annotation).tag;
    pinView.rightCalloutAccessoryView = btn;
    return pinView;
}

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
    if ( control.tag !=0) {
        ShowProviderDetailVC  *viewControlle = [[ShowProviderDetailVC alloc]initWithNibName:@"ShowProviderDetailVC" bundle:nil];
        viewControlle.lastViewName = @"SearchView";
        for (NSMutableDictionary* dict in globalLocArray) {
            if ( control.tag ==[[dict valueForKey:@"ID"] intValue] )
            {
                viewControlle.providerInfoDict = dict;
            }
     }
    [self.navigationController pushViewController:viewControlle animated:YES];
    [viewControlle release];
}

关于iphone - 使用 MapKit 在 map 中的 pin(注释)标注中显示自定义 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4712729/

相关文章:

iphone - 在后台加载 MKMapView 并从中创建 UIImage (iPhone 和 iPad)

ios - 内存警告-MapOverlay

iphone - 嵌入YouTube视频而不共享选项

ios - 同时在 iPhone 上安装 iOS 应用程序的生产和开发版本

python - dict.get 返回空而不是默认值

python - Python 中的嵌套字典,隐式创建不存在的中间容器?

ios - MapView 添加多个不同颜色的注解

iphone - popToRootViewControllerAnimated in alertView回调问题

ios - iPhone X 上的面容 ID

Python检查列表中的任何元素是否是字典中的键