试图将我的脑袋包裹在Geofire周围,所以暂时让我说我的firebase数据库在美国各地排名吧。在这种情况下,我的firebase查询会返回该国前100名酒吧的评级列表。如果地图缩小到整个国家,Geofire只会返回该国的前100名酒吧吗?此外,如果地图缩小为纽约,那么Geofire也只能回到纽约的前100名吗?换句话说,我希望返回给定查看区域的前100名,其中列表显然随着列表移动而改变。它能处理吗?如果是这样,我可以看到一个例子吗?
提前致谢!
答案 0 :(得分: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();
}
});