CLGeocoder reverseGeocodeLocation está devolviendo marca de position con diferente lat / long? (ejemplo de patio adjunto)

¿Por qué CLGeocoder reverseGeocodeLocation devuelve una marca de position con diferente latitud / longitud cuando mira hacia arriba?

Antecedentes: en términos de un usuario que "presiona durante mucho time" en el map para soltar un pin, pero mi código invierte en Geoencoding para poder poner un nombre de área en el Pin, pero luego el PIN se cae en una location diferente (es decir, no una buena experiencia de usuario). Así que estoy buscando una forma de utilizar el lat / long que el usuario realmente seleccionó, pero luego busque el nombre de la location.

Ejemplo: con el código a continuación veo:

  • Entrada: -28.7780218895614, 152.978574011267
  • SALIDA: -28.864405, 153.0001191

Código:

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 

Es un comportamiento correcto. La marca de position devolverá su location asociada. Lo que obviamente podría diferir de la input. Cuando proporcione una location al geocodificador, este "inferirá" la marca de position que desea get.

Supongamos esto:

  a: location asociada con el edificio del estado del imperio.
  b: Ubicación que proporcionó de una prensa larga, por ejemplo.

     -------
     |  |
     |  a |  -> CLPlacemarca: Empire state building, location: a
     |  b |
     ------- 

Tenías razón en tus suposiciones. 🙂