2017-08-15 86 views
0

試圖總結我的周圍Geofire頭,所以暫時可以說,我的火力數據庫居酒吧遍佈美國我在這種情況下將返回在全國前100條的額定列表火力查詢。如果地圖縮小到全國範圍,Geofire只能返回該國的前100家酒吧嗎?另外,如果地圖放大說紐約,Geofire是否也只能返回紐約前100名?換句話說,我想要返回給出觀看區域的前100名,列表顯然隨列表移動而變化。它可以處理這個嗎?如果是這樣,我能看到一個例子嗎?查詢Geofire獲得該地區前X個記錄的數量?

在此先感謝!

回答

1

可以使用geoquery設置圓心和半徑的放大和縮小

var geoQuery = geoFire.query({ 
 
    center: [10.38, 2.41], 
 
    radius: 10.5 
 
}); 
 

 
var center = geoQuery.center(); // center === [10.38, 2.41] 
 
var radius = geoQuery.radius(); // radius === 10.5 
 

 
geoQuery.updateCriteria({ 
 
    center: [-50.83, 100.19], 
 
    radius: 5 
 
}); 
 

 
center = geoQuery.center(); // center === [-50.83, 100.19] 
 
radius = geoQuery.radius(); // radius === 5 
 

 
geoQuery.updateCriteria({ 
 
    radius: 7 
 
}); 
 

 
center = geoQuery.center(); // center === [-50.83, 100.19] 
 
radius = geoQuery.radius(); // radius === 7

爲前100名可以使用,當你收到當前geoQery 100元喜歡的方式,調用取消。

var geoQuery = geoFire.query({ 
 
    center: [10.38, 2.41], 
 
    radius: 10.5 
 
}); 
 

 
var bars = [] 
 

 
var onKeyExitedRegistration = geoQuery.on("key_exited", function(key, location, distance) { 
 
    console.log(key + " exited query to " + location + " (" + distance + " km from center)"); 
 
    bars.push(key); 
 
    if(bars.length>=100) 
 
    { 
 
    geoQuery.cancel(); 
 
    } 
 
});

reference doc

+0

感謝您的幫助。所以,你給的例子限制了顯示100「條」數,但可以把它用於返回該區域中的前100名?如果在紐約萬條,我們只想顯示換句話說前100名,如何在100所記錄的條排列有序?或者是簡單地停止在100的查詢,而不管我們想要命令的「等級」。相反地​​,我們可以用給定面積的前100個條柱加載條形陣列嗎? – MacD

+1

geofire只能給你記錄的鍵,就可以使用該密鑰來查詢其他記錄。所以要獲得排名信息,您必須查詢半徑內的所有密鑰,然後進行排名比較。你可以把排名的關鍵,即(firebase_key_rank)信息,以及排名前查詢10K記錄的關鍵,所以你只能查詢100的記錄,但你仍然需要查詢所有10K關鍵的。 –

+0

明白了。那就是我需要知道的。謝謝.. – MacD