MKMapView tiene propiedades denominadas centerCoordinate (CLLocationCoordinate2D) y la región (MKCoordinateRegion). Región es una estructura que:
typedef struct {
CLLocationDegrees latitudeDelta;
CLLocationDegrees longitudeDelta;
}MKCoordinateSpan
Usted debe ser capaz de crear otro punto, basado en centerCoordinate, digamos, mediante la adición de latitudeDelta a que la latitud propiedad o centerCoordinate, y calcular la distancia utilizando el método de CLLocation:
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
Algo como esto
MkMapView * mapView; // init somewhere
MKCoordinateRegion region = mapView.region;
CLLocationCoordinate2D centerCoordinate = mapView.centerCoordinate;
CLLocation * newLocation = [[[CLLocation alloc] initWithLatitude:centerCoordinate.latitude+region.span.latitudeDelta longitude:centerCoordinate.longitude] autorelease];
CLLocation * centerLocation = [[[CLLocation alloc] initWithLatitude:centerCoordinate.latitude:longitude:centerCoordinate.longitude] autorelease];
CLLocationDistance distance = [centerLocation distanceFromLocation:newLocation]; // in meters
Y justo calcular cada vez que un delegado dispara un determinado método (decidir qué se necesita: MKMapViewDelegate)
Esta es una gran respuesta. – sudo
¡excelente respuesta! ¡muchas gracias! – Andres
'centerCoordinate.latitude + region.span.latitudeDelta' tiene que ser' centerCoordinate.latitude + region.span.latitudeDelta/2' para obtener el radio correcto. –