Para configurar una consulta a un servidor externo, quiero obtener los límites de la vista de mapa actual en una aplicación de iPhone que estoy construyendo. UIView debe responder a los límites, pero parece que MKMapView no lo hace. Después de establecer una región y hacer zoom en el mapa, intento obtener los límites. Estoy atascado en el primer paso, que es tratar de obtener los CGPoints que representan las esquinas SE y NW del mapa. Después de eso iba a usar:Obtener los límites de un MKMapView
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view
Para transformar los puntos en coordenadas del mapa. Pero no puedo ni siquiera llegar tan lejos ...
//Recenter and zoom map in on search location
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[self.mapView setRegion:region animated:YES];
//After the new search location has been added to the map, and the map zoomed, we need to update the search bounds
//First we need to calculate the corners of the map
CGPoint se = CGPointMake(self.mapView.bounds.origin.x, mapView.bounds.origin.y);
CGPoint nw = CGPointMake((self.mapView.bounds.origin.x + mapView.bounds.size.width), (mapView.bounds.origin.y + mapView.bounds.size.height));
NSLog(@"points are: se %@, nw %@", se, nw);
El código se compila sin advertencias sin embargo se y nw son ambos nulos. Al mirar a self.mapView.bounds.origin.x, la variable es 0. Intentar con NSLog directamente self.mapView.bounds.size.width me da una "Señal de programa recibida:" EXC_BAD_ACCESS "." que parece provenir de NSLog.
¿Alguien sabe la manera correcta de obtener la esquina sureste y la esquina noroeste (en las coordenadas del mapa) desde el área visible de un MKMapView?
EDIT: Parece que cada vez que preguntas algo aquí la respuesta viene a ti justo después. Estaba usando% @ en lugar de @f para imprimir cada variable en NSLog que estaba arrojando errores allí. También descubrí la propiedad annotationVisibleRect de MKMapview. Sin embargo, parece que el annotationVisibleRect se basa en las coordenadas de vista principal.
Además, en lugar de calcular la coordenadas X e Y sí mismo que puede utilizar las funciones de confort 'MKMapRectGetMaxX (mRect)' (y similares). – neilkimmett
Vale la pena señalar que visibleMapRect es fiel a su nombre y solo devuelve la parte visible del mapa. En nuestra aplicación, tenemos una UIView deslizable que viene sobre MapView cuando se selecciona un elemento. Cuando esto sale, visibleMapRect solo devuelve la parte del mapa que todavía está visible. En nuestra instancia, necesitábamos todos los límites, por lo que la solución @deadroxy funcionó mejor para nosotros. – joneswah
@joneswah me alegro de que esta solución todavía sea un clásico:] ¡gracias! – deadroxy