when usage requestwheninuseauthorization manager description corelocation ios iphone core-location

ios - usage - Encontrar la distancia entre los puntos CLLocationCoordinate2D



requestwheninuseauthorization (5)

Sé por la documentación que podemos encontrar la distancia entre dos puntos CLLocation usando la función, distanceFromLocation: Pero mi problema es que no tengo el tipo de datos CLLocation conmigo, tengo los puntos CLLocationCoordinate2D. Entonces, ¿cómo puedo encontrar la distancia entre dos puntos CLLocationCoordinate2D? He visto el post post pero no me ha servido de ayuda.


Debes crear un objeto de CLLocation usando,

- (id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude;

Entonces, deberías poder calcular la distancia usando

[location1 distanceFromLocation:location2];


Si está bien que usted obtenga la distancia en metros entre puntos, entonces

CLLocationCoordinate2D coordinate1 = <some value> CLLocationCoordinate2D coordinate2 = <some value> … MKMapPoint point1 = MKMapPointForCoordinate(coordinate1); MKMapPoint point2 = MKMapPointForCoordinate(coordinate2); CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);

Devolverá la distancia entre dos puntos. No es necesario crear CLLocation dado por CLLocationCoordinate2D . Esta definición está disponible desde iOS 4.0


Swift 4:

extension CLLocation { /// Get distance between two points /// /// - Parameters: /// - from: first point /// - to: second point /// - Returns: the distance in meters class func distance(from: CLLocationCoordinate2D, to: CLLocationCoordinate2D) -> CLLocationDistance { let from = CLLocation(latitude: from.latitude, longitude: from.longitude) let to = CLLocation(latitude: to.latitude, longitude: to.longitude) return from.distance(to) } }


Swift4: combinados pensamientos anteriores

extension CLLocationCoordinate2D { //distance in meters, as explained in CLLoactionDistance definition func distance(from: CLLocationCoordinate2D) -> CLLocationDistance { let destination=CLLocation(latitude:from.latitude,longitude:from.longitude) return CLLocation(latitude: latitude, longitude: longitude).distance(from: destination) } }


let point1 = MKMapPointForCoordinate(myLocation) let point2 = MKMapPointForCoordinate(friendLocation) let distance = MKMetersBetweenMapPoints(point1, point2)/1000 let distanceStr = NSString(format: "%.3f", distance)

Versión simple de la respuesta de Valleri. Divide por 1000 para obtener KM seguido de conversión a cadena.