查询 Geofire 以获得该地区前 X 条记录?

Query Geofire for top X number of records in the area?

我正在努力了解 Geofire,所以暂时假设我的 firebase 数据库在 U.S 中排名靠前。在这种情况下,我的 firebase 查询将 return 该国排名前 100 的酒吧的评级列表。如果把地图缩小到全国,难道Geofire return 只显示全国前100 条吧?另外如果把地图放大到纽约,难道Geofire也只能return纽约的前100名吗?换句话说,我想 return 给定查看区域的前 100 个,其中列表随着列表的移动而明显变化。它能处理这个吗?如果是这样,我能看到一个例子吗?

提前致谢!

您可以使用地理查询来设置放大和缩小的中心和半径

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