如何使HTML 5的地理位置不准确?

时间:2012-11-29 21:53:12

标签: javascript html5

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

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

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

function getRandomGeoValue(geoValue)
{


}

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

理想情况下,不准确度大约为17英里。

1 个答案:

答案 0 :(得分:2)

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

  1. 将它四舍五入到最接近的10英里(或任何你想要的准确度)
  2. 将每个纬度和经度值四舍五入到最接近的10秒(或任何您想要的准确度)
  3. 为纬度和经度添加一个随机值,使其达到+/- 5英里(或任何您想要的准确度)。
  4. 如果您的纬度/经度值以度为单位,则可以使用此功能将其四舍五入到最接近的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