이전에 사용자 지정지도 설명 선을 사용하여 작업 해 보았습니다. "ShopPeer.CustomBusinessPoint '(0x101159c68)로'NSKVONotifying_MKPointAnnotation '(0x1c0115960) 형식의 값을 캐스팅 할 수 없습니다."라는 오류가 계속 발생하는 이유를 알아 내려고 노력했기 때문에 상황이 그렇게 좋지 않습니다. " "customAnnotation = view.annotation as customBusinessPoint"라는 줄에서이 오류가 발생합니다. 이 튜토리얼을 예제로 사용하고 있습니다 : http://sweettutos.com/2016/03/16/how-to-completely-customise-your-map-annotations-callout-views/ ... 아래 그림의 컴파일러에서 얼마나 많은 뷰가 표시되는지 확인하십시오. 왜 그렇게 많은지 알 수 없습니다.Swift Custom Map Call Out 오류
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard !(annotation is MKUserLocation) else { return nil }
let reuseId = "pin"
if let pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? CustomBusinessCallOutAnnotatiion {
return pinView
} else {
let pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView.pinTintColor = UIColor.red
pinView.canShowCallout = false
//pinView.rightCalloutAccessoryView = UIButton(type: UIButtonType.infoLight)
return pinView
}
}
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if view.annotation is MKUserLocation { return }
let customAnnotation = view.annotation as! CustomBusinessPoint
let views = Bundle.main.loadNibNamed("CustomBusinessCallOut", owner: nil, options: nil)
let calloutView = views?[0] as! CustomBusinessCallOut
calloutView.businessName.text = customAnnotation.businessName
calloutView.center = CGPoint(x: view.bounds.size.width/2, y: -calloutView.bounds.size.height * -0.0001)
view.addSubview(calloutView)
mapView.setCenter((view.annotation?.coordinate)!, animated: true)
}