0
在我的代碼中,我正在使用Apple地圖,並在View Controller中正確設置了mapView和delegate。爲什麼我無法自定義我的MKAnnotationView?
在我的ViewController我也有內部的下面的代碼循環:
if userOnMapAlready == false {
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: otherUserLocation.coordinate.latitude, longitude: otherUserLocation.coordinate.longitude)
annotation.subtitle = otherUserUUID
self.mapView.addAnnotation(annotation)
}
我也有我的視圖控制器下面的委託功能,並重新設置我的視圖控制器內mapview.delegate =自:
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
//return nil so map view draws "blue dot" for standard user location
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = true
pinView!.animatesDrop = true
pinView!.pinColor = .purple
}
else {
pinView!.annotation = annotation
}
return pinView
}
可悲的是,當銷得出他們都是紅色,紫色不一樣viewForAnnotation會建議他們應。問題是什麼?!這是否與重用ID不匹配分配給每個MKPointAnnotation的唯一字幕?
更新:剛剛意識到,委託函數viewForAnnotation永遠不會被調用 - 這將解釋爲什麼引腳不是紫色。爲什麼viewForAnnotation不會被調用?
我想這種變化,但它仍然沒有工作。實際上,我基於printForAnotation並沒有被調用 - 因此是問題。任何想法爲什麼它不被稱爲? –
您可能需要啓用它(例如'mapView.view(用於:註釋)?。isEnabled = enabled')... –