使用Javascript对100米半径内的经纬度坐标进行置乱

使用Javascript对100米半径内的经纬度坐标进行置乱,javascript,google-maps,math,latitude-longitude,Javascript,Google Maps,Math,Latitude Longitude,标题说明了一切,出于隐私原因,我需要在100米半径范围内扰乱lat/lon坐标。我只是数学很差,不知道如何将100米转换成纬度/纬度 我会有一个像这样的位置: lat: 52.5037086 lng: 13.434223100000054 需要在100m半径内随机置乱,即生成的坐标在任何方向上距离原始坐标的最远距离为100m 我已经看到了这个公式: d = acos( sin(φ1)⋅sin(φ2) + cos(φ1)⋅cos(φ2)⋅cos(Δλ) ) ⋅ R where: φ

标题说明了一切,出于隐私原因,我需要在100米半径范围内扰乱lat/lon坐标。我只是数学很差,不知道如何将100米转换成纬度/纬度

我会有一个像这样的位置:

lat: 52.5037086
lng: 13.434223100000054
需要在100m半径内随机置乱,即生成的坐标在任何方向上距离原始坐标的最远距离为100m

我已经看到了这个公式:

d = acos( sin(φ1)⋅sin(φ2) + cos(φ1)⋅cos(φ2)⋅cos(Δλ) ) ⋅ R

where:  
    φ = latitude, λ = longitude
    R = radius of earth
    d = distance between the points
但是,不知道如何在JavaScript中实现这一点。这些“点”是谷歌地图中的标记,如果它起作用的话


老实说,它甚至不需要是一个圆,只要在100m x 100m平方内的随机位置就可以了。

在如此小的范围内,我们可以使用问题的线性近似和球形地球模型

考虑一下,您现在的位置是
(横向,纵向)
。然后,将
lat
增加1°会导致距离
d_lat=Pi*R*1°/180°
原点的距离(圆的简单周长)

类似地,将
long
增加1°会导致距离
d_long=cos(lat)*Pi*R*1°/180°

然后,您可以计算纬度和经度的最大变化:

maxChangeLatitude  = 100 m / d_lat
maxChangeLongitude = 100 m / d_long
在这个正方形中找到一个随机点,你就得到了你的点:

newLat  = lat  + (2 * Math.random() - 1) * maxChangeLatitude;
newLong = long + (2 * Math.random() - 1) * maxChangeLongitude;

在如此小的范围内,我们可以使用问题的线性近似和球形地球模型

考虑一下,您现在的位置是
(横向,纵向)
。然后,将
lat
增加1°会导致距离
d_lat=Pi*R*1°/180°
原点的距离(圆的简单周长)

类似地,将
long
增加1°会导致距离
d_long=cos(lat)*Pi*R*1°/180°

然后,您可以计算纬度和经度的最大变化:

maxChangeLatitude  = 100 m / d_lat
maxChangeLongitude = 100 m / d_long
在这个正方形中找到一个随机点,你就得到了你的点:

newLat  = lat  + (2 * Math.random() - 1) * maxChangeLatitude;
newLong = long + (2 * Math.random() - 1) * maxChangeLongitude;

所以基本上你需要一个半径为100米的圆形区域,其中心应该是(52.5037086,13.434223100000054),对吗?是的,然后用math.random在该半径内选取一个点。所以基本上你需要一个半径为100米的圆形区域,其中心应该是(52.5037086,13.434223100000054),对吗,然后用math.random在半径内选择一个点。