Я получаю сообщение об ошибке "Не удалось привести значение типа 'NSKVONotifying_MKPointAnnotation' к 'MKMapItem'" при попытке открыть Apple Maps для указаний. Я новичок в этом и собираю код, чтобы попытаться заставить его работать.
struct Location {
let agencyId: String
let agencyEventId: String
let agencyEventSubTypeCode: String
let latitude: Double
let longitude: Double
let agencyEventTypeCode: String
}
func multiPoint() {
for receivedEvent in receivedEventsList {
mapEventLatitude = receivedEvent.latitude!
mapEventLongitude = receivedEvent.longitude!
latDouble = ("\(mapEventLatitude))" as NSString).doubleValue
longDouble = ("\(mapEventLongitude))" as NSString).doubleValue
multiMapAgencyEventSubTypeCode = receivedEvent.agencyEventSubtypeCode!
multiMapAgencyId = receivedEvent.agencyId!
multiMapAgencyEventId = receivedEvent.agencyEventId!
multiMapAgencyEventTypeCode = receivedEvent.agencyEventTypeCode!
let locations = [
Location(agencyId: multiMapAgencyId, agencyEventId: multiMapAgencyEventId, agencyEventSubTypeCode: multiMapAgencyEventSubTypeCode, latitude: latDouble, longitude: longDouble, agencyEventTypeCode: multiMapAgencyEventTypeCode)
]
for location in locations {
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude)
annotation.title = location.agencyId
annotation.subtitle = multiMapAgencyEventSubTypeCode
multiEventMap?.addAnnotation(annotation)
eventTypeNumber = ("\(multiMapAgencyEventTypeCode))" as NSString).intValue
}
}
}
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let reuseIdentifier = "annotationView"
let view = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: reuseIdentifier)
view.markerTintColor = UIColor.blue
view.glyphText = "x"
view.displayPriority = .required
view.clusteringIdentifier = nil
view.canShowCallout = true
view.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
return view
}
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let location = view.annotation as! MKMapItem
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
location.openInMaps(launchOptions: launchOptions)
}