У меня есть два пользовательских MKAnnotationViews
, которые отображаются нормально, когда они изначально добавлены в MKMapView
.
Проблема в том, что при вращении или уменьшении масштаба их нарисованные местоположения становятся все более и более неверными. Повторюсь, чем ближе я увеличиваю масштаб, тем точнее они выглядят, но при уменьшении масштаба и вращении они полностью отключаются. Есть идеи?
Выглядит хорошо (исходное состояние):
Выглядит плохо (и неправильно):
Мой метод viewForAnnotation
довольно прост, здесь нет ничего необычного.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if let annotation = annotation as? PKDriverAnnotation
{
let identifier = "driver"
var annotationView: PKDriverAnnotationView
if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) { // 2
dequeuedView.annotation = annotation
annotationView = dequeuedView as! PKDriverAnnotationView
} else {
// 3
annotationView = PKDriverAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(PKTransactionMapViewController.annotationViewTapped(recognizer:))))
}
self.driverAnnotationView = annotationView
return annotationView
} else if let annotation = annotation as? PKAnnotation {
let identifier = "pin"
var view: MKAnnotationView
if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) { // 2
dequeuedView.annotation = annotation
view = dequeuedView
} else {
// 3
view = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)
view.image = UIImage(named: "TransactionAnnotation")
view.canShowCallout = false
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(PKHomeViewController.annotationViewTapped(recognizer:))))
let profilePic = FBSDKProfilePictureView(frame: CGRect(x: 4, y: 4, width: 43, height: 43))
profilePic.center = CGPoint(x: view.bounds.midX, y: profilePic.center.y)
profilePic.profileID = self.transaction!.availableParking.holder.fbid
profilePic.layer.cornerRadius = 21.0
profilePic.clipsToBounds = true
view.addSubview(profilePic)
}
return view
}
return nil
}
Обновлять
Я подозревал, что это как-то связано с опорными точками, и мне удалось исправить поворот «видов аннотаций парковочных штифтов» на view.layer.anchorPoint = CGPoint(x: 0.5, y: 1.0)
, но мне не повезло с видом аннотаций водителя (тот, который с автомобилем)
Благодарю за помощь ТАК!