我想在我的MKMapView而不是rock pin中显示一个图像.

有人能在这里输入一些有用的代码,或者告诉我们怎么做吗?

-(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 = 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;
}

我希望我的图像pinks.jpg出现在 map 上,固定位置,而不是默认的固定视图(rock pin shaped).但我还是得到了pin的默认图像.

推荐答案

如果要将自己的图像用于注释视图,应创建MKAnnotationView而不是MKPinAnnotationView.

MKPinAnnotationViewMKAnnotationView的子类,所以它有一个image属性,但它通常会覆盖这个属性并绘制一个pin图像(这就是它的用途).

因此,将代码更改为:

-(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;
}


如果你仍然想删除图像注释,你必须自己制作动画.您可以在堆栈溢出中搜索"animatesdrop mkannotationview",您会找到几个答案.以下是前两个:

Swift相关问答推荐

SON数组到属性

同步问题,发送Api Call之前未设置idToken

运行异步任务串行运行

在运行时检测蒸汽工人的类型

如何在visionOS中进行购买?&# 39;购买(选项:)在visionOS中不可用

阻塞(受CPU限制的)任务的异步功能?

如何在visionOS中定制悬停效果区域

在MacOS上检测键盘是否有Globe键

从Swift中的泛型类继承?

使用 @resultBuilder 的通用 buildList 函数

SwiftUI:当 currentIndex 值更改时,数组中的第 n 个视图是否已换出?

Xcode:方法参数的代码完成

如何在 RxSwift 中获取 controlEvent 类型?

展开 List 中的 HStack 以端到端但不是从上到下,因此看起来项目之间有更宽的空间

如何让 SwiftUI 中的文本在旋转框架的同时侧向显示?

如何使用 Date.ParseStrategy 在 Swift 5.6 中将字符串解析为日期?

从 NSData 对象在 Swift 中创建一个数组

无法推断泛型参数的参数

为 UIImagePicker 设置委托返回错误

如何使用 swift 在 tableview 中填充两个不同数组的两个部分?