2011-01-06 4 views
0

Ich habe eine Mapview, die, wenn mit seinem View-Controller auf den Bildschirm geschoben zeigt den Speicherort eines Benutzer und einige andere benutzerdefinierte Anmerkungen. Wenn der View-Controller zum Anzeigen gedrückt wird, ruft er eine Funktion auf - (void) adduserLocation, die den Standort des Benutzers anzeigt.iPhone - Benutzerstandort nicht angezeigt, wenn mit CLLocation Manager auf iOS 3.x aktualisiert

Ich habe auch eine Schaltfläche zum Aktualisieren, die auch ruft - (void) adduserLocation und aktualisiert alle Anmerkungen und den Benutzerstandort, aber wenn die Schaltfläche Aktualisieren gedrückt wird der Benutzer Standort nicht auf der Karte angezeigt, obwohl alle gleich Rückrufe und Updates registriert werden (kann ich sehen, dass der Standort des Nutzers empfangen wird und alle notwendigen Rückrufe werden gemacht)

ich verwende:

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation { 

if ([annotation isKindOfClass:[MKUserLocation class]]) 
    return nil; //for some reason this is only being returned when the view is pushed and the get 
       //location method is called but not when the same location method is called  
       //while the view already exists. 

} 

und:

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

     NSLog(@"User location: %f, %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude); 
     currentRegionLat = newLocation.coordinate.latitude; 
     currentRegionLng = newLocation.coordinate.longitude; 
     CLLocationCoordinate2D coord = {latitude: newLocation.coordinate.latitude, longitude: newLocation.coordinate.longitude}; 
     MKCoordinateSpan span = {latitudeDelta: 0.006, longitudeDelta: 0.006}; 
     MKCoordinateRegion region = {coord, span}; 
     [mView setRegion:region]; 
     [self getCardsInLocationLat:newLocation.coordinate.latitude andLng:newLocation.coordinate.longitude]; //this is a function which sets the annotations 

}

Ich habe keine Ahnung, was ich falsch machen könnte. Bitte helfen Sie. Vielen Dank.

* UPDATE ** Ich habe es geschafft, die Quelle des Problems und Arbeit um es zu finden: Das Problem war, dass ich auf der Karte alle Anmerkungen wurde zu entfernen, bevor eine Standortaktualisierung tun und für aus irgendeinem Grund wurde die Annotation für den Benutzerstandort nicht hinzugefügt. Also was ich getan habe, ist einfach nur alle nicht [MKUserLocation Klasse] Annotationen entfernen und links die Benutzerstandort Annotation. Dies löste mein Problem, aber ich denke immer noch, dass es entweder eine Art Apfelwanze gibt oder ich etwas falsch mache, was ich noch nicht sehen kann.

Antwort

1

Hey, warum stellst du nicht einfach die Eigenschaft, showsUserLocation, auf YES?

Auf diese Weise brauchen Sie sich keine Sorgen über die Aktualisierung des Standorts zu machen.

Wenn Sie es nicht zum Zwecke der Batterieschonung oder etwas anderes verwenden möchten, müssen wir wahrscheinlich mehr von Ihrem Code sehen. Der Code, den Sie haben, scheint nicht dort zu liegen, wo das Problem liegt. Haben Sie Fehler in der Konsole?

Verwandte Themen