Geolocation API w komponentach React
Pobierać i śledzić lokalizację użytkownika za pomocą Geolocation API, obsługiwać uprawnienia i poprawnie usuwać obserwatory
Geolocation API w komponentach React to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
Jednorazowy odczyt pozycji
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options) jednokrotnie żąda lokalizacji urządzenia. Procedura obsługi powodzenia otrzymuje obiekt GeolocationPosition. Jest to odpowiednie rozwiązanie, gdy lokalizacja jest potrzebna tylko raz, na przykład do znalezienia najbliższego sklepu po kliknięciu przycisku, a nie do śledzenia ciągłego przemieszczania się.
Ciągłe śledzenie pozycji
navigator.geolocation.watchPosition(successCallback, errorCallback, options) wywołuje procedurę obsługi za każdym razem, gdy zmieni się pozycja urządzenia. Zwraca numeryczny identyfikator watchId. Jest to odpowiednie rozwiązanie w zastosowaniach czasu rzeczywistego, takich jak śledzenie dostawy lub nawigacja zakręt po zakręcie, gdy pozycja musi być na bieżąco aktualna.
Obiekt pozycji
Obiekt GeolocationPosition zawiera właściwość coords z wartościami latitude, longitude i accuracy (w metrach). Dodatkowe opcjonalne pola to altitude, altitudeAccuracy, heading i speed. Pole timestamp określa moment zarejestrowania pozycji.
Kody błędów geolokalizacji
Procedura obsługi błędu otrzymuje obiekt GeolocationPositionError z numeryczną właściwością code. Kod 1 oznacza PERMISSION_DENIED (użytkownik odmówił zgody), kod 2 oznacza POSITION_UNAVAILABLE (awaria sprzętu lub sieci), a kod 3 oznacza TIMEOUT (żądanie trwało zbyt długo). Zawsze należy obsłużyć wszystkie trzy przypadki.
Usuwanie obserwatora podczas sprzątania
Obserwator watchPosition działa bezterminowo, dopóki nie zostanie zatrzymany. W useEffect należy zwrócić funkcję sprzątającą, która wywołuje navigator.geolocation.clearWatch(watchId). Jeśli sprzątanie zostanie pominięte, obserwator będzie działać po odmontowaniu komponentu, zużywając baterię i potencjalnie aktualizując stan odmontowanego komponentu.
Tworzenie hooka useGeolocation
Hook useGeolocation zarządza stanem statusu, który może przyjmować cztery wartości: idle (żądanie nie zostało jeszcze wysłane), loading (żądanie jest w toku), success (pozycja została odebrana) oraz error (żądanie zakończyło się niepowodzeniem). Przechowuje także w stanie wartości position i errorMessage. Komponenty otrzymują w ten sposób przejrzysty i spójny interfejs.
Elegancka obsługa odmowy dostępu
Gdy użytkownik odmówi dostępu do geolokalizacji, należy wyświetlić pomocny komunikat wyjaśniający, dlaczego funkcja potrzebuje dostępu do lokalizacji oraz jak ponownie włączyć go w ustawieniach przeglądarki. Użytkownikom nigdy nie należy wyświetlać surowego kodu błędu. Należy zaoferować możliwość ręcznego wpisania adresu, aby funkcja pozostała użyteczna bez zgody na dostęp do lokalizacji.
Wymóg HTTPS dla geolokalizacji
Podobnie jak większość zaawansowanych API przeglądarki, geolokalizacja jest ograniczona do bezpiecznych kontekstów. navigator.geolocation ma wartość undefined na stronach korzystających ze zwykłego protokołu HTTP. Podczas pracy deweloperskiej na localhost działa bez HTTPS. W środowisku produkcyjnym należy zawsze upewnić się, że aplikacja jest udostępniana przez HTTPS, w przeciwnym razie użytkownicy nigdy nie zobaczą prośby o zgodę.
Opcje dokładności i czasu
Opcjonalny trzeci argument metod getCurrentPosition i watchPosition przyjmuje obiekt opcji. enableHighAccuracy: true żąda dokładności na poziomie GPS kosztem większego zużycia energii. timeout określa maksymalną liczbę milisekund oczekiwania. maximumAge pozwala użyć zapisanej w pamięci pozycji, jeśli została zarejestrowana w ciągu podanej liczby milisekund.
Zastosowania w praktyce
Geolokalizacja umożliwia korzystanie z funkcji takich jak „znajdź sklep w pobliżu”, śledzenie kierowcy dostawy na mapie, prognoza pogody dla bieżącego miasta, posty oznaczone lokalizacją oraz obliczanie odległości między użytkownikiem a miejscem docelowym. Przed poproszeniem o zgodę zawsze należy jasno wyjaśnić użytkownikom, dlaczego aplikacja potrzebuje ich lokalizacji.
Testowanie geolokalizacji podczas pracy deweloperskiej
Narzędzia deweloperskie Chrome pozwalają ustawić fikcyjną lokalizację urządzenia. Należy otworzyć narzędzia deweloperskie, przejść do menu z trzema kropkami, wybrać Więcej narzędzi, a następnie Czujniki. Można wpisać współrzędne szerokości i długości geograficznej, aby symulować dowolną lokalizację. Jest to znacznie szybsze niż fizyczne przemieszczanie się w celu przetestowania funkcji zależnych od lokalizacji.
Kody błędów geolokalizacji
Co oznacza kod 1 obiektu GeolocationPositionError?
Podsumowanie lekcji: Geolocation API w React
Należy używać getCurrentPosition do jednorazowego odczytu, a watchPosition do ciągłego śledzenia. Zawsze należy wywoływać clearWatch w funkcji sprzątającej useEffect. Należy utworzyć hook useGeolocation ze stanami idle, loading, success i error. Odmowę dostępu należy obsługiwać w przemyślany sposób, pamiętając, że geolokalizacja w środowisku produkcyjnym wymaga HTTPS.
Często zadawane pytania
Czy lekcja „Geolocation API w komponentach React” jest bezpłatna?
Tak — pełny tekst „Geolocation API w komponentach React” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Geolocation API w komponentach React”?
Pobierać i śledzić lokalizację użytkownika za pomocą Geolocation API, obsługiwać uprawnienia i poprawnie usuwać obserwatory Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Geolocation API w komponentach React”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Clipboard API: kopiowanie i wklejanie w React
- Geolocation API w komponentach React
- Notifications API i obsługa uprawnień
- IntersectionObserver do efektów wyzwalanych przewijaniem