如何用 Firebase 返回 x 最近的人?
Posted
技术标签:
【中文标题】如何用 Firebase 返回 x 最近的人?【英文标题】:How to return x nearest people in flutter with Firebase? 【发布时间】:2020-07-11 02:44:42 【问题描述】:是否可以从 Flutter 中的 Cloud Firestore 数据库中查询一定数量的最近位置? geoflutterfire 包似乎只允许您查询半径内的位置。缓慢增加半径直到找到可接受的用户数量是唯一的解决方案吗?这听起来像是一个非常不干净的解决方案。是否有其他包或方法可以为您提供此功能?
【问题讨论】:
【参考方案1】:由于 Geo*Fire 包的工作方式,它们无法返回 X 最接近的结果。
常见模式:
-
从合理的范围开始,客户端按距离对结果进行排序,然后返回前 X。
如果结果太少,请使用更大的范围重试。
在 Firestore 中增加范围并不像您想象的那么昂贵,因为在第一次地理查询之后,较小范围的文档已经在客户端缓存中。
【讨论】:
感谢您的回答。我之所以问是因为该包不支持使用 .limit() 函数,所以我担心我可能会收到太多结果并因读取次数过多而被收费。我会慢慢增加半径来解决这个问题。谢谢。 你几乎肯定会过度阅读,因为这些包都是基于 geohashes 工作的,它只覆盖矩形范围,而一个点和半径构成一个圆。如果您担心成本,请考虑使用实时数据库。虽然它有同样的问题,但这种小型读取操作的成本通常要小得多。以上是关于如何用 Firebase 返回 x 最近的人?的主要内容,如果未能解决你的问题,请参考以下文章