Domanda

Aaaarg ... ok, calmiamoci.

Qualcuno ha avuto problemi con l'impostazione dell'area di un MKMapView? Non ha mai funzionato con me.

Questo codice:

-(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);
}

Restituisce quel 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

Sai perché ??!

Grazie mille, puoi salvarmi dall'uccidermi X (

Mart

EDIT: ovviamente, sono sul dispositivo, connesso a Internet.

È stato utile?

Soluzione

Non capisco esattamente i registri precedenti, ma so dov'era il mio errore.

L'MKMapView istanziato non è stato inizializzato con un frame, ma con un autoresizingMask impostato su > 0.

Quando è stato chiamato il metodo setRegion, la mia vista non era ancora inquadrata. Penso che i valori della regione siano calcolati in base al frame della vista, quindi questi valori non sono stati trovati.

Basta impostare il frame prima di eseguire un setRegion e verrà visualizzato normalmente.

Ciao!

Altri suggerimenti

Il tuo primo registro utilizza self.region.center.latitude , ma non vedo che da nessuna parte nella tua chiamata a MKCoordinateRegionMake . Il registro ti dice che qualunque cosa tu stia usando per impostare la regione da impostare, ha un lat / long di 0/0 ...

L'impostazione della maschera di ridimensionamento automatico mi ha aiutato.

[_mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top