您可以获取当前位置(可能是纬度和经度)并对其应用几种转换之一:
- 将其四舍五入到最近的 10 英里(或您想要的任何精度级别)
- 将每个纬度和经度值四舍五入到最接近的 10 秒(或您想要的任何精度级别)
- 向纬度和经度添加一个随机值,使其 +/- 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