Pregunta

Aaaarg ... ok, vamos a calmarme.

¿Alguien tuvo algún problema al configurar la región de un MKMapView? Nunca funcionó conmigo.

Este código:

-(void)setUserCenteredSpan:(MKCoordinateSpan)span{ // for this example, span = {0.5, 0.5}
    // Current region (just initialised)
NSLog(@"%f, %f - %f, %f",   self.region.center.latitude,
                            self.region.center.longitude, 
                            self.region.span.latitudeDelta, 
                            self.region.span.longitudeDelta);
    // New Region
MKCoordinateRegion region = MKCoordinateRegionMake([[[self userLocation] location] coordinate],
                                                   span);
NSLog(@"%f, %f - %f, %f",   region.center.latitude,
                            region.center.longitude, 
                            region.span.latitudeDelta, 
                            region.span.longitudeDelta);
    // Region saved in MKMapView
[self setRegion:region animated:NO];
NSLog(@"%f, %f - %f, %f",   self.region.center.latitude,
                            self.region.center.longitude, 
                            self.region.span.latitudeDelta, 
                            self.region.span.longitudeDelta);
}

Devuelve ese registro:

30.145127, -40.078125 - 0.000000, 0.000000
0.000000, 0.000000 - 0.500000, 0.500000
0.000000, 0.000000 - 0.000000, 0.000000

¿Sabes por qué?

Muchas gracias, puedes salvarme de matarme X (

Mart

EDITAR: Por supuesto, estoy en el dispositivo, conectado a internet.

¿Fue útil?

Solución

No entiendo exactamente los registros anteriores, pero sé dónde estuvo mi error.

El MKMapView instancied no se inicializó con un marco, sino con un autoresizingMask configurado en > 0.

Cuando se llamó al método setRegion, mi vista aún no estaba enmarcada. Creo que los valores de la región se calculan de acuerdo con el marco de la vista, por lo que estos valores no se pudieron encontrar.

Simplemente configure el marco antes de hacer una setRegion, y se mostrará normalmente.

¡Adiós!

Otros consejos

Su primer registro usa self.region.center.latitude , pero no lo veo en ninguna parte de su llamada a MKCoordinateRegionMake . El registro le dice que lo que sea que esté utilizando para establecer la región, tiene un lat / long de 0/0 ...

La configuración de la máscara de redimensionamiento automático me ayudó.

[_mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];   
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top