|
|
|
@ -140,4 +140,55 @@ function getDistance(lat1, lon1, lat2, lon2) {
|
|
|
|
|
var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));
|
|
|
|
|
var s = b * A * (sigma - deltaSigma);
|
|
|
|
|
return s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return a formatted string with units corresponding to a number of meters.
|
|
|
|
|
* Respects user "units" setting ("metric" or "imperial").
|
|
|
|
|
* @param number meters
|
|
|
|
|
* @param bool space Add a space between number and units. Default true.
|
|
|
|
|
* @returns string "1000 ft", "2 mi", "3 km",
|
|
|
|
|
*/
|
|
|
|
|
function getDisplayDistance(meters, space) {
|
|
|
|
|
if (typeof space == 'undefined') {
|
|
|
|
|
space = true;
|
|
|
|
|
}
|
|
|
|
|
var units = localStorage.getItem("units");
|
|
|
|
|
|
|
|
|
|
if (units == null) {
|
|
|
|
|
units = "metric";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var number = Math.round(meters);
|
|
|
|
|
var label = "m";
|
|
|
|
|
|
|
|
|
|
if (units == "imperial") {
|
|
|
|
|
// Convert to feet
|
|
|
|
|
number = Math.round(number * 3.28084);
|
|
|
|
|
label = "ft";
|
|
|
|
|
if (number >= 1320) { // 0.25 miles
|
|
|
|
|
number = (number / 5280);
|
|
|
|
|
if (number < 10) {
|
|
|
|
|
number = number.toFixed(2);
|
|
|
|
|
} else {
|
|
|
|
|
number = Math.round(number);
|
|
|
|
|
}
|
|
|
|
|
label = "mi";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (number >= 1000) {
|
|
|
|
|
number = (number / 1000);
|
|
|
|
|
if (number < 16) {
|
|
|
|
|
number = number.toFixed(1);
|
|
|
|
|
} else {
|
|
|
|
|
number = Math.round(number);
|
|
|
|
|
}
|
|
|
|
|
label = "km";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (space) {
|
|
|
|
|
return number + " " + label;
|
|
|
|
|
}
|
|
|
|
|
return number + "" + label;
|
|
|
|
|
}
|