manager corelocation ios geolocation ios9 core-location

ios - corelocation - location manager swift 4



CLLocation distanceFromLocation: devuelve cero en iOS 9. ¿Es un error? (1)

Código para reproducir el problema:

-(void)testDistance { NSLog(@"Test distance..."); CLLocation *location1 = [[CLLocation alloc] initWithLatitude:137.02954600000001 longitude:50.543728999999999]; CLLocation *location2 = [[CLLocation alloc] initWithLatitude:55.79676300 longitude:49.10834400]; CLLocationDistance distance = [location1 distanceFromLocation:location2]; NSLog(@"Distance: %lf", distance); }

Salida iOS 8.4:

Distancia: 9021699.415204

Salida iOS 9.1:

Distancia: 0.000000

location1 y location2 no son nada.

Busqué una pregunta similar en SO, pero no pude encontrar ninguna. Parece un error de iOS 9 para mí. ¿Estás de acuerdo? ¿Obtienes resultados similares? Quería enviar un informe de error a Apple, pero primero quería confirmarlo.

Ejecuté el código en simuladores (iOS 8.4 y iOS 9.1). El idioma del sistema se estableció en ruso, la región se estableció en Rusia.

ACTUALIZACIÓN: lat y lon resultaron ser mixtos. La latitud debe estar dentro del rango [-90, 90]. En versiones anteriores de iOS todavía producía algunos resultados. En iOS 9 lo hicieron regresar 0 . No creo que este sea un buen valor de retorno para ese caso, porque es un valor perfectamente válido. Creo que deberían devolver algún código de error en su lugar (como lo hacen para nil , devolviendo -1 ). Al menos, debe mencionarse en los documentos. Tengo la intención de presentar un informe de error en el futuro cercano.


Comprueba el valor de latitud de la ubicación 1. Supongo que hay una discrepancia con el rango de latitud (-90, 90).