【问题标题】:How to sort a list of users closest to you by distance?如何按距离对离您最近的用户列表进行排序?
【发布时间】:2016-09-08 06:09:26
【问题描述】:

一般来说,这更像是一个快速的问题,但如果它有帮助:我将所有这些用户存储在 Firebase 中。

所以我试图对我的 Firebase 调用保持保守,我只是好奇如果我想显示按距离排序的 100 个最接近的用户,最好的选择是什么。

我熟悉使用 CoreLocation 通过半径计算距离,但我正在考虑后端。最好的方法真的是从 Firebase 中拉出所有用户,将它们放在字典中,然后按坐标键对它们进行排序吗?我没有看到替代方案。

谢谢各位!

【问题讨论】:

  • 如果您将用户存储在 Firebase 数据库中,最好的方法是使用 Geofire。该库使用地理哈希来允许在服务器上按距离进行有效查询。

标签: ios swift uitableview firebase core-location


【解决方案1】:

答案有点奇怪。但在这里你可以按价值排序 vospolzovatsya。

您可以从远处为每个用户贴上标签并写上firevase。标签可以在您运行应用程序或站点时更新。你只需要增加桌子距离。

例子会更清楚。

查询将如下所示

const ref = firebase.database().ref('Distance');

ref.orderByChild('distanceFrend').limitToFirst(100).on('value', snap => { .... }

您将获得一个按距离排序的列表。一开始是最接近的。

希望这个例子能帮助解决问题

【讨论】:

  • 网络请求示例。我不熟悉 SWIFT
  • 非常感谢!所以,基本上,建议您为每个用户设置一个距离对象,并让所有用户与其所属的用户层次结构保持距离?
  • 你可以说是。实施的机会很多。这取决于最终想要得到什么。这里的主要内容是以与用户的距离形式发送数据。