GPS a lokalizační služby v mobilních aplikacích — co to je, způsoby získávání souřadnic

Autor: IT Sectr Publikováno: 2026-03-22 Doba čtení: 8 min

GPS a lokalizační služby v mobilních aplikacích — jsou API pro určení fyzické polohy zařízení pomocí satelitů, Wi-Fi a mobilních sítí. Podle Google Android Location Guide (2025) více než 60% mobilních aplikací využívá údaje o poloze pro personalizaci obsahu. Fused Location Provider na Androidu kombinuje několik zdrojů pro zvýšení přesnosti a snížení spotřeby energie.

Hlavní body

  • GPS — globální satelitní navigační systém, poskytující přesnost až 3-5 metrů na otevřeném prostranství.
  • Lokalizační služby na Androidu a iOS poskytují API pro získávání souřadnic přes GPS, Wi-Fi a mobilní vysílače.
  • FusedLocationProviderClient na Androidu kombinuje GPS, Wi-Fi a senzory pro optimální rovnováhu přesnosti a spotřeby energie.
  • CLLocationManager na iOS spravuje požadavky na geolokaci s nastavením přesnosti a režimem na pozadí.
  • Oprávnění pro geolokaci se dělí na „při použití“ a „vždy“ — druhé vyžaduje dodatečné odůvodnění.

Co je GPS a lokalizační služby

GPS (Global Positioning System) — je satelitní navigační systém tvořený 31 aktivními satelity na oběžné dráze ve výšce přibližně 20 200 km. Na mobilních zařízeních GPS čip přijímá signály ze satelitů a vypočítává souřadnice na základě trilaterace — měření doby šíření signálu z několika satelitů. Lokalizační služby v mobilních operačních systémech přidávají k GPS data z Wi-Fi přístupových bodů a mobilních vysílačů pro urychlení určování souřadnic (A-GPS) a zlepšení přesnosti uvnitř budov. Podle údajů GPS.gov (2024) je přesnost civilního GPS 3-5 metrů na jasné obloze a až 15 metrů v podmínkách husté zástavby.

Další satelitní systémy

Moderní mobilní zařízení podporují nejen americký systém GPS, ale i další globální navigační systémy: ruský GLONASS (24 satelitů), evropský Galileo (28 satelitů) a čínský BeiDou. Současná podpora více systémů zvyšuje přesnost a rychlost určování souřadnic — zařízení může pro výpočet polohy využít až 40 satelitů z různých systémů. Na iOS a Androidu probíhá výběr satelitního systému automaticky na úrovni hardwarového čipu, vývojář to nemusí řídit.

Jak funguje určování polohy

Proces určování polohy na mobilním zařízení se skládá z několika fází: sběr dat ze zdrojů (satelity, Wi-Fi, mobilní sítě), filtrování a korekce chyb, výpočet souřadnic a předání výsledku aplikaci. Operační systém řídí tento proces prostřednictvím jednotné geolokační služby, která optimalizuje práci všech zdrojů pro úsporu baterie. Níže jsou popsány tři hlavní zdroje údajů o poloze.

GPS a satelitní navigace

Satelitní navigace poskytuje maximální přesnost (3-5 metrů), ale vyžaduje přímý výhled na oblohu. Uvnitř budov nebo v husté městské zástavbě může být GPS signál zeslaben nebo zcela ztracen. Doba prvního určení polohy (TTFF) je 30-60 sekund při studeném startu a 5-10 sekund při teplém startu. A-GPS (Assisted GPS) urychluje start stažením efemerid satelitů přes internet místo čekání na data ze satelitů.

Určování polohy přes Wi-Fi a mobilní vysílače

Wi-Fi polohování využívá databázi MAC adres přístupových bodů se známými souřadnicemi. Přesnost je 10-50 metrů v dosahu Wi-Fi. Mobilní vysílače poskytují přesnost od 100 metrů do několika kilometrů v závislosti na hustotě vysílačů. Kombinace všech zdrojů (Fused Location) umožňuje získat souřadnice s rozumnou přesností při minimální spotřebě energie — zejména když je GPS čip vypnutý nebo satelitní signál není dostupný.

Poskytovatelé geolokace na Androidu a iOS

