Ako zobrazím polohu používateľa v zobrazení MapView, keď nespúšťam GPS, aby som aktualizoval polohu (vôbec)? vôľa
mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;
plní úlohu alebo bude GPS stále horieť batériu na pozadí?
Vďaka :)
odpovede:
5 pre odpoveď č. 1Pokúsim sa odpovedať na vašu otázku čo najlepšie, ako môžem poskytnúť obmedzené informácie.
GPS má 3 hlavné režimy, ktoré prechádzajú z malého výkonu na vysoký výkon, nízkej presnosti a vysokej presnosti.
- Sledovanie polohy je vypnuté
- Aktualizácia polohy na pozadí (používa bunkové veže a wifi)
- Aktualizácia polohy GPS
E MKMapView
Ak nastavíte, bude sa zobrazovať modrá bodka pre polohu používateľa showsUserLocation
na YES
, MKMapView
použije všetky dostupné metódy určovania polohy na nájdenie polohy používateľov čo najpresnejšie a bude ju aktualizovať, zatiaľ čo je nastavená na ÁNO.
Sledovanie v MKMapView
, režim, ktorý udržuje polohu používateľa na strede obrazovky, posúva viditeľnú oblasť mapy pri pohybe používateľa a je k dispozícii v systéme iOS5. dostali ste tri MKUserTrackingMode
z čoho vyberať. Z dokumentov:
MKUserTrackingModeNone: Mapa nesleduje umiestnenie používateľa.
MKUserTrackingModeFollow: Mapa sleduje umiestnenie používateľa.
MKUserTrackingModeFollowWithHeading: Mapa sleduje umiestnenie používateľa a otáča sa, keď sa nadpis zmení.
Takže nastavenie na kCLLocationAccuracyNearestTenMeters
nebude fungovať, pretože v tomto kontexte nie je k dispozícii.
Ukáže umiestnenie na mieste spálenie batérie na pozadí? Závisí to od toho, čo máte na mysli na pozadí. Keď používateľ klepne na tlačidlo Domov, MKMapView
je nútený prestať systém GPS používať. Kým je aplikácia spustená a MKMapView je nažive a má showsUserLocation
vlastnosť nastavená na YES
na aktualizáciu polohy bude naďalej používať všetku dostupnú metódu vrátane GPS. Máte na to niekoľko stratégií.
1) predpokladajte, že používateľ musí vidieť svoju polohu aktualizovanú, zatiaľ čo je mapa na obrazovke. V takom prípade majte na pamäti showsUserLocation
nastavte na ÁNO, kým sa mapa nepresunie mimo obrazovku alebo kým sa zariadenie nezablokuje, a potom ho nastavte NO
2) Predpokladajme, že používateľ musí vidieť iba statickú značku svojej polohy z určitého časového obdobia, napríklad pri otvorení aplikácie. V tomto prípade musíte urobiť CLLocationManager
namietať startUpdatingLocation
, filtrujte správy delegáta na požadovanú presnosť a potom vypnite aktualizácie polohy (stopUpdatingLocation
). Potom môžete pridať znak MKAnnotation
na MKMapView
aby sa používateľovi zobrazila jeho poloha.
Ako vidíte, číslo 2 je viac práce, ale veľmienergeticky efektívne. Číslo 1 je jednoduché, ale keď je mapa viditeľná, použije viac batérie. Je na vás, aby ste sa rozhodli, aké správanie používateľ očakáva, a podľa toho implementovali svoju aplikáciu.