Так что для моего MAPview, я получаю координаты из другого VC, передавая его долготы и широты через глобальный массив, как, например:Swift MapView не добавлять аннотации к карте
Добавление широты и долготы в массив:
var location_one: [String: Any] = ["title": eventName, "latitude": latitude, "longitude": longitude]
locations.append(location_one)
if let tbc = self.tabBarReference {
if let map = tbc.viewControllers?[1] as? MapVC {
map.loadViewIfNeeded()
map.add(newLocation:location_one)
}
}
Получение координат на MapViewVC:
func add(newLocation location_one:[String:Any]) {
let momentaryLat = (location_one["latitude"] as! NSString).doubleValue
let momentaryLong = (location_one["longitude"] as! NSString).doubleValue
let annotation = MKPointAnnotation()
annotation.title = location_one["title"] as? String
annotation.coordinate = CLLocationCoordinate2D(latitude: momentaryLat as CLLocationDegrees, longitude: momentaryLong as CLLocationDegrees)
map.addAnnotation(annotation)
// self.map.centerCoordinate = annotation.coordinate
}
viewForannotation код:
func mapView(_ map: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let identifier = "pinAnnotation"
var annotationView = map.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKPinAnnotationView
if annotationView == nil {
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView?.canShowCallout = true
}
annotationView?.annotation = annotation
return annotationView
}
Координаты должным образом передаются, и функция func add вызывается (проверяется с использованием оператора break), однако, когда я перехожу к MapView в симуляторе, аннотация не помещается. Я понятия не имею, что происходит, поскольку это правильно работало в другом тестируемом приложении, но не имеет понятия, что может заставить его испортиться.
У меня также есть код, который находит текущее местоположение пользователя и помещает контакт на основе этого ... возможно, это может испортить код кодов добавления?
Неправильно ли вы делегировали делегат объекту карты и реализовали метод viewForAnnotation? – apineda
@Rob the momentaryLat и momentaryLong получить координаты должным образом, поэтому я думаю, что эта часть хороша. Я редактировал свой вопрос, чтобы включить viewForAnnotation. Мое приложение правильно работало с отображением аннотации текущего местоположения, поэтому я не уверен, правильно ли я это сделал или нет. – Kevin
@apineda yep I set, self.map.delegate = self в моем представленииDidLoad(). Кроме того, я отредактировал свой вопрос, чтобы включить мой метод viewForAnnotation, однако я не уверен, правильно ли я его реализовал. – Kevin