如何用 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 最近的人?的主要内容,如果未能解决你的问题,请参考以下文章

如何用python表示三角函数

如何用java编写firebase云函数

如何用java 将文件加密压缩为zip文件.

如何用颤振在List中记录查询firebase数据库?

如何用matlab计算样本均值和方差

如何用Java获得数据库的返回值