Closed chron0 closed 11 years ago
function distance(lat1, lon1, lat2, lon2, unit)
{
var radlat1 = Math.PI * lat1/180
var radlat2 = Math.PI * lat2/180
var radlon1 = Math.PI * lon1/180
var radlon2 = Math.PI * lon2/180
var theta = lon1-lon2
var radtheta = Math.PI * theta/180
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
dist = Math.acos(dist)
dist = dist * 180/Math.PI
dist = dist * 60 * 1.1515
if (unit=="K") { dist = dist * 1.609344 }
if (unit=="N") { dist = dist * 0.8684 }
var result = [];
if (dist < 1 && unit == 'K') {
result[0]=Math.round(dist * 1000);
result[1]="m";
} else {
result[0]=Math.round(dist);
result[1]="km";
}
return result;
}
I would put such logic into a Feature and then use instances of feature to tell distance between each other
featureA.distanceTo(featureB)
for calculations we can use
MM.Point.distance(p1, p2);
MM.Location.distance(l1, l2, r)
as explained in https://github.com/modestmaps/modestmaps-js/wiki/Point%2C-Location%2C-and-Coordinate
One of the basic features is still missing: The Distance Calculator. As long as no geolocation is set or known, the calculator's source should be mapCenter. As soon as geolocation is known, the distance should be calculated based on the user's geolocation. I already have the math/mockup code implementation to calculate the distance between two lat/lon pairs, the only question remaining is: where to put it?