基于我从用户那里获得的GPS坐标,我想在用户周围的特定半径(以米为单位)内查找游戏。我希望该半径是可配置的,因此它必须能够传递给将指定距离转换为十进制度半径的函数。
我在MongoDB中存储用户GPS坐标和游戏GPS坐标并使用within.center({center:[user.pos [0],user.pos [1]],radius:1};)查询到找到靠近用户位置的游戏。
该查询中的radius属性是我想要配置的。假设我想将50米转换为十进制度的半径:
convertDistanceToRadiusDegrees('50') -> 0.123
然后我使用该函数的结果作为radius属性的值。
我想计算用户与每个找到的游戏之间的距离:
calcDistance(pos1, pos2) -> 50
是否有可以同时执行这两项功能的Node.JS模块/ JS插件?到目前为止,我只设法找到Node.JS模块来计算点到点之间的距离,而不是将距离以米为单位转换为十进制度。
这样的模块是否存在?如果没有,是否有任何模块可以将半径转换为十进制度?它甚至可能吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
ad“该查询中的radius属性是我想要配置的。假设我想将50米转换为十进制度半径: convertDistanceToRadiusDegrees('50') - > 0.123 “
这是错误的方法,因为1°纬度差异不同于1 *纵向差异
正确的是: 计算currentLocation和目标中心圆坐标之间的距离。 要么使用缓慢但准确的半正式公式,由用户melc在leafletjs API中发布,要么在互联网上搜索haverisen公式,它的一些代码行,你可以复制和粘贴。不需要附加库。 (如果距离圆心的距离小于或等于半径,则位置在圆圈内)
如果您可以使用该公式,如果您需要每秒检查目的地的数量,则需要更多努力。 (例如,空间索引可以减少附近的几个计算量)