ios - Swift 3 acceso privado?
geocode swift3 (2)
Mi extensión para CLLocationManagerDelegate se bloqueaba aleatoriamente debido al mismo error: [Client] Geocode error: <private>
en swift 3.0.
La cosa es:
geocoder.reverseGeocodeLocation(startLocation, completionHandler: {
placemarks, error in
})
las marcas de posición algunas veces volvían nulas ...
Entonces ... me di cuenta de que estaba jugando con mi proxy HTTP para probar alguna solicitud a la API de Google desde mi dispositivo con el Charles Proxy. La eliminación de la dirección proxy HTTP manual en mi iPhone hizo que el truco y el geocodificador funcionaran bien de nuevo.
Espero que ayude.
PD: No importa ... después de 30 segundos o incluso menos, la aplicación se bloquea con el mismo mensaje de depuración: [Cliente] Error de geocodificación:
Intento convertir la dirección de ubicación en coordenadas y abrirla dentro de la aplicación de mapas, pero recibo este error cuando se llama a la función. [Client] Geocode error: <private>
. Esa es la única cosa impresa dentro de la consola.
@IBAction func openinmaps(_ sender: AnyObject) {
var geocoder: CLGeocoder = CLGeocoder()
var location = "1 Infinite Loop"
geocoder.geocodeAddressString(location,completionHandler: {(placemarks: [CLPlacemark]?, error: NSError?) -> Void in
if (placemarks?.count > 0) {
var topResult: CLPlacemark = (placemarks?[0])!
var placemark: MKPlacemark = MKPlacemark(placemark: topResult)
let regionDistance:CLLocationDistance = 10000
let coordinates = CLLocationCoordinate2DMake(placemark.coordinate.latitude, placemark.coordinate.latitude)
let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
let options = [
MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center),
MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span)
]
let mapItem = MKMapItem(placemark: placemark)
mapItem.openInMaps(launchOptions: options)
}
})
}
Tuve el mismo problema, parece que hay un límite al geocodificar por dirección y este es el error para esto.
Mi solución fue poner Sleep (1) después de cada geocodificación en mi ciclo, encontrar la latitud y la longitud de la ubicación y publicarlas en mi base de datos en cada lugar que trazaba.
Esto significa que ahora no es necesario usar el geocodificador para trazar las anotaciones en el mapa, ya que solo usa el lat y long para hacerlo. Esto funcionará para conjuntos de datos fijos, pero para cosas sobre la marcha necesitaría otra forma. Aparentemente Sleep (2) te permitirá trazar continuamente a través de grandes volúmenes de datos, pero termina tomando un tiempo para que todo se traduzca.
He agregado un lat por defecto y un largo de 0.0 en mi base de datos y al iniciar la aplicación escaneará para encontrar lugares nuevos y luego los geocodificará y publicará la latitud y la antigüedad. Tuve que hacer un par de intentos para obtener ~ 700 lugares lats y longs, pero no he tenido problemas desde entonces.