0

根据我从用户那里获得的 GPS 坐标,我想在用户周围的某个半径(以米为单位)内查找游戏。我希望该半径是可配置的,因此它必须可以传递给将指定距离转换为十进制度半径的函数。

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

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

convertDistanceToRadiusDegrees('50') -> 0.123

然后我使用该函数的结果作为半径属性的值。

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

calcDistance(pos1, pos2) -> 50

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

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

4

2 回答 2

0

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

API - http://leafletjs.com/reference.html

距离方法之一,

http://leafletjs.com/reference.html#latlng-distanceto

于 2013-10-11T07:05:52.823 回答
0

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

这是错误的方式,因为 1 ° 纬度差不同于 1* 经度差

正确的是:计算currentLocation和目标中心圆坐标之间的距离。要么使用用户melc在leafletjs API中发布的缓慢但准确的haversine公式,要么在互联网上搜索haverisen公式,它的一些代码行,你可以复制和粘贴。不需要额外的库。(如果它到圆的中心的距离小于或等于半径,则该位置在圆内)

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

于 2013-10-11T12:51:56.850 回答