Javascript 以十进制度数将gps坐标转换为距离并将距离转换为半径

Javascript 以十进制度数将gps坐标转换为距离并将距离转换为半径,javascript,node.js,gps,Javascript,Node.js,Gps,根据我从用户那里得到的GPS坐标,我想查找用户周围一定半径(米)内的游戏。我希望该半径是可配置的,因此它必须能够通过一个函数,该函数将指定的距离转换为十进制的半径 我将用户GPS坐标和游戏GPS坐标存储在MongoDB中,并使用inthein.center({center:[user.pos[0],user.pos[1]],radius:1};)查询查找用户位置附近的游戏 该查询中的radius属性是我想要配置的。假设我想将50米转换成十进制的半径: convertDistanceToRadiu

根据我从用户那里得到的GPS坐标,我想查找用户周围一定半径(米)内的游戏。我希望该半径是可配置的,因此它必须能够通过一个函数,该函数将指定的距离转换为十进制的半径

我将用户GPS坐标和游戏GPS坐标存储在MongoDB中,并使用inthein.center({center:[user.pos[0],user.pos[1]],radius:1};)查询查找用户位置附近的游戏

该查询中的radius属性是我想要配置的。假设我想将50米转换成十进制的半径:

convertDistanceToRadiudDegrees('50')->0.123

然后,我使用该函数的结果作为radius属性的值

我想计算用户和每个找到的游戏之间的距离:

calcDistance(位置1、位置2)->50

是否有Node.JS模块/JS插件可以同时执行这两个功能?到目前为止,我只找到了Node.JS模块,这些模块计算点到点之间的距离,而不是将米的距离转换为十进制度数


这样的模块存在吗?如果没有,是否有任何模块可以将米半径转换为十进制度数?甚至有可能吗?

我最近一直在使用的一个是FapleJS,它是用于GIS计算的完整API

API-

距离法之一

ad“该查询中的半径属性是我想要配置的。假设我想要将50米转换为十进制半径: 转换器距离半径度('50')->0.123 "

这是错误的方法,因为1°纬度差与1*纵向差不同

正确答案是: 计算当前位置和目标中心圆坐标之间的距离。 要么使用用户melc在传单JS API中发布的缓慢但准确的哈弗森公式,要么在互联网上搜索哈弗森公式,它的一些代码行,你可以复制和粘贴。不需要额外的图书馆。 (如果其到圆中心的距离小于或等于半径,则该位置位于圆内)


Tr如果你能接受这个公式,如果你需要每秒检查数千个目的地,你需要付出更多的努力。(例如,一个空间索引可以将计算减少到附近的几个pouint)

关于如何计算这一点,有很多资源,只需谷歌搜索即可。为什么不编写自己的模块?