iPhone curent locația utilizatorului coordonatele arată ca (0,0)

voturi
8

Sunt încercarea de a obține utilizatorii latitudinii și longitudinii cu această metodă viewDidLoad. Harta rezultat este corect, indicând locația curentă, dar NSLog indică în mod consecvent:

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

Oricine știe ce sunt lipsesc aici? Multumesc anticipat pentru ajutor!

- (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);
}
Întrebat 19/09/2009 la 21:50
sursa de către utilizator
În alte limbi...                            


8 răspunsuri

voturi
9

Harta nu va încerca să obțină locația utilizatorului până când este afișat de fapt, în măsura în care știu. Un test bun, care este, atunci când o să primesc dialogul ce vă întreabă dacă este OK pentru aplicația pentru a obține locația utilizatorilor? În experiența mea, care a venit întotdeauna numai după ce harta afișează pe ecran.

Cel mai bun mod de a aborda această problemă, dacă trebuie să aveți o locație la pornire, este de a pune în aplicare codul clasic Locul de amplasare handler Core și a obține locația de la care inițial. Puteți opri primirea de actualizări de acolo o dată pe hartă este în sus și a obține modificări suplimentare de acolo (deși, dacă aveți nevoie de actualizări constante sunteți mai bine doar păstrarea cu standardul actualizări Core Localizare. Dacă te gândești la asta, când ai „arată utilizator locație“activat în harta utilizarea ulterioară a Core Locul de amplasare de către aplicația este în esență liber, deoarece GPS-ul va fi tras în sus tot timpul oricum.

Publicat 20/09/2009 la 03:05
sursa de către utilizator

voturi
4

Dacă încercați să obțineți utilizator coordonatele în viewDidLoad metoda (), acesta va da întotdeauna 0,0 rezultat, deoarece nu este încă inițializat.

Ar trebui să aruncăm o privire la „Unde sunt eu“ site - ul sub formă de cod de probă Apple. Aceasta explică de ce ai nevoie. Trebuie să utilizați CLLocationManager clasă. Veți avea nevoie , de asemenea , metoda

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

Această metodă va fi numit în mod automat de fiecare dată când utilizatorul este actualizată. Dacă utilizați simulator, atunci această metodă va fi numit doar o singură dată și va reveni unele coordonate implicite.

Sper ca ajuta.

Publicat 21/09/2009 la 06:36
sursa de către utilizator

voturi
2

Din documentul privind CLLocation , în cazul în care precizia pe orizontală sau pe verticală acuratețea este negativ, înseamnă că nu poate găsi o valoare. Bănuiesc că asta se întâmplă aici. Țineți cont de faptul că , dacă te uiți doar o dată, ea poate da o ultima locație aproximativă cunoscută înainte de a îmbunătăți vreodată rezultatul de precizie.

Precizia orizontală de coordonate de latitudine și longitudine identifică centrul cercului și această valoare indică raza cercului. O valoare negativă indică faptul că latitudinea și longitudinea de coordonate sunt invalide.

Publicat 19/09/2009 la 21:55
sursa de către utilizator

voturi
1

După cum Kendall a spus, MKMapView nu are o locație de utilizator până când se termină de încărcare, iar metoda viewDidLoad este , de obicei , prea devreme pentru a solicita. Un mod mai simplu decât utilizarea CoreLocation este de a pune în aplicare metoda MKMapViewDelegate -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation. Acesta vă va oferi locația utilizatorului de îndată ce se află, fără a fi nevoie de a face cu un CLLocationManager.

Publicat 08/01/2013 la 18:33
sursa de către utilizator

voturi
1

Ar trebui să obțineți coordonatei de la CoreLocation în loc de MapKit. MapView va afișa locația utilizatorului după ce a primit de fapt, locația actuală. Înainte de locația este determinată, latitudinea și longitudinea sunt setate la 0. 3

Ar trebui să creați un instace CLLocationManager, set delegat. Vei fi notificat atunci când locația este determinată.

Publicat 20/09/2009 la 06:17
sursa de către utilizator

voturi
0

Încercați acest lucru în

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

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

ViewdidAppear: sau sunați efectua seletor după întârziere

Publicat 05/05/2014 la 12:32
sursa de către utilizator

voturi
0

Acest răspuns explică modul în care să setați o vizualizare hartă cu locația utilizatorului:

HowTo inițializa MKMapView cu o locație anumit utilizator?

Publicat 09/03/2010 la 16:52
sursa de către utilizator

voturi
-1

Adăugați acest la secțiunea viewDidLoad

mapView.showsUserLocation = YES;
Publicat 02/05/2010 la 05:56
sursa de către utilizator

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