2012-04-07 3 views
0

Stuck auf etwas sehr einfach, erst mit MKMapView gestartet und versuchen, es auf meinem Standort zu vergrößern.MKMapView - Center-Standort nicht aktualisiert, bringt mich in der Mitte des Ozeans?

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 
self.mapView.centerCoordinate = self.mapView.userLocation.location.coordinate; } 

scheint dieser Code nur funktioniert nicht sein, ich verstehe es in der Regel ein wenig Zeit in Anspruch nimmt, die Lage zu bekommen, und ich habe es für eine Weile mit jetzt Glück verlassen. Allerdings zeigt der Ort richtig, aber es zentriert sich nicht in dieser (es zentriert sich in der Mitte der Karte direkt vor Westafrika)

Ich habe auch den folgenden Code in ViewDidLoad, die als korrekt zu sein scheint zoomt auf die angegebene Höhe, nur nicht platzieren.

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.mapView.userLocation.coordinate, 20000, 20000); 
[self.mapView setRegion:region animated:YES]; 

mit mir bitte entblössen, wenn ich hier getan habe etwas horrend dumm, ich habe gerade erst begonnen!

Vielen Dank im Voraus.

EDIT: Es scheint jetzt am Simulator zu arbeiten, nachdem Sie ein- oder zweimal zurückgedrückt haben und dann wieder auf die Karte sehen. Aber es funktioniert immer noch nicht auf meinem iPhone ... Ich habe alle Standortdienste überprüft und sie scheinen alle eingeschaltet zu sein.

Antwort

0
self.mapView.centerCoordinate = self.mapView.userLocation.location.coordinate; 

Zentriert die Karte nicht auf den Benutzerstandort. (void)locationManager:didUpdateToLocation: fromLocation:

- (void)locationManager:(CLLocationManager *)manager 
     didUpdateToLocation:(CLLocation *)newLocation 
       fromLocation:(CLLocation *)oldLocation { 



    if(newLocation.horizontalAccuracy>0) 
    { 
    // set center of map (span will not be changed in this case) 
    [mymap setCenterCoordinate:newLocation.coordinate animated:YES]; 

    // or use region to specify both span and center 
    MKCoordinateRegion region.span.latitudeDelta = .05 ; 
     region.span.longitudeDelta = .05 ; 
     region.center.latitude = newLocation.coordinate.latitude ; 
     region.center.longitude = newLocation.coordinate.longitude ; 
      [mymap setRegion:region animated:TRUE]; 

    } 
    } 
+0

Nicht wahr, - (void) mapView: (MKMapView *) mapView didUpdateUserLocation: (MKUserLocation *) userLocation wird aufgerufen, wenn die Änderungen Benutzerposition. – RickJansen

1

Ich verwende den folgenden Code zu setzen Zentrum und Spanne gezeigt werden, in MapView - - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation nur erstes Mal, wenn das Gerät bekommt Benutzerstandort, bessere Nutzung genannt. Es sollte funktionieren.

MKCoordinateRegion region = {{0,0},{.5,.5}}; 
region.center.latitude = doubleLattitude; 
region.center.longitude = doubleLongitude; 
[mapView setRegion:region animated:YES]; 
1

Wenn ein MKMapView Zentren westlich von Gabun, ist es sehr wahrscheinlich, dass eines Ihrer Objekte Null ist und die so Koordinate 0 ° Breitengrad und Längengrad 0 °. Sie können es einfach testen, indem Sie im Debugger einen Haltepunkt setzen und Ihre Objekte analysieren.

enter image description here

Verwandte Themen