У меня проблемы с пользовательским MKAnnotationView.
Я загружаю координату, где разместить его из моего REST API, и помещаю булавку на карту с этим кодом:
private func refreshMapView(andCenterMap: Bool){
DispatchQueue.main.async { [weak self] in
guard let self = self else {
return
}
self.mapView.addAnnotations(self.spotsArray)
if andCenterMap {
self.centerMap(at: self.mapView.userLocation.coordinate)
}
}
}
Один булавка установлена. Я автоматически увеличиваю карту.
Вот код для создания пользовательской аннотации:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
// Do not touch the annotation of the user location
if annotation.isKind(of: MKUserLocation.self){
return nil
}
let annoIdentifier = "SPOT"
var annotationView: MKAnnotationView?
if let dequeued = mapView.dequeueReusableAnnotationView(withIdentifier: annoIdentifier) {
annotationView = dequeued
}else{
let av = MKAnnotationView(annotation: annotation, reuseIdentifier: annoIdentifier)
annotationView = av
}
// Changing the image of the pin
annotationView!.annotation = annotation
if let image = UIImage(named: "map_pin") {
annotationView!.image = image
let deltaY = image.size.height/2
annotationView!.centerOffset = CGPoint(x: 0.0, y: -deltaY)
}else{
annotationView!.image = nil
}
return annotationView
}
Как вы можете заметить, мой собственный пин-код использует это изображение (@ 1x, @ 2x, @ 3x)
Нажатие. Я хочу показать «подробный вид», и я использую аннотацию в качестве отправителя, чтобы получить всю необходимую мне информацию в следующем представлении.
Вот код:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
guard let ann = view.annotation else {
return
}
if ann.isKind(of: MKUserLocation.self){
return
}
self.performSegue(withIdentifier: "showDetailSegue", sender: ann)
}
Итак, я предоставляю все необходимые данные и могу вернуться к «представлению карты».
Проблема:
В представлении карты, если я хочу снова выбрать ту же аннотацию, это больше не применимо.
Я могу видеть это (в нужном месте), но я могу выбрать его снова, только если я немного увеличу масштаб и нажму "вокруг" аннотации.
Есть предложения, как решить эту проблему?
Заранее спасибо!