0

我目前正在使用 html 5 的地理位置功能。一切正常,这是一个很好的功能。但是,这听起来可能违反直觉,我希望它获得的位置不太准确。

目前,它正在获取我的确切位置,并且由于数据隐私,我不想要这个。有没有办法让它不那么准确?

我目前正在尝试创建一个名为 getRandomGeoValue 的函数,如下所示:

function getRandomGeoValue(geoValue)
{


}

该函数采用地理值(纬度或经度)并返回随机不准确的地理值。我正在尝试使用 Javascripts Math.random() 函数,但结果太不准确了。

理想情况下,误差约为 17 英里。

4

1 回答 1

2

您可以获取当前位置(可能是纬度和经度)并对其应用几种转换之一:

  1. 将其四舍五入到最近的 10 英里(或您想要的任何精度级别)
  2. 将每个纬度和经度值四舍五入到最接近的 10 秒(或您想要的任何精度级别)
  3. 向纬度和经度添加一个随机值,使其 +/- 5 英里(或您想要的任何精度级别)。

如果您的纬度/经度值以度为单位,那么您可以使用此函数将其四舍五入到最接近的 N 英里:

function roundPosition(lat, lon, roundMiles) {
    // 69.11 miles per degree of latitude
    var roundFactor = 69.11 / roundMiles;
    lat = Math.round(lat * roundFactor) / roundFactor;

    // miles in 1 degree of longitude = 69.11 * cos(latitude in radians)
    var latRadians = (lat / 180) * Math.PI;
    var milesPerDegreeLong = 69.11 * Math.cos(latRadians);
    roundFactor = milesPerDegreeLong / roundMiles;
    lon = Math.round(lon * roundFactor) / roundFactor;
    return({latitude: lat, longitude: lon});
}

此函数返回一个对象,该对象具有新的四舍五入的纬度和经度作为属性。

示例用法:

var latitude = 69.2;
var longitude = 180.9;
var newPos = roundPosition(latitude, longitude, 17);
// newPos.latitude and newPos.longitude contain the new rounded values
于 2012-11-29T22:00:30.800 回答