iPhone aktuální poloha uživatel souřadnic zobrazující as (0,0)

hlasů
8

Snažím se dostat uživatelům aktuální zeměpisné šířky a délky s touto metodou viewDidLoad. Výsledná mapa je správně označující aktuální polohu však NSLog důsledně ukazuje:

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

Každý, kdo vědí, co jsem zde chybí? Předem děkujeme za vaši pomoc!

- (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);
}
Položena 19/09/2009 v 21:50
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
9

Mapa nebude snažit získat polohu uživatele, dokud je to ve skutečnosti zobrazeny, pokud je mi známo. Dobrý test, který je, když se vám dialogové okno s dotazem, zda je to v pořádku pro aplikaci získat umístění uživatele? Z vlastní zkušenosti vím, že má vždy přijít až poté, co se mapa zobrazí na obrazovce.

Nejlepší způsob, jak přistupovat k tomuto problému, pokud musíte mít místo na startu, je zavedení klasické jádra Místo handler kód a získat od místa, které se původně počítalo. Můžete zastavit příjem aktualizací z kdysi mapa bude schopen získat další změny odtamtud (i když, pokud budete potřebovat neustálé aktualizace, které jsou na tom lépe jen souladu se standardními aktualizace jádra umístění. Pokud si myslíte o tom, když máte „ukazuje uživateli location“povoleno v mapovém dalšímu využití jádra místě u vaší aplikace je v podstatě volný, protože GPS bude vyhozen až po celou dobu stejně.

Odpovězeno 20/09/2009 v 03:05
zdroj uživatelem

hlasů
4

Pokusíte-li se dostat uživatelských souřadnic v viewDidLoad metodu (), bude to vždy dát 0,0 výsledek, protože to ještě není inicializován.

Měli byste se podívat na „Kde jsem“ ukázkový kód formuláře Apple site. To vysvětluje, co budete potřebovat. Musíte použít CLLocationManager třídu. Dále budete potřebovat metodu

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

Tato metoda se nazývá automaticky pokaždé, když se na zjišťování polohy uživatelů aktualizovány. Pokud používáte simulátor, pak se tato metoda bude volána pouze jednou a vrátí nějaké implicitní souřadnic.

Doufám, že to pomůže.

Odpovězeno 21/09/2009 v 06:36
zdroj uživatelem

hlasů
2

Z dokumentu o CLLocation , v případě, že horizontální nebo vertikální přesnost přesnost je negativní, to znamená, že nemůže najít hodnotu. Domnívám se, že to, co se tady děje. Mějte na paměti, že pokud stačí se podívat jednou, může se vám přibližnou posledního známého místa, než kdy jindy zlepšení výsledku přesnost.

Horizontální Přesnost šířky koordinovat je a délky určit střed kruhu a tato hodnota udává poloměr tohoto kruhu. Záporná hodnota znamená, že šířka a délka koordinovat je neplatná.

Odpovězeno 19/09/2009 v 21:55
zdroj uživatelem

hlasů
1

Jako Kendall řečeno, MKMapView nemá polohu uživatele, až se dokončí načítání, a způsob viewDidLoad bývá příliš brzy na to požádají. Jednodušší způsob, než pomocí CoreLocation je implementovat metodu MKMapViewDelegate -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation. To vám dá polohu uživatele, jakmile se nachází, aniž by museli vypořádat s CLLocationManager.

Odpovězeno 08/01/2013 v 18:33
zdroj uživatelem

hlasů
1

Ty by měly dostat souřadnici z CoreLocation místo MapKit. MapView bude zobrazovat polohu uživatele poté, co to vlastně dostal aktuální polohu. Před aktuální poloha vozidla určuje, zeměpisné šířky a délky jsou obě nastavena na hodnotu 0. 3

Měli byste vytvořit CLLocationManager instace, nastavte delegáta. Budete upozorněni, když je lokalita určena.

Odpovězeno 20/09/2009 v 06:17
zdroj uživatelem

hlasů
0

Zkuste to v

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

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

ViewdidAppear: nebo volejte provést seletor po zpoždění

Odpovězeno 05/05/2014 v 12:32
zdroj uživatelem

hlasů
0

Tato odpověď vysvětluje, jak nastavit zobrazení mapy s polohou uživatele:

HowTo inicializovat MKMapView s dané lokalitě uživatele?

Odpovězeno 09/03/2010 v 16:52
zdroj uživatelem

hlasů
-1

Přidat na svou část viewDidLoad

mapView.showsUserLocation = YES;
Odpovězeno 02/05/2010 v 05:56
zdroj uživatelem

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