iPhone nåværende bruker plassering koordinater som viser som (0,0)

stemmer
8

Jeg prøver å få brukerne gjeldende lengde- og breddegrad med denne viewDidLoad metoden. Den resulterende kartet er riktig indikerer nåværende plassering men NSLog viser konsekvent:

2009-09-19 16:45:29.765 Mapper[671:207] user latitude = 0.000000
2009-09-19 16:45:29.772 Mapper[671:207] user longitude = 0.000000

Noen som vet hva jeg mangler her? Takk på forhånd for hjelpen!

- (void)viewDidLoad {
    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setShowsUserLocation:YES];

    CLLocation *userLoc = mapView.userLocation.location;
    CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

    NSLog(@user latitude = %f,userCoordinate.latitude);
    NSLog(@user longitude = %f,userCoordinate.longitude);
}
Publisert på 19/09/2009 klokken 20:50
kilden bruker
På andre språk...                            


8 svar

stemmer
9

Kartet vil ikke prøve å få brukerne stedet før det er faktisk vises, så vidt jeg vet. En god test av det er, når du får dialogboksen som spør om det er OK for app for å få brukerne sted? I min erfaring som alltid har kommet opp først etter Kartet viser på skjermen.

Den beste måten å nærme seg dette problemet hvis du må ha en plassering ved oppstart, er å implementere den klassiske kjerne Sted handler kode og få plasseringen fra det utgangspunktet. Du kan slutte å motta oppdateringer fra det når kartet er opp og komme ytterligere endringer derfra (men hvis du trenger stadige oppdateringer du er bedre å bare holde med standard kjerne Beliggenhet oppdateringer. Hvis du tenker på det, når du har ", viser bruker location" aktivert av din app kartet videre bruk av Core-plassering er i hovedsak gratis da GPS vil bli skutt opp hele tiden uansett.

Svarte 20/09/2009 kl. 02:05
kilden bruker

stemmer
4

Hvis du prøver å få bruker koordinater i viewDidLoad () metoden, vil det alltid gi 0,0 resultat, fordi det ennå ikke er initialisert.

Du bør ta en titt på "Hvor er jeg" sample kodeform Apple nettstedet. Den forklarer hva du trenger. Du må bruke CLLocationManager klasse. Du må også metoden

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

Denne metoden vil bli kalt automatisk hver gang når brukeren plassering er oppdatert. Hvis du bruker simulator, så denne metoden vil bli kalt bare én gang, og det vil returnere noen standard koordinater.

Håper det hjelper.

Svarte 21/09/2009 kl. 05:36
kilden bruker

stemmer
2

Fra dokumentet på CLLocation , hvis den horisontale nøyaktigheten eller vertikal nøyaktighet er negativ, betyr det at det ikke kan finne en verdi. Jeg mistenker det er det som skjer her. Husk at hvis du bare ser en gang, kan det gi deg en omtrentlig siste kjente posisjon før noensinne å forbedre nøyaktigheten resultat.

Horisontal Nøyaktighet koordinere breddegrad og lengdegrad identifisere sentrum av sirkelen og denne verdien angir radien i denne sirkelen. En negativ verdi indikerer at koordinere breddegrad og lengdegrad er ugyldig.

Svarte 19/09/2009 kl. 20:55
kilden bruker

stemmer
1

Som Kendall sa, ikke MKMapView ikke har en bruker stedet til den er ferdig lasting, og viewDidLoad metoden er vanligvis for tidlig å be om det. En enklere måte enn å bruke CoreLocation er å implementere MKMapViewDelegate metoden -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation. Det vil gi deg brukerens posisjon så snart den er plassert, uten å måtte forholde seg til en CLLocationManager.

Svarte 08/01/2013 kl. 17:33
kilden bruker

stemmer
1

Du bør få koordinere fra CoreLocation stedet for MapKit. MapView vil vise hvor brukeren befinner seg etter at det fikk faktisk nåværende plassering. Før plassering er bestemt, blir den breddegrad og lengdegrad begge satt til 0. 3

Du bør lage en CLLocationManager forekomst, satt delegat. Du vil bli varslet når plasseringen er bestemt.

Svarte 20/09/2009 kl. 05:17
kilden bruker

stemmer
0

Prøv dette i

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude);

ViewdidAppear: eller ring utføre seletor etter forsinkelse

Svarte 05/05/2014 kl. 11:32
kilden bruker

stemmer
0

Dette svaret forklarer hvordan du setter et kartutsnitt med et brukersted:

HowTo initial MKMapView med en gitt bruker sted?

Svarte 09/03/2010 kl. 15:52
kilden bruker

stemmer
-1

Legg dette til din viewDidLoad seksjon

mapView.showsUserLocation = YES;
Svarte 02/05/2010 kl. 04:56
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more