Warum gibt CLGeocoder reverseGeocodeLocation eine Ortsmarke mit anderen Lat/Long zurück, wenn es nach Adresse sucht?CLGeocoder reverseGeocodeLocation gibt Ortsmarke mit anderem Breitengrad/Länge zurück? (Spielplatz Beispiel angefügt)
Hintergrund: In Bezug auf einen Benutzer "lange drücken" auf der Karte, um einen Pin fallen zu lassen, aber mein Code umgekehrt Geocoding dies in der Lage, einen Bereich Namen auf dem Pin, aber dann die PIN fällt in einem anderen Standort (dh keine gute Benutzererfahrung). Ich suche also nach einer Möglichkeit, den lat/long-Wert des tatsächlich ausgewählten Benutzers zu verwenden, aber suche dann einfach den Namen des Ortes nach.
Beispiel: Mit Code unten sehe ich:
- Eingang: -28,7780218895614, 152,978574011267
- OUTPUT: -28,864405, 153,0001191
Code:
import UIKit
import CoreLocation
import PlaygroundSupport
// Initial Test Co-ordinate
let locInput = CLLocation(latitude: -28.778021889561444, longitude: 152.97857401126666)
print("Input: \(locInput.coordinate.latitude), \(locInput.coordinate.longitude)")
// Initiate Reverse Geocoding
let geocoder: CLGeocoder = CLGeocoder()
print("About to call reverse geocoding function")
geocoder.reverseGeocodeLocation(locInput) { placemarks, error in
guard let placemarks = placemarks else {fatalError("No Placemarks Provided \(error?.localizedDescription)")}
for p in placemarks {
print("OUTPUT: \(p.location!.coordinate.latitude), \(p.location!.coordinate.longitude)")
}
}
// Enable Asynch
PlaygroundPage.current.needsIndefiniteExecution = true
PS. Oder ist der Ansatz in diesem Fall, die von reverseGeocodeLocation zurückgegebene Ortsmarkierung zu verwenden und die Lokalität, Unterlocation, Länderzeichenfolgen zu verwenden, aber NICHT deren Position/Koordinate, ABER stattdessen die Koordinate aus dem "langen Drücken" verwenden? – Greg