공식문서 (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 필요
- 사용료 있음

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이나 그 이전 버전이라면 필요)

백그라운드 활성화 — 우리 프로젝트엔 필요없어서 생략함.
NSLocationAlwaysUsageDescription
key를Info.plist
에 추가해야하고
- Xcode 프로젝트를 열어서 Capabilities 탭에서
Background Modes
를 추가해야한다.

Android
안드로이드 권한 요청
위치데이터 종류
COARSE_LOCATION
( WiFi 또는 모바일 데이터 (또는 둘 다)를 사용해서 위치 결정)
FINE_LOCATION
(GPS
, WiFI 및 모바일 데이터 등 사용) ← GPS 쓰려면 이 권한 필요
AndroidManifest.xml 수정
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

사용 예시
import Geolocation from '@react-native-community/geolocation'; Geolocation.getCurrentPosition(info => console.log("내 현재 위치는 여기다 : ",info));
메서드 종류 (문서 참조)


위도 경도 얻기
coords
.latitude
coords
.longitude