GPS 사용하기

Tags
gps
Column

공식문서 (React-Native)

공식문서에서도 @react-native-community/geolocation을 쓰라고 한다.

@react-native-community/geolocation

이 모듈은 Geolocation web spec의 확장이다.

Google Location Service API

현재 안드로이드의 android.location API. 는 정확성과 속도 문제가 있어 구글에서도 추천하지 않는다.
대안으로 Google Location Service API 를 쓸 것을 권장하고 있다.
React Native에서 Google Location Service API를 사용하려면 아래 라이브러리를 사용하자.
 

Web Geolocation API vs Google Location Service API

참고 문서

스택오버플로 비교글

Web Geolocation API

Google Location Service API

요약

Web Geolocation API ← 채택!

  • 현재 장치에서 사용 가능한 최선의 방법을 통해 위치 반환.
    • GPS / IP주소 / RFID, WiFi, Bluetooth 맥 주소 / GSM, CDMA cell ID / 유저입력 등
    • ⇒ 결과가 일정하지 않을 수 있음.
  • 별도 사용료 없음.

Google Location Service API

  • 유저 근처의 wifi network 정보와 cell towers 정보로 사용사의 위치 및 정확도 반경 반환.
    • ⇒ 결과가 일정함 (정확도를 떠나서)
  • API Key 필요
  • 사용료 있음
notion image
 

Web Geolocation API 사용하기

react-native init 으로 만들어진 프로젝트에서만 유효함

설치 (RN ≥ 0.6 이상 기준)

#패키지 설치 $ yarn add @react-native-community/geolocation #당연히 ios pot install도 $ cd ios/ $ pod install $ cd ../
 
Geolication 기능은 react-native init으로 만들었다면 기본적으로 활성화 돼있는데, 기기에서 사용하려면 기기별 추가 설정 필요.

iOS

Info.plist 수정

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription (iOS 10이나 그 이전 버전이라면 필요)
notion image

백그라운드 활성화 — 우리 프로젝트엔 필요없어서 생략함.

  • NSLocationAlwaysUsageDescription key를 Info.plist에 추가해야하고
  • Xcode 프로젝트를 열어서 Capabilities 탭에서 Background Modes를 추가해야한다.
notion image

Android

안드로이드 권한 요청

위치데이터 종류

  • COARSE_LOCATION ( WiFi 또는 모바일 데이터 (또는 둘 다)를 사용해서 위치 결정)
  • FINE_LOCATION (GPS, WiFI 및 모바일 데이터 등 사용) ← GPS 쓰려면 이 권한 필요

AndroidManifest.xml 수정

  • <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
notion image

사용 예시

import Geolocation from '@react-native-community/geolocation'; Geolocation.getCurrentPosition(info => console.log("내 현재 위치는 여기다 : ",info));

메서드 종류 (문서 참조)

 
notion image
notion image

위도 경도 얻기

  • coords.latitude
  • coords.longitude