如果半径区域内没有索引,请让GeoFire返回null

时间:2016-06-25 18:44:51

标签: javascript firebase firebase-realtime-database geofire

我正在使用angularjs构建一个webapp并使用firebase。我使用geofire返回给定lat,lng的给定半径范围内的值。当半径中有值时,它完全正常工作并返回我想要的内容。但是,如果半径区域中没有值,则不返回任何值。这是一个问题,因为在初始页面加载时,我有一个微调器,它在promise中返回某些东西时开始和结束。如果给定半径中没有值,有没有办法让geofire返回空值?

这是我用来淘汰数据的代码:

geoQuery.on("key_entered", function(key, location, distance) {
        console.log(key + " entered query at " + location + " (" + distance + " km from center)");


  console.log(key);

      },function(error) {
        console.log("Promise was rejected with the following error: " + error);
      });
    });

除非在半径区域中找到某些内容,否则console.log将不会运行。我需要它仍然返回一些东西所以我知道提醒用户在给定区域没有业务。任何帮助将不胜感激!

更新:

我添加了'ready'事件,并认为它会触发'key_entered'事件,但它不会让我回到第一个方位。

var onKeyExitedRegistration = geoQuery.on("key_exited", function(key, location, distance) {

console.log(键+“退出查询到”+位置+“(距中心”+距离+“km)”); });

geoQuery.on("ready",function() {
  console.log(key + " moved within query to " + location + " (" + distance + " km from center)");

});

1 个答案:

答案 0 :(得分:1)

key_entered事件只会在密钥进入地理查询时触发。因此,如果没有密钥进入查询,它将永远不会触发。

要检查任何键最初是否在地理查询中,您可以侦听ready事件。这在初始数据加载后触发,因此:

var keysEntered = false;
geoQuery.on("key_entered", function(key, location, distance) {
    console.log(key + " entered query at " + location + " (" + distance + " km from center)");
    keysEntered = true;
  },function(error) {
    console.log("Promise was rejected with the following error: " + error);
  });
});
geoQuery.on("ready", function() {
  console.log("initial data has loaded");
  if (!keysEntered) {
    console.log("There was no initial data, so there are no business in range (yet).");
  }
});

有关详细信息,请参阅API reference of Geofire for JavaScript