0

我正在用 angularjs 构建一个 webapp,并且正在使用 firebase。我正在使用 geofire 返回给定纬度、lng 的给定半径内的值。当半径中有值时,它可以正常工作并返回我想要的。但是,当半径区域中没有值时,它什么也不返回。这是一个问题,因为在初始页面加载时,我有一个微调器,它在承诺返回某些内容时开始和结束。如果给定半径中没有值,有没有办法让 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 将不会运行。我需要它仍然返回一些东西,所以我知道提醒用户在给定区域没有企业。任何帮助将不胜感激!

更新:

我添加了“就绪”事件,并认为它会触发“key_entered”事件,但它并没有因此让我回到第一方。

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

console.log(key + " 退出查询到 " + location + " (" + distance + " km from center)"); });

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

});

4

1 回答 1

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).");
  }
});

有关更多信息,请参阅Geofire for JavaScript 的 API 参考

于 2016-06-25T23:04:13.390 回答