如何在Firebase Cloud Firestore中查询集合中最近的地理点?

如何在Firebase Cloud Firestore中查询集合中最近的地理点?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,新的Firestore DB允许我存储地质点。是否有一种基于它们的查询方法 例如,如果我的每个集合文档都有一个位置字段,该字段的类型为geopoint。 如何获取与任意坐标最近的10个文档 文档似乎没有涵盖这一点。我试过这样的东西: someRef.where('location', '>', geopoint).limit(10).get(); 显然,这没有多大意义,但我只是在这里尝试一些东西我们还没有公开地理查询,所以目前还没有一种方法可以做到这一点 从历史上看,Firebase实时

新的Firestore DB允许我存储地质点。是否有一种基于它们的查询方法

例如,如果我的每个集合文档都有一个
位置
字段,该字段的类型为
geopoint
。 如何获取与任意坐标最近的10个文档

文档似乎没有涵盖这一点。我试过这样的东西:

someRef.where('location', '>', geopoint).limit(10).get();

显然,这没有多大意义,但我只是在这里尝试一些东西我们还没有公开地理查询,所以目前还没有一种方法可以做到这一点


从历史上看,Firebase实时数据库用于一个名为的库,但鉴于我们计划在不久的将来公开实际的地理查询,我们还没有将该库更新为Firestore。要了解如何自己做类似的事情,请看一看。

您可以让Algolia使用radius为您进行地理搜索。它所需要的只是构建一个云函数,在您想要的文档上触发并将它们同步到Algolia

看看地理搜索


此外,Firebase文档在此处宣传Algolia是复杂搜索的解决方案

自从@problemsofsumit首次提出这个问题以来,已经引入了一个新项目。该项目称为GEOFirestore

使用此库,您可以执行查询,如圆内的查询文档:

  const geoQuery = geoFirestore.query({
    center: new firebase.firestore.GeoPoint(10.38, 2.41),
    radius: 10.5
  });
您可以通过npm安装GeoFirestore。您必须单独安装Firebase(因为它是GeoFirestore的对等依赖项):

您可以通过cdn链接到它:

我不会使用像Algolia这样的第三方服务,我会使用iOS和Android上的新库,它复制了Firestore的GeoFire。这个名为的新库有完整的文档记录和良好的测试。我已经在许多演示项目中使用过这个库,它似乎工作得很好。试试看

在搜索网络后,我找到了chintan369的GeoFirestore库,可以用来查询附近的地质点。这些查询基于Firestore本机查询。只需将以下行添加到您的
build.gradle
(项目级)中即可:

然后将库添加到您的
build.gradle
(应用程序级):

…并同步您的项目


更多信息,请访问。

您知道地理查询将在多长时间后可用吗?我正在开始开发一个应用程序,该应用程序将依赖于此功能,我正要使用GeoFire的实时数据库,但我更愿意使用新的Firestore构建该应用程序。我也在等待,或者至少是在多个字段上进行简单的复合查询。看到
Uncaught错误:无效查询,我非常失望。带有不等式(=)的所有where过滤器必须位于同一字段。
lat
lng
上尝试查询时。。。这似乎是最基本的功能,即使在beta版的数据库中也是如此。@Tequilaman是否有FireStore即将推出的功能路线图?等待这一次,并认真考虑实施geohash搜索,但如果我可以避免,我宁愿把它留给专家:)geoqueries将于2019年1月提供。距离现在还近吗?我在安装via时遇到这个错误。可可豆你有这个错误吗?Cocoapods最近得到了更新。由于帝国实验室已经创建了一个新版本,您必须按照说明运行“pod repo更新”,然后运行“pod安装”say@NikhilSridhar有没有办法在GeoFirestore中对查询进行分页,或者至少限制查询结果?能否详细说明GeoFirestore的安装,我收到了这个错误:Het David,ra9r所指的geofirestore与您评论中的不同。我的是为JS设计的,而不是为iOS或Android设计的(不过我也愿意与那些对这些平台有想法的人一起工作!)npm安装geofirestore firebase——保存是为firebase实时数据库而不是firestore设计的?$$$$$$$$$$$$$尝试过它。它不适用于大型集合(>5k文档)
$ npm install geofirestore firebase --save
allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}
dependencies {
  implementation 'com.github.chintan369:Geo-FireStore-Query:1.1.0'
}