2016-11-25 3 views
0

Geofire에 대한 github Fish 예제가 있지만 내 앱에서 구현하는 방법이 아직 불분명합니다. 사례 : My app은 로그인 한 사용자에게 events/meetups를 보여줍니다. 현재 내 응용 프로그램 내 firebase 심판 (이벤트)에서 firebase 수신기가 있습니다.기존의 firebase 데이터베이스와 Geofire 통합

database.ref('events').orderByChild('startTime').on('value', (snapshot) => { 
const feed = snapshot.val() || {} 
}) 

현재, 초기 부하, 클라이언트 애플리케이션은 이벤트에 전체 개체 심판 다음 이벤트 데이터 각각은 테이블에 유저 (각 행 이벤트)에 표시 가져온다.

geofire를 사용하면 set() 함수를 사용하여 geolocation [lat, lng]과 함께 각 이벤트 키를 저장할 수 있다는 것을 알고 있습니다. 그리고 쿼리를 사용하여 지정된 반경 내에있는 이벤트 키 목록을 현재 위치 (html5 geolocation)로 가져올 수 있습니다. 하지만 키가있는 부분은 데이터가 없으므로 Events ref에서 각 이벤트 키에 대해 개별 "on"리스너를 설정합니까? 그런 다음 이벤트 데이터를 표시 하시겠습니까?

답변

2

Geofire를 사용하면 JSON 트리에 오브젝트 용 지형 데이터와 실제 데이터가있는 두 개의 분기가 생깁니다.

objects 
    objectId1: { ... } 
    objectId2: { ... } 
    objectId3: { ... }  
geodata 
    objectId1: { ... } 
    objectId2: { ... } 
    objectId3: { ... } 

당신이 geodata 노드에 대한 GeoQuery을 발사

해당 쿼리의 범위 내에있는 개체의 키를 다시 얻을. 따라서 예를 들어 objectId2objectId3입니다.

그러면 해당 키를 사용하여 objects에서 해당 JSON 개체를 검색합니다. 예를 들어 key_entered를 사용하는 경우 : 새로운 이벤트 키는 위의 쿼리는 클라이언트 응용 프로그램에 생성 한 후 (세트를())를 사용하여 참조 geofire에 추가하는 경우

geoQuery.on("key_entered", function(key, location, distance) { 
    console.log(key + " entered query at " + location + " (" + distance + " km from center)"); 
    ref.child("objects").child(key).once("value", function(snapshot) { 
    console.log(snapshot.val()); 
    }); 
}); 
+0

하고 반경 내에있는 경우 것 "key_entered"쿼리 추가 및 검색 키를 검색 하시겠습니까? 또한 이벤트 키가 삭제되는 것과 같은 질문은 키 트리거에 대해 key_exited입니까? – jasan

+0

새로운 키가 활성화 된 GeoQuery의 범위에있는 위치와 연결되면 'key_entered'가 실행됩니다. 이 작업을 수행하는 데 문제가있는 경우 [문제를 재현하는 최소 코드] (http://stackoverflow.com/help/mcve)를 공유하십시오. –

관련 문제