iPhone huidige gebruikerslocatie coördinaten toont als (0,0)

stemmen
8

Ik ben op zoek naar de gebruikers krijgen de huidige lengte- en breedtegraad met dit viewDidLoad methode. De resulterende kaart juist die de huidige locatie maar de NSLog consequent toont:

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

Iedereen weet wat ik hier mis? Alvast bedankt voor uw hulp!

- (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);
}
De vraag is gesteld op 19/09/2009 om 21:50
bron van user
In andere talen...                            


8 antwoorden

stemmen
9

De kaart zal niet proberen om de gebruikers locatie totdat het daadwerkelijk wordt weergegeven, voor zover ik weet. Een goede test dat wil zeggen, wanneer denkt u het dialoogvenster waarin u wordt gevraagd of het goed is voor de app aan de gebruikers locatie te krijgen? In mijn ervaring dat is altijd komen pas na de kaart op het scherm verschijnt.

De beste manier om dit probleem aan te pakken als je een locatie bij het opstarten moet hebben, is de klassieke Core Location handler code uit te voeren en krijgt de locatie die in eerste instantie. U kunt het ontvangen van updates van daar zodra de kaart is en maak je verdere wijzigingen vanaf daar (hoewel als je constant updates moet je beter af alleen overeenstemming met de standaard Core Location updates. Als je erover nadenkt, als je bent "toont gebruiker location" ingeschakeld in de kaart verder gebruik van Core Location door uw app is in wezen vrij, omdat de GPS toch zal worden afgevuurd de hele tijd.

antwoordde op 20/09/2009 om 03:05
bron van user

stemmen
4

Als u probeert om de gebruiker coördinaten krijgen in viewDidLoad methode (), u krijgt altijd de 0,0 resultaat, omdat het nog niet is geïnitialiseerd.

Je moet een kijkje nemen op "Waar ben ik" sample code vorm Apple website. Hij legt uit wat je nodig hebt. Je moet gebruiken CLLocationManager klasse. U zult ook de methode nodig

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

Deze methode wordt automatisch elke keer als locatie van de gebruiker wordt bijgewerkt worden genoemd. Als u gebruik maakt simulator, dan is deze methode zal worden slechts een keer genoemd en het zal een aantal standaard coördinaten terug te keren.

Hoop dat het helpt.

antwoordde op 21/09/2009 om 06:36
bron van user

stemmen
2

Uit het document CLLocation , indien de horizontale of verticale nauwkeurigheid nauwkeurigheid negatief is, betekent dat het geen waarde zijn. Ik vermoed dat is wat hier gebeurt. Houd in gedachten dat als je gewoon een keer kijken, kan je een geschatte laatst bekende locatie te geven voordat ze het ooit de nauwkeurigheid resultaat te verbeteren.

Nauwkeurigheid De horizontale coördinaat breedtegraad en lengtegraad bepalen het middelpunt van de cirkel en deze waarde aan de straal van deze cirkel. Een negatieve waarde geeft aan dat de breedte- en lengtegraad coördinaten zijn ongeldig.

antwoordde op 19/09/2009 om 21:55
bron van user

stemmen
1

Zoals Kendall gezegd, heeft de MKMapView geen gebruikerslocatie totdat het is geladen en het viewDidLoad methode meestal te vroeg te verzoeken. Een eenvoudiger dan het gebruik CoreLocation is de MKMapViewDelegate werkwijze te implementeren -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation. Het zal u de locatie van de gebruiker zodra deze zich bevindt te geven, zonder dat te maken met een CLLocationManager.

antwoordde op 08/01/2013 om 18:33
bron van user

stemmen
1

U zou moeten krijgen het coördineren van CoreLocation plaats van MapKit. MapView zal locatie van de gebruiker wordt weergegeven nadat deze eigenlijk kregen huidige locatie. Voordat de locatie wordt vastgesteld, worden de breedte- en lengtegraad beide ingesteld op 0. 3

Je moet over een CLLocationManager instace, stelt afgevaardigde te creëren. U wordt verwittigd wanneer de locatie wordt bepaald.

antwoordde op 20/09/2009 om 06:17
bron van user

stemmen
0

Probeer deze in

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

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

ViewDidAppear: of bel voeren seletor na vertraging

antwoordde op 05/05/2014 om 12:32
bron van user

stemmen
0

Dit antwoord wordt uitgelegd hoe u een kaartweergave met een locatie van de gebruiker in te stellen:

HowTo initialiseren MKMapView met een bepaalde locatie van de gebruiker?

antwoordde op 09/03/2010 om 16:52
bron van user

stemmen
-1

Voeg dit toe aan uw viewDidLoad sectie

mapView.showsUserLocation = YES;
antwoordde op 02/05/2010 om 05:56
bron van user

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