我正在尝试使用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
}
但它根本不适用于我的代码。我复制/粘贴了这个post的所有代码,将一个名为1.png的图像添加到我的支持文件中。但是地图显示的是红色图钉而不是1.png图像。
看起来整个mapView函数都没用。我是否必须在viewDidLoad中调用它?我怎么能让它被使用?另外,reuseId是什么?我应该在哪里打电话?
感谢您的回答和新年快乐。
答案 0 :(得分:2)
确保MKMapView的委托正确链接到实现该方法的ViewController。
你可以在“viewWillAppear”方法中这样做:mapView.delegate = self;
或者在InterfaceBuilder中: - 确保选择了MapKit视图 - 转到“Connections Inspector” - 在“Outlets”部分中,将“delegate”属性拖放到实现委托方法的ViewController