2012-03-08 17 views
11

Mam widok mapView na moim widoku (MKMapViewDelegate) z włączoną opcją "Pokazuje lokalizację użytkownika".Lokalizacja użytkownika MKMapView pokazująca 0,0 w symulatorze?

W viewDidLoad dla tego kontrolera mam

CLLocation *userLoc = mapView.userLocation.location; 
CLLocationCoordinate2D userCoordinate = userLoc.coordinate; 
NSLog(@"user latitude = %f",userCoordinate.latitude); 
NSLog(@"user longitude = %f",userCoordinate.longitude); 
mapView.delegate=self; 

Symulator pokazuje prawidłową lokalizację użytkownika na mapie (używam niestandardowej lokalizacji w IOS Simulator)

Ale NSLog pokazuje 0 i 0 dla szerokości i długości geograficznej.

Czy nie powinienem być w stanie uzyskać niestandardowej długości i szerokości geograficznej w symulatorze?

aktualizacja o odpowiedź:

potrzebnych do realizacji

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

Odpowiedz

13

Usługi lokalizacyjne nie są natychmiastowe. Twój kod jest w viewDidLoad, więc nie miałeś jeszcze szansy na poprawienie twojej pozycji. Powinieneś ustawić właściwość delegate dla widoku mapy na obiekt implementujący protokół MKMapViewDelegate.

+0

Czy możesz podać przykładowy kod? Ustawiłem delegata mapy na siebie w powyższym kodzie? Chciałbym, aby lokalizacja początkowego powiększenia mapy była oparta na bieżącej lokalizacji użytkownika – sayguh

+1

Czy zaimplementowałeś jakąś metodę 'MKMapViewDelegate'? Ustawienie delegata nic nie da, chyba że zastosujesz zdefiniowane przez niego metody. W centrum programistów znajduje się kilka przykładowych projektów map. Czy spojrzałeś na nich? – Jim

+0

Nie można znaleźć przykładowego kodu w witrynie Apple. Chciałbym znaleźć przykładowy projekt, który to robi – sayguh

0
MKMapView *mapview=[[MKMapView alloc]initWithFrame:CGRectMake(0,0,300, 364)]; 
mapview.delegate=self; 
mapview.showsUserLocation=YES; 

Który następnie wywoła delegata mapy, w delegacji mak kit spróbuj wydrukować współrzędne. NSLog (@ "user latitude =% f", userLocation.location.coordinate.latitude); NSLog (@ "długość użytkownika =% f", userLocation.Location.coordinate.longitude);

1

Musiałem ustawić lokalizację w symulatorze, poprzez Debugowanie> Lokalizacja. Został ustawiony na None, co rzuciło mnie w (0 °, 0 °) i nigdy nie zaktualizowano; można ustawić niestandardową lokalizację lub wybrać inne symulowane skrypty lokalizacji, które automatycznie przesuwają lokalizację użytkownika w czasie.

Powiązane problemy