GeoFire를 Firestore와 함께 사용할 수 있는 방법이 있습니까?
GeoFire는 Realtime Database와 긴밀하게 연결되어 있으며, Geo-query는 Firestore로 마이그레이션하려는 많은 앱의 일반적인 기능 종속성입니다.Firestore 환경에서 위치의 해싱/검색을 복제할 수 있는 방법이 있습니까?
편집(2020년 12월 17일): 최근 지리 유틸리티 라이브러리 세트와 Firestore에서 간단한 지리 쿼리를 구현하는 방법을 설명하는 가이드를 출시했습니다!
https://firebase.google.com/docs/firestore/solutions/geoqueries
데이터베이스에 네이티브 지오쿼리가 아직 없지만 Android, iOS 및 웹 라이브러리를 사용하면 지오쿼리 기능을 사용할 수 있습니다.
편집(2019년 7월 1일):원래 아래 답변을 작성했을 때는 네이티브 지오쿼리가 곧 Cloud Firestore에 제공될 것이라고 낙관했지만 실제로는 그렇지 않았습니다.아직 장기 계획 중이지만 현재로서는 커뮤니티에서 만든 라이브러리를 사용하거나 GeoHashes 또는 S2 Geometry 라이브러리를 사용하여 자신만의 라이브러리를 만드는 것이 가장 좋습니다.
실시간 데이터베이스용 GeoFire 라이브러리는 GeoHash를 사용하여 구축되었으며 이러한 라이브러리의 논리를 Cloud Firestore로 이식하는 작업은 비교적 간단해야 합니다.
여기 클라우드 파이어스토어 팀의 샘입니다.SUPERCILEX가 말했듯이 Cloud Firestore는 GeoPoint 데이터 유형을 이미 지원합니다.우리는 네이티브 지오쿼리를 제품에 도입하기 위해 노력하고 있습니다.
네이티브 지오쿼리가 오기 때문에 클라우드 파이어 스토어에 지오파이어를 포팅하지 않습니다.대신 엔지니어링 작업을 네이티브 쿼리를 더 빨리 가져오는 방향으로 전환할 것입니다.
오늘날 지리학적 질의가 필요하지만 독자적인 라이브러리를 구축하고 싶지 않다면 실시간 데이터베이스를 사용하십시오!
좋은 소식입니다.이제 Firestore용 GeoFire를 복제하는 iOS 및 Android용 라이브러리가 있습니다.그 도서관은 GeoFirestore라고 불립니다.이 문서는 완전한 문서를 가지고 있고 테스트가 잘 되어 있습니다.저는 현재 제 앱에서 그것을 사용하고 있고 그것은 훌륭하게 작동합니다.코드는 GeoFire의 코드와 매우 유사하므로 학습하는 데 몇 분밖에 걸리지 않습니다.
Google이 제안하는 것처럼 지리 쿼리용 실시간 데이터베이스를 추가하고 두 데이터베이스를 클라우드 기능과 동기화하는 것이 해결책입니다.
제 경우에는 동기화할 필요조차 없습니다. 저는 실시간 데이터베이스에 UID 목록을 저장하고 모든 지리적 쿼리를 수행합니다.
원래 포스터가 처음 이 질문을 할 때부터 새로운 프로젝트가 도입되었습니다.이 프로젝트의 이름은 GEOfirestore입니다.
이 라이브러리를 사용하여 원 안에 있는 쿼리 문서와 같은 쿼리를 수행할 수 있습니다.
const geoQuery = geoFirestore.query({
center: new firebase.firestore.GeoPoint(10.38, 2.41),
radius: 10.5
});
GeoFirestore는 npm을 통해 설치할 수 있습니다.Firebase는 GeoFirestore에 대한 피어 종속성이기 때문에 별도로 설치해야 합니다.
$ npm install geofirestore firebase --save
GeoQuery with Firestore의 Javascript 솔루션은 Nikhil Sridhar가 말한 대로 GeoFirestore를 사용하는 것입니다.그러나 사용하기가 상당히 어렵습니다(또는 저를 위한 것이었습니다).
우선 GeoFire 저장소 참조를 초기화해야 합니다.
var firebase = require('firebase-admin');
var GeoFirestore = require('geofirestore');
// Create a Firestore reference
const firestore = firebase.firestore();
// Create a GeoFirestore reference
const geofirestore = new GeoFirestore.GeoFirestore(firestore);
// Create a collection reference but using geofirestore collections
// this is where you save the geofirestore documents with its structure
const geocollection = geofirestore.collection('userPositions');
컬렉션을 초기화한 후 첫 번째 단계는 지정된 구조의 문서를 저장하는 것입니다.
{
g: string;
l: GeoPoint;
d: DocumentData;
}
geofirestore.collection('userPositions').doc(id).set({ coordinates: new firebase.firestore.GeoPoint(0, 0)}).then(res => {
return res;
}).catch(err => {
console.log(err);
});
지오파이어스토어 문서가 포함된 컬렉션이 있는 경우에만 예제에서 설명한 대로 해당 문서에 대해 쿼리할 수 있습니다.
// Create a GeoQuery based on a location
const query = geocollection.near({ center: new firebase.firestore.GeoPoint(0, 0), radius: 1000 });
// Get query (as Promise)
query.get().then((value) => {
console.log(value.docs); // All docs returned by GeoQuery
});
이 단계가 도움이 되길 바랍니다!
Cloud Firestore는 기본적으로 지오포인트를 지원합니다.지원되는 데이터 유형을 참조하십시오.데이터를 설정하고 쿼리하는 데 사용할 수 있는 클래스를 찾을 수 있습니다.
query.whereEqualTo("location", GeoPoint(lat, long))
언급URL : https://stackoverflow.com/questions/46553682/is-there-a-way-to-use-geofire-with-firestore
'sourcecode' 카테고리의 다른 글
XPath 네임스페이스가 있는 노드 선택 (0) | 2023.07.07 |
---|---|
Spring Boot - /health 끝점의 위치를 /ping/me로 변경합니다. (0) | 2023.07.07 |
연결을 허용하기 위해 봄 부팅에서 Tcp 연결을 만드는 방법은 무엇입니까? (0) | 2023.07.07 |
SQL Server Management Studio에서 마우스 오른쪽 버튼으로 스크립트 변경 테이블 사용 안 함 (0) | 2023.07.07 |
최대 절전 모드에서 MySQL이 아닌 다른 표준 시간대를 사용하는 경우 날짜를 뺀 날짜를 저장/검색합니다. (0) | 2023.07.07 |