如何将位置发送到 Firestore 并根据距离获取位置?

Posted

技术标签:

【中文标题】如何将位置发送到 Firestore 并根据距离获取位置?【英文标题】:How to send a location to Firestore and get places based on distance? 【发布时间】:2019-07-02 10:16:55 【问题描述】:

在我的应用程序中,我想发送(可能通过查询)一个用户的地理点 (userLocation),该用户的汽车发生故障并被困。作为回应,我想找回所有愿意联系被困用户的维修店。每个 Repair_Shop firestore 文档都包含他们的地理点 (shopLocation) 和一个以公里为单位的数字 serviceDistance,这是他们的服务半径 (serviceRadius)。我想回复 Repair_Shop 集合中满足 serviceDistance

我已通读 GeoFirestore 文档,但不太确定如何实施。自然无法在前端进行计算。但是我应该发送什么作为查询,如果可能的话,我应该在 Firestore API 上做什么,以便获得预期的文档快照?

谢谢。

【问题讨论】:

【参考方案1】:

单次地理查询无法做到这一点。原因很简单:北极可能有一家维修店愿意行驶 10,000 公里来维修搁浅的车辆。因此,您基本上总是必须请求所有商店,然后在客户端对它们进行排序/过滤。

这个问题本质上是一样的:

How find nearest users by latitude and longitude?

正如我在那里回答的那样,最好的选择是从一个合理的范围开始,然后查询该范围内的所有文档。如果这没有产生结果,请使用更大的范围再试一次。

【讨论】:

我一直在研究这个。我不知道是否存在明确的答案,但我认为通过 Google Cloud Functions 有可能,尽管很复杂。你怎么看? 您在 Cloud Functions 中用于调用 Firestore 的 API 与您在其他地方调用的 API 没有显着差异。在 android 中不可能的事情,在 Cloud Functions 中也不太可能实现。

以上是关于如何将位置发送到 Firestore 并根据距离获取位置?的主要内容,如果未能解决你的问题,请参考以下文章

新的“Cloud Firestore”是不是能够基于位置距离进行查询?

Flutter/Firestore:如何在滚动时将项目添加到流中(完成获取时保留滚动位置)?

从 Firestore 数据库中获取最新数据到 Flutter App

如何根据坐标列表与当前位置的距离进行搜索并显示? (Windows 电话 7)

如何将数据从我的数据库 (Firebase Firestore) 发送到我的 React Native 应用程序?

如何使用 Cordova 将动态数据从表单传递到 Firestore?