Na obou platformách jsou lokalizační služby implementovány prostřednictvím systémových API s různou úrovní abstrakce. Android používá FusedLocationProviderClient z Google Play Services, iOS — CLLocationManager z Core Location. Obě API umožňují požádat o jednorázovou polohu nebo se přihlásit k pravidelným aktualizacím. Níže je uveden příklad získávání souřadnic na Androidu pomocí Fused Location Provider v Kotlinu.

Získávání souřadnic na Androidu

kotlin
val fusedClient = LocationServices.getFusedLocationProviderClient(this)

val locationRequest = LocationRequest.Builder(
    Priority.PRIORITY_HIGH_ACCURACY
)
.setIntervalMillis(5000)
.setMinUpdateIntervalMillis(2000)
.build()

val locationCallback = object : LocationCallback() {
    override fun onLocationResult(result: LocationResult) {
        result.lastLocation?.let { location ->
            Log.d("Poloha", "Lat: ${location.latitude}, Lng: ${location.longitude}")
        }
    }
}

if (checkLocationPermission()) {
    fusedClient.requestLocationUpdates(
        locationRequest, locationCallback,
        Looper.getMainLooper()
    )
}

V příkladu je LocationRequest nakonfigurován s prioritou HIGH_ACCURACY — to zapíná GPS pro maximální přesnost. setIntervalMillis nastavuje požadovaný interval aktualizace (5 sekund), setMinUpdateIntervalMillis — minimální interval (2 sekundy). Callback onLocationResult je volán pokaždé, když systém obdrží nové souřadnice. Před voláním requestLocationUpdates je důležité zkontrolovat oprávnění — jinak aplikace spadne s výjimkou SecurityException.

Získávání souřadnic na iOS

swift
import CoreLocation

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()

