如何在Firebase Cloud Firestore中查询集合中最近的GeoPoints?

Pro*_*mit 29 firebase google-cloud-firestore

新的Firestore DB允许我存储GeoPoints.有没有办法根据它们进行查询?

因此,例如,如果我的每个集合文档都有一个location类型的字段geopoint.如何将最近的10个文档放到任意坐标?

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

someRef.where('location', '>', geopoint).limit(10).get();
Run Code Online (Sandbox Code Playgroud)

显然这没有多大意义,但我只是在尝试一些东西

Mik*_*ald 33

我们还没有公开地理查询,所以目前还没有办法做到这一点.

从历史上看,火力地堡实时数据库使用geohashes在一个叫库GeoFire -但因为我们计划在不久的将来揭露实际geoqueries,我们还没有更新的库公司的FireStore.要了解如何自己做类似的事情,请看一下这个视频.

  • 知道地理查询可用多长时间了?我开始开发一个依赖于此功能的应用程序,我即将使用GeoFire实时数据库,但我更愿意使用新的Firestore构建应用程序. (57认同)
  • 关于此的任何更新(2018年3月)? (14认同)
  • @Tequilaman是否有FireStore即将推出的功能的路线图?等待这个也认真考虑实施geohash搜索虽然如果我可以避免它,我宁愿把它留给专家:) (11认同)
  • 我也在等待这个,或者至少对多个字段进行简单的复合查询.真的很失望地看到`未捕获错误:查询无效.所有带有不等式(<,<=,>或> =)的过滤器必须在同一个字段上.当在`lat`和`lng`上尝试查询时...这似乎是最基本的功能你即使是测试版中的数据库也是如此. (8认同)
  • 地理标识将可用? (3认同)
  • 2019年1月,它附近了吗? (3认同)
  • 现在就去使用geofirestore,但我想知道这个"不久的将来"何时会出现.某处有路线图吗? (2认同)
  • 您可以使用此库查询地理位置。我测试了一下,它就像一个魅力。以公里为单位测量距离以及约束。https://pub.dartlang.org/packages/geoflutterfire (2认同)

ra9*_*a9r 8

自@problemsofsumit首先提出这个问题以来,已经引入了一个新项目.该项目名为GEOFirestore.

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

  const geoQuery = geoFirestore.query({
    center: new firebase.firestore.GeoPoint(10.38, 2.41),
    radius: 10.5
  });
Run Code Online (Sandbox Code Playgroud)

您可以通过npm安装GeoFirestore.您必须单独安装Firebase(因为它是GeoFirestore的对等依赖项):

$ npm install geofirestore firebase --save
Run Code Online (Sandbox Code Playgroud)

您可以通过cdn链接到它:https://cdn.jsdelivr.net/npm/geofirestore@2.2.2/dist/geofirestore.min.js