2011-11-03 14 views
5

En una aplicación de iPhone, ¿cómo se puede calcular la distancia entre dos puntos en MKMapView como se muestra en la imagen de abajo?¿Cómo puedo calcular la distancia entre dos puntos en MkMapview?

El primer punto sería el punto central del mapa visible en la vista del mapa.

El segundo punto sería cualquiera de las esquinas del rectángulo visible de la vista de mapa (aquí, por ejemplo, he tomado el punto superior izquierdo).

enter image description here

Quiero calcular esta distancia en metros. ¿Cómo puedo lograr eso?

Mi objetivo es calcular las relaciones del rectángulo de Mapa visible en MKMapview.

Respuesta

29

Puede obtener latitud/longitud del centro con:

convertPoint:toCoordinateFromView: 

LOC1 y LOC2 son ambos objs CLLocation.

CLLocationDistance dist = [loc1 distanceFromLocation:loc2]; 

Estos dos consejos deberían ayudarlo. si necesita algo de código, que me haga saber :-)

+0

Gracias por la respuesta puede u decir cómo obtener lat-long o coordinar el punto de esquina (2º punto) Pude obtener la coordenada del punto central (1er punto) – ios

+0

[Esta respuesta] (http://stackoverflow.com/questions/2081753/getting-the- bounds-of-an-mapmap/2082247 # 2082247) explica cómo obtener el lat/lon del punto de la esquina ts. – progrmr

+0

Cuando hago una verificación cruzada con google. encontrar distancia usando mapKit no es correcto. –

1

Aquí es cómo se puede calcular la distancia deseada:

// You first have to get the corner point and convert it to a coordinate 
MKMapRect mapRect = self.mapView.visibleMapRect; 
MKMapPoint cornerPointNW = MKMapPointMake(mapRect.origin.x, mapRect.origin.y); 
CLLocationCoordinate2D cornerCoordinate = MKCoordinateForMapPoint(cornerPointNW); 

// Then get the center coordinate of the mapView (just a shortcut for convenience) 
CLLocationCoordinate2D centerCoordinate = self.mapView.centerCoordinate 

// And then calculate the distance 
CLLocationDistance distance = [cornerCoordinate distanceFromLocation:centerCoordinate]; 
+7

centerCoordinate y cornerCoordinate deben ser del tipo CLLocation for distanceFromLocation to work – Daniel

0

Swift 3+

let distance: CLLocationDistance = location1.distance(from: location2) 
Cuestiones relacionadas