我有一个名为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个位置。计划添加更多。
谢谢!
答案 0 :(得分:0)
如果你谈论少量记录(而不是数百万)。您可以使用以下公式创建临时表或临时列:
对于每个位置p - > (user.lat-p.lat)^2+(user.lon-p.lon)^2
然后按计算字段对其进行排序 - 最小数字是最接近的点。
请记住,它可以在相对较短的距离上工作,但如果位置太远或接近极点(由于投影),可能会出错。