2012-11-29 53 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