MkMapView: SetRegion funktioniert nicht!
-
07-07-2019 - |
Frage
Aaaarg ... ok, lass uns beruhigen.
Hatte jemand ein Problem damit, die Region eines Mkmapviews festzulegen? Es hat nie mit mir funktioniert.
Dieser Code:
-(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);
}
Gibt das Protokoll zurück:
30.145127, -40.078125 - 0.000000, 0.000000
0.000000, 0.000000 - 0.500000, 0.500000
0.000000, 0.000000 - 0.000000, 0.000000
Weißt du, warum ??!
Vielen Dank, Sie können mich vor dem Töten von mir x (
Mart
Bearbeiten: Natürlich bin ich auf dem Gerät, verbunden mit dem Internet.
Lösung
Ich verstehe die vorherigen Protokolle nicht genau, aber ich weiß, wo mein Fehler war.
Die mkmapview wurde nicht mit einem Rahmen initialisiert, sondern mit einer autorisierenden Maske auf> 0.
Als die SetRegion -Methode aufgerufen wurde, wurde meine Ansicht noch nicht gerahmt. Ich denke, die Regionwerte werden gemäß dem Ansichtsrahmen berechnet, sodass diese Werte nicht gefunden werden konnten.
Stellen Sie den Rahmen einfach vor, bevor Sie ein SetRegion durchführen, und er würde normal angezeigt.
Wiedersehen !
Andere Tipps
Ihr erstes Protokoll verwendet self.region.center.latitude
, aber ich sehe das nirgendwo in deinem Anruf dazu MKCoordinateRegionMake
. Das Protokoll sagt Ihnen, dass alles, was Sie verwenden, um die Region zu setzen, eine LAT/Long von 0/0 hat ...
Das Einstellen der Autorisierungsmaske hat mir geholfen.
[_mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];