2012-11-29 38 views
0

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

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

目前我正在试图创建一个名为getRandomGeoValue功能,如下图所示:

function getRandomGeoValue(geoValue) 
{ 


} 

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

理想情况下,不准确度将在17英里左右。

回答

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 
+0

我没有太明白你的第二个点。秒? – Goaler444

+1

@ user1724140 - 经度和纬度可以用度,分,秒来表示。赤道上的经度为1秒约100英尺。所以四舍五入到最接近的秒钟会将精度降低到约50英尺。舍入到一分钟会将精度降低到大约1/2英里。经度也可以用弧度或度数和小数分钟来指定,如180度,50.4分钟。你总是可以从一个转换到另一个。 – jfriend00

+0

好的,谢谢,生病尝试 – Goaler444