// MARK: - CLLocationManagerDelegate
func locationManager(
    _ manager: CLLocationManager,
    didUpdateLocations locations: [CLLocation]
) {
    guard let location = locations.last else { return }
    print("Location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}

Na iOS desiredAccuracy určuje přesnost požadavku: kCLLocationAccuracyBest využívá všechny dostupné zdroje (GPS + Wi-Fi + mobilní sítě). Po požádání o oprávnění pomocí requestWhenUseAuthorization systém zobrazí uživateli dialog. Delegát didUpdateLocations obdrží pole objektů CLLocation se souřadnicemi, nadmořskou výškou, rychlostí a směrem. Pro zastavení aktualizací se volá stopUpdatingLocation pro úsporu baterie.

Žádost o oprávnění k geolokaci

Přístup k geolokaci vyžaduje výslovné povolení uživatele na obou platformách. Na Androidu se používají oprávnění ACCESS_FINE_LOCATION (GPS) a ACCESS_COARSE_LOCATION (Wi-Fi/mobilní sítě). Od Androidu 10 vyžaduje přístup na pozadí samostatné oprávnění ACCESS_BACKGROUND_LOCATION. Na iOS jsou k dispozici tři úrovně: requestWhenInUseAuthorization (pouze při aktivní aplikaci), requestAlwaysAuthorization (na pozadí) a časová razítka pro přesné polohování. Apple vyžaduje povinný popis v Info.plist: NSLocationWhenInUseUsageDescription nebo NSLocationAlwaysAndWhenInUseUsageDescription. Bez těchto klíčů je žádost o oprávnění ignorována.

Optimalizace spotřeby energie

Nepřetržité používání GPS výrazně snižuje výdrž baterie — až o 30% za hodinu nepřetržitého provozu na maximální přesnost. Pro optimalizaci spotřeby energie se doporučuje používat geolokaci pouze když je to nutné a zastavit aktualizace při přechodu aplikace na pozadí. Na Androidu FusedLocationProviderClient automaticky přepíná mezi GPS a síťovými zdroji v závislosti na dostupnosti a prioritě požadavku. Na iOS používejte significant-change location service (startMonitoringSignificantLocationChanges) pro aktualizace s minimální spotřebou energie — přesnost je nižší (až 500 metrů), ale baterie se téměř nespotřebovává. Také praktikujte dávkové zpracování: sbírejte souřadnice v intervalu 5-10 minut a odesílejte na server jedním požadavkem přes WorkManager na Androidu nebo BGTaskScheduler na iOS. Snížení frekvence požadavků z 1 sekundy na 30 sekund snižuje spotřebu energie geolokace o 85%.

Scénáře použití geolokace

Geolokace se používá v širokém spektru mobilních aplikací: od navigátorů až po doručovací služby. Nejčastější scénáře zahrnují zobrazení uživatele na mapě, geotargeting reklamy, sledování kurýrů, geofence pro push notifikace a sledování fitness aktivit. Každý scénář vyžaduje vlastní přístup k přesnosti a frekvenci aktualizací. Níže je uvedena tabulka s doporučeními konfigurace pro různé typy aplikací.

Typ aplikacePřesnostIntervalRežim na pozadí
NavigátorHIGH (GPS)1-2 sAno
DoručováníBALANCED (GPS+Wi-Fi)10-30 sAno
PočasíLOW (Wi-Fi/mobilní sítě)JednorázověNe
Sociální síťBALANCEDPři otevřeníNe
FitnessHIGH (GPS)5-10 sAno

Při navrhování geolokační funkcionality je důležité zvážit, že uživatelé mohou kdykoli odvolat oprávnění prostřednictvím nastavení systému. Aplikace by měla správně zpracovávat situaci, kdy geolokace není k dispozici, a zobrazit srozumitelné vysvětlení, proč je funkcionalita omezena.

Geofencing

Geofencing — technologie vytváření virtuálních hranic na mapě, při jejichž překročení aplikace obdrží oznámení. Na Androidu jsou geofence implementovány prostřednictvím GeofencingClient z Google Play Services, na iOS — prostřednictvím CLCircularRegion z Core Location. Při vstupu nebo výstupu ze zóny systém probudí aplikaci a odešle událost, i když je aplikace zavřená nebo minimalizovaná. To se používá pro push notifikace při přiblížení k obchodu, připomínky úkolů na základě polohy a automatizaci IoT zařízení. Maximální počet geofence je omezen: na Androidu — 100, na iOS — 20 současně. Minimální poloměr zóny je 50 metrů na obou platformách, jinak systém nemusí zareagovat kvůli nepřesnosti určování polohy. Při vstupu do zóny systém spustí Intent na Androidu nebo zavolá delegáta locationManager:didEnterRegion na iOS.

Často kladené dotazy

Co je GPS v mobilních zařízeních?

GPS v chytrém telefonu je vestavěný přijímač signálů satelitního navigačního systému, který určuje souřadnice s přesností 3-5 metrů. Na zařízeních jsou také k dispozici GLONASS, Galileo a BeiDou pro zvýšení přesnosti a rychlosti polohování.

Čím se liší GPS od lokalizačních služeb?

GPS je pouze satelitní metoda určování souřadnic. Lokalizační služby kombinují GPS, Wi-Fi polohování a data z mobilních vysílačů pro rychlejší a energeticky účinnější určování polohy, zejména uvnitř budov.

Jak požádat o oprávnění ke geolokaci na iOS?

Zavolejte requestWhenInUseAuthorization() nebo requestAlwaysAuthorization() na instanci CLLocationManager. Předem přidejte NSLocationWhenInUseUsageDescription do Info.plist s jasným textem důvodu použití geolokace.

Jak snížit spotřebu energie GPS v aplikaci?

Používejte FusedLocationProviderClient na Androidu a significant-change location service na iOS. Zvyšte interval mezi požadavky na 10-30 sekund, vypněte aktualizace, když je obrazovka vypnutá, a aplikujte dávkové odesílání souřadnic na server.

Lze získat geolokaci bez GPS?

Ano, bez GPS lze určit přibližnou polohu pomocí Wi-Fi přístupových bodů (přesnost 10-50 metrů) nebo mobilních vysílačů (přesnost 100-5000 metrů). Na Androidu se k tomu používá ACCESS_COARSE_LOCATION.

Shrnutí

  • GPS — satelitní navigační systém s přesností 3-5 metrů, doplňovaný GLONASS, Galileo a BeiDou.
  • Lokalizační služby kombinují GPS, Wi-Fi a mobilní vysílače pro rychlé a přesné určování souřadnic.
  • Android používá FusedLocationProviderClient s LocationRequest pro nastavení přesnosti a intervalu aktualizace.
  • iOS používá CLLocationManager s desiredAccuracy a delegátem didUpdateLocations pro získávání souřadnic.
  • Oprávnění se dělí na „při použití“ a „vždy“, přístup na pozadí vyžaduje samostatný souhlas uživatele.
  • Spotřeba energie GPS lze snížit o 85% zvýšením intervalu a využitím významných změn polohy.
  • Doporučení — vybírejte přesnost a interval aktualizace podle scénáře: navigátor vyžaduje HIGH, počasí — LOW.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také