【问题标题】:Geofire-js: Return all key's whose instantaneous location matches geoQueryGeofire-js:返回瞬时位置与 geoQuery 匹配的所有键
【发布时间】:2016-11-11 23:20:05
【问题描述】:

我正在与 Firebase 合作开展一个项目,但我无法理解查询的工作原理。我正在尝试查询并查找在当前用户位置的某个半径范围内的任何其他用户。

我能够创建 geoQuery,但我不确定如何返回位置在半径范围内的用户。

从示例中,key_entered 似乎仅在数据库中的位置更改时才会触发。我所有的位置一旦设置都是静态的,所以我只想做一个查询,然后返回所有瞬时位置在查询范围内的用户。

Geofire 可以做到这一点吗?

我的位置信息是这样保存在 Firebase 中的:

users {
   uid: {
        location: {
          g: 'GeoHash',
          l: [lat, long]
         }
      }
   }

这是我的查询:

let geoQuery = geoFire.query({
                center: [currentUser.location.l[0], currentUser.location.l[1]],
                radius: 1000
            });

【问题讨论】:

  • key_entered 实际上会被触发,即使位置只是一个静态值并且没有改变。类似于 Firebase 的 value 事件将使用初始值触发一次,key_entered 将为与您的 GeoQuery 匹配的每个值触发,即使 GeoQuery 是在该值最后一次更改之后创建的。

标签: javascript node.js firebase firebase-realtime-database geofire


【解决方案1】:

问题是我没有使用 geoFire 的 set 方法存储位置,因此从未创建过 geoHash,因此 geoFire 没有任何可查询的内容。感谢@jacob 的帮助!

【讨论】:

  • Javascript 可以吗?搜索静态(固定)位置附近的键(键列表) - 这些是预先添加到 Firebase 数据存储中的。注意:不使用 'key_entered' 因为 'key_entered' 仅在新的或位置更新时触发。以前添加的位置但在给定的半径范围内呢?怎么可能??
  • @AnkitMaheshwari 你找到解决方案了吗?
  • @YoloYolo 还没有!
猜你喜欢
  • 2015-10-08
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2016-06-14
  • 2018-12-02
  • 1970-01-01
相关资源
最近更新 更多