【问题标题】:Firebase/Angular2 - Find lat/long in database that is closest to users lat/longFirebase/Angular2 - 在数据库中查找最接近用户 lat/long 的 lat/long
【发布时间】:2018-02-24 06:00:14
【问题描述】:

我有一张名为locations 的表,其中包含一组地点及其lat/long。

我还使用geolocation 来获取用户lat/long。

我想做的是获取离用户最近的location,并检查他们是否在该地点的 5 英里范围内。

我现在不太担心用户是否在 5 英里范围内,我找到了一个似乎可以为我做到这一点的算法..

但我很好奇的是我应该如何遍历 firebase 表并检查 lat/long 是否是最接近的.. firebase 有没有办法根据最接近的变量进行排序?

表格看起来像这样(忽略索引,我稍后会用唯一的 id 更改它):

以及在 javascript 中:

user.Lat = 35.90491

user.Long = -79.04691

将用户 lat/long 与位置 lat/long 匹配的任何帮助

到目前为止,我在表格中有大约 30-40 个位置。计划添加更多。

谢谢!

【问题讨论】:

  • @TomaszBubała 是的,但我不确定这是否是我真正需要的......就像我不能只获取所有位置并比较用户位置与数据位置吗?
  • 当然可以。它可能对许多记录无效。我不知道 geofire 如何处理它 - 我会检查它是否能更好地解决您的问题。

标签: javascript angular firebase firebase-realtime-database


【解决方案1】:

如果您谈论的是少量记录(而不是数百万)。您可以使用以下公式创建临时表或临时列: 对于每个位置 p -> (user.lat-p.lat)^2+(user.lon-p.lon)^2

然后按计算字段排序 - 最小的数字是最近的点。

请记住,它可以在相对较短的距离上工作,但当位置太远或靠近两极时可能会出错(因为投影)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多