首页 > 解决方案 > 如何根据与当前 GeoPoint 的给定距离在 Firestore 中获取文档?

问题描述

我将GeoPoint存储为用户集合中的 firestore 中的位置。

使用我当前的 GeoPoint,我需要根据给定的距离获取我周围的文档/用户。举个例子,我需要让我周围的用户在 100 公里以内。

我在 stackoverflow 上搜索并意识到只有几个基于 GeoPoint 的 Firestore 问题。根据那些我构建了一个类似于下面的查询,

function getUsers(lower, upper) {
  let db = admin.firestore();
  var usersRef = db.collection('users')
    .where('location', isGreaterThan, lower)
    .where('location', isLessThan, upper);

  var users = usersRef.get();
  return users;
}

但我的问题是,

如何根据给定距离构造“下”和“上”地理点?

我在这里有点困惑,因为 GeoPoints 由经度和纬度组成,它们代表地图中的一个点。在地图上有两个点(下、上),是否可以得到一个半径为 100 公里的边界圆?

如果您有更好的解决方案来使用 Firestore 中的 GeoPoint 实现此目的,也请提出您的建议。我们不能传递我当前的 GeoPoint 和一个半径值,最终在那个圆圈周围提供文档吗?

标签: firebasegoogle-cloud-firestoregoogle-cloud-functionsgeopoints

解决方案


推荐阅读