Ich habe versucht, für eine bestimmte Zeit Wegbeschreibungen zu Anmerkungen auf meiner gesamten Karte zu erhalten. Ich habe kürzlich herausgefunden, wie man das macht, aber jetzt werden nicht alle meine Anmerkungen auf der Karte erscheinen, nur einer tut es. Ich verwende eine öffentliche Datenbank in Cloudkit
, um alle meine Benutzerinformationen zu speichern. Seit ich die Variable annotation = MKPointAnnotation()
für den gesamten View-Controller verfügbar gemacht habe, wurden nicht alle meine Annotationen auf der Karte angezeigt.Anmerkungen werden nicht auf Karte geladen
Dies ist, wie ich get directions:
let annotation = MKPointAnnotation()
@IBAction func getDirections(_ sender: Any) {
let view = annotation.coordinate
print("Annotation: \(String(describing: view))")
let currentLocMapItem = MKMapItem.forCurrentLocation()
let selectedPlacemark = MKPlacemark(coordinate: view, addressDictionary: nil)
let selectedMapItem = MKMapItem(placemark: selectedPlacemark)
let mapItems = [selectedMapItem, currentLocMapItem]
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
MKMapItem.openMaps(with: mapItems, launchOptions:launchOptions)
}
Dies ist, wie ich meine Anmerkungen zeigen:
func fetch() {
let truePredicate = NSPredicate(value: true)
let eventQuery = CKQuery(recordType: "User", predicate: truePredicate)
let queryOperation = CKQueryOperation(query: eventQuery)
queryOperation.recordFetchedBlock = { (record : CKRecord!) in
self.truck.append(record)
self.annotation.title = record?["username"] as? String
self.annotation.subtitle = record?["hours"] as? String
if let location = record?["location"] as? CLLocation {
self.annotation.coordinate = location.coordinate
}
print("recordFetchedBlock: \(record)")
self.mapView.addAnnotation(self.annotation)
}
queryOperation.queryCompletionBlock = { (cursor, error) in
print("queryCompletionBlock: \(self.truck)")
}
database.add(queryOperation)
}
ich diesen Fehler jetzt bin immer:
This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.
Der Fehler zeigt, dass Sie Änderungen an der Benutzeroberfläche im Hintergrundthread vornehmen, weshalb Sie mit diesem Fehlerprotokoll konfrontiert werden. Aktualisieren Sie Ihren Code und schreiben Sie alle Änderungen der Benutzeroberfläche im Hauptthread. – Surjeet