自定义 MKAnnotationView swift:func mapView 什么都不做

custom MKAnnotationView swift: func mapView does nothing

我正在尝试使用 MapKit 在地图上设置图像而不是图钉。我知道我必须设置自定义 MKAnnotationView。因此我应该执行以下几行:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
    if !(annotation is CustomPointAnnotation) {
        return nil
    }

    let reuseId = "test"

    var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
    if anView == nil {
        anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        anView.canShowCallout = true
    }
    else {
        anView.annotation = annotation
    }

    //Set annotation-specific properties **AFTER**
    //the view is dequeued or created...

    let cpa = annotation as CustomPointAnnotation
    anView.image = UIImage(named:cpa.imageName)

    return anView
}

但它在我的代码中根本不起作用。我 copy/pasted 来自此 post 的所有代码,将名为 1.png 的图像添加到我的支持文件中。但是地图显示的是红色图钉而不是 1.png 图像。

看来整个mapView功能都没用了。我必须在 viewDidLoad 中调用它吗?我应该如何使用它?另外,reuseId 是做什么用的?我应该在哪里调用它?

感谢您的回答,新年快乐。

确保 MKMapView 的委托正确链接到实现该方法的 ViewController。

您可以在 "viewWillAppear" 方法中这样做:mapView.delegate = self;

或者在InterfaceBuilder中: - 确保您的 MapKit View 被选中 - 转到 "Connections Inspector" - 在 "Outlets" 部分,将 "delegate" 属性拖放到实现委托方法

的 ViewController