如何在地图图钉注释中显示图像?

时间:2011-01-21 14:30:03

标签: iphone mkmapview

我有一个视图>> subview mkmapview。

因为我想要显示图像。 ...我当前的图像是这样的。alt text

我希望像这样展示

alt text

我该怎么做?如何在此anotation中添加图像。

3 个答案:

答案 0 :(得分:7)

您正在谈论的图像对应于MKAnnotationView的leftCalloutAccessoryView属性。

摘自doc:

  

leftCalloutAccessoryView视图到   显示在左侧   标准标注泡沫。

您可以实现以下方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation {

    MKAnnotationView* annotationView = nil;

    MyAnnotation *myAnnotation = (MyAnnotation*) annotation;
    NSString* identifier = @"Pin";
    MKPinAnnotationView* annView = (MKPinAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

    if(nil == annView) {
        annView = [[[MKPinAnnotationView alloc] initWithAnnotation:myAnnotation reuseIdentifier:identifier] autorelease];
    }

    UIImageView *leftIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LeftIconImage.png"]];
    annView.leftCalloutAccessoryView = leftIconView;

    return annotationView;
}

希望这有帮助, 文森特

答案 1 :(得分:3)

在MKAnnotationView中设置leftCalloutAccessoryView属性

  

leftCalloutAccessoryView要在左侧显示的视图   标准标注泡沫。

     

@property(保留,非原子)UIView   * leftCalloutAccessoryView讨论此属性的默认值为   零。左侧标注视图是   通常用于显示信息   关于注释或链接到   您提供的自定义信息   应用。视图的高度   应该是32像素或更少。

     

如果您指定的视图也是   UIControl类的后代,你   可以使用地图视图的委托   你的时候收到通知   控制被轻敲。如果没有   从UIControl下来,你的观点是   负责处理任何触摸   在其范围内的事件。

     

可用性在iOS 3.0和   后来。另见@property   canShowCallout相关示例代码   MapCallouts宣布进入   MKAnnotationView.h

Apple docs

答案 2 :(得分:-1)

v.leftCalloutAccessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img"]];

其中v - 是注释的视图(MKAnnotationView) 或者如果你想要完整的解决方案 - 这里是:

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{

    NSString *Identifier = [NSString stringWithFormat:@"%f%f",annotation.coordinate.latitude,annotation.coordinate.longitude];
    MKPinAnnotationView *annView= (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:Identifier];
    if (annView==nil) {
        annView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:Identifier] autorelease];
    }

    if (![annotation isKindOfClass:[MyAnnotation class]]) {
        return nil;
    }

    RightCalloutAccessoryBtn* rightButton = [RightCalloutAccessoryBtn buttonWithType:UIButtonTypeDetailDisclosure];
    annView.rightCalloutAccessoryView = rightButton;
    annView.leftCalloutAccessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img"]] autorelease];
    annView.canShowCallout = YES;
    return annView;
}

您应该在地图代理的类中编写此代码