Firebase / Angular2 - 在数据库中查找最接近用户lat / long的lat / long

时间:2018-02-23 21:20:42

标签: javascript angular firebase firebase-realtime-database

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

我还使用geolocation来吸引用户lat / long

我想做的是获取最接近用户的location,并检查它们是否距离该地点5英里。

我现在不太关心如果用户在5英里范围内,我发现了一个算法似乎对我这样做..

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

该表看起来像这样(忽略索引,稍后我将使用唯一ID更改它):

enter image description here

以及javascript:

user.Lat = 35.90491

user.Long = -79.04691

将用户lat / long与位置lat / long

进行匹配的任何帮助

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

然后按计算字段对其进行排序 - 最小数字是最接近的点。

请记住,它可以在相对较短的距离上工作,但如果位置太远或接近极点(由于投影),可能会出错。