【问题标题】:MKAnnotationView custom image is not shownMKAnnotationView 自定义图片不显示
【发布时间】:2012-08-06 14:09:42
【问题描述】:

我正在尝试在地图上添加自定义图像而不是常规图钉。但它仍然是一个红色别针......我错过了什么?

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{  
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKPinAnnotationView *annView = [[MKPinAnnotationView alloc]     initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
    annView.animatesDrop = TRUE;
    annView.image = [UIImage imageNamed:@"CustomPin.png"];
    return annView;
}

【问题讨论】:

  • 您的代码有效,但缺少 animatesDrop。我添加了 pinView.animatesDrop = YES;但有一个错误 - 在 MKAnnotationView 上找不到属性 animatesDrop。这样就解决了:stackoverflow.com/a/2087253/1341180
  • 如果您将此链接作为答案,我会检查它是否正确
  • 是的,正如链接的答案所说,需要使用 MKAnnotationView 但它没有 animatesDrop 属性。该答案中链接了另一个答案,解释了一种解决方法。请根据您所做的更正自行回答此问题。
  • 我已经更新了评论——上面找到的丢失drop功能的解决方案。

标签: iphone objective-c cocoa-touch mkmapview mkannotationview


【解决方案1】:

MKMapView: Instead of Annotation Pin, a custom view

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation 
{
    MKAnnotationView *pinView = nil; 
    if(annotation != mapView.userLocation) 
    {
        static NSString *defaultPinID = @"com.invasivecode.pin";
        pinView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
        if ( pinView == nil ) 
            pinView = [[MKAnnotationView alloc]
                                         initWithAnnotation:annotation reuseIdentifier:defaultPinID];

        //pinView.pinColor = MKPinAnnotationColorGreen; 
        pinView.canShowCallout = YES;
        //pinView.animatesDrop = YES;
        pinView.image = [UIImage imageNamed:@"pinks.jpg"];    //as suggested by Squatch
    } 
    else {
        [mapView.userLocation setTitle:@"I am here"];
    }
    return pinView;
}

【讨论】:

    【解决方案2】:

    您好,只需从您的代码中删除一行...annView.animatesDrop = TRUE;

    剩余代码-

    -(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{  
        static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
        MKPinAnnotationView *annView = [[MKPinAnnotationView alloc]     initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
        annView.image = [UIImage imageNamed:@"CustomPin.png"];
        return annView;
    }  
    

    【讨论】:

      【解决方案3】:

      我发现查看 Apple 文档并下载示例代码很有帮助。

      http://developer.apple.com/library/ios/#samplecode/MapCallouts/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009746

      他们正在为他们的地图实现自定义注释。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 1970-01-01
        • 2011-10-23
        相关资源
        最近更新 更多