查询Geofire获取该区域中前X个记录的数量?

时间:2017-08-15 01:36:57

标签: javascript angularjs firebase ionic-framework geofire

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

提前致谢!

1 个答案:

答案 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();
  }
});




reference doc