https://firebase.google.com/docs/firestore/solutions/geoqueries?hl=ko
https://firebaseopensource.com/projects/firebase/geofire-android/
GeoHash?
공간 상의 좌표 값을 해쉬 스트링으로 치환한 데이터

- 1레벨부터 8레벨, 최대 8글자로 이루어진 문자열
- 문자열 길이가 길수록 더 좁은 범위의 위치를 나타냄
ex) w → wy → wyd… : 모두 w 라는 큰 영역 안에서 세부적인 지도영역을 나타내고 있다
- 이 문자열 구성이 동일한지 다른지를 통해 같은 범위 내에 있는지 등 여러 비교 결과를 쉽게 파악할 수 있음
- Firebase에선 GeoFire + GeoHash를 이용해 지역 쿼리 가능함
GeoFire
- Firebase Realtime Database나 Firestore와 결합하여 지리적 데이터를 저장하고 쿼리할 수 있도록 도와주는 라이브러리
- 위치 쿼리에 사용되는 타입 데이터나, 쿼리 관련 함수 등을 지원
GeoFire + GeoHash로 좌표값 저장 및 쿼리
Firebase 데이터베이스에 geoHash 데이터 저장
- Firestore 등에 GeoHash 데이터를 저장해야함
val lat = 51.5074
val lng = 0.1278
val geoLocation = GeoLocation(lat, lng)
val hash = GeoFireUtils.getGeoHashForLocation(geoLocation)