Skip to content

Instantly share code, notes, and snippets.

@mladenp
Created May 16, 2017 12:10
Show Gist options
  • Save mladenp/b79c21e87fec4979fa1a28355935fbf9 to your computer and use it in GitHub Desktop.
Save mladenp/b79c21e87fec4979fa1a28355935fbf9 to your computer and use it in GitHub Desktop.
Calulate Distance between lat lng points
/* Calculate Distance between two latitute & longitude points */
function GPScalculateDistance(lat1, lng1, lat2, lng2)
{
//radians
lat1 = (lat1 * 2.0 * Math.PI) / 60.0 / 360.0;
lng1 = (lng1 * 2.0 * Math.PI) / 60.0 / 360.0;
lat2 = (lat2 * 2.0 * Math.PI) / 60.0 / 360.0;
lng2 = (lng2 * 2.0 * Math.PI) / 60.0 / 360.0;
// use to different earth axis length
var a = 6378137.0; // Earth Major Axis (WGS84)
var b = 6356752.3142; // Minor Axis
var f = (a-b) / a; // "Flattening"
var e = 2.0*f - f*f; // "Eccentricity"
var beta = (a / Math.sqrt( 1.0 - e * Math.sin( lat1 ) * Math.sin( lat1 )));
var cos = Math.cos( lat1 );
var x = beta * cos * Math.cos( lng1 );
var y = beta * cos * Math.sin( lng1 );
var z = beta * ( 1 - e ) * Math.sin( lat1 );
beta = ( a / Math.sqrt( 1.0 - e * Math.sin( lat2 ) * Math.sin( lat2 )));
cos = Math.cos( lat2 );
x -= (beta * cos * Math.cos( lng2 ));
y -= (beta * cos * Math.sin( lng2 ));
z -= (beta * (1 - e) * Math.sin( lat2 ));
return (Math.sqrt( (x*x) + (y*y) + (z*z) )/1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment