2016-11-25 69 views
0

我已經通過github Fish的Geofire示例,但仍不清楚如何在我的應用中實現它。 我的用例:我的應用程序顯示登錄用戶的活動/聚會。目前在我的應用程序中,我在firebase ref(events)上擁有Firebase偵聽器。將Geofire與現有的Firebase數據庫集成

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

目前,在初始負荷時,客戶端應用程序在獲取的事件整個對象REF,然後將每個事件數據被顯示在一個表中的用戶(每行對應的事件)。

我知道,使用geofire我可以使用set()函數來保存每個事件密鑰及其地理位置[lat,lng]。然後使用查詢我可以檢索屬於指定半徑範圍內的用戶當前位置(html5地理位置)的事件鍵列表。但是我該怎麼處理這些鍵,因爲沒有附加數據,我是否在事件引用中爲每個事件鍵設置了單獨的「on」偵聽器?然後顯示事件數據?

回答

2

當您使用Geofire時,您最終會在您的JSON樹中出現兩個分支:一個包含對象的地理數據,另一個包含實際數據。

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

當你火對geodata節點GeoQuery,你回來落在該查詢範圍內的對象的鑰匙。因此,例如objectId2objectId3

然後使用該鍵查找objects下的相應JSON對象。使用例如,當key_entered

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

如果新的事件鍵添加到geofire裁判的客戶端應用程序創建了上面的查詢後使用(組()),如果它落在半徑範圍內的那份「key_entered」查詢檢測添加和檢索密鑰?此外,對於事件鍵被刪除的同一問題,密鑰觸發器的鍵是否會被刪除? – jasan

+0

如果新鍵與位於活動GeoQuery範圍內的位置相關聯,它將觸發'key_entered'。如果您在完成此工作時遇到問題,請分享[重現問題的最小代碼](http://stackoverflow.com/help/mcve)。 –

相關問題