Skip to content

Instantly share code, notes, and snippets.

@vic
Created August 2, 2013 01:57
Show Gist options
  • Select an option

  • Save vic/6136967 to your computer and use it in GitHub Desktop.

Select an option

Save vic/6136967 to your computer and use it in GitHub Desktop.
find_nearest point
function rad(x) {return x*Math.PI/180;}
function find_nearest(my_position, points) {
var lat = my_position[0];
var lng = my_position[1];
var R = 6371; // radius of earth in km
var distances = [];
var closest = null;
for( i=0;i<points.length; i++ ) {
var mlat = points[i][0];
var mlng = points[i][1];
var dLat = rad(mlat - lat);
var dLong = rad(mlng - lng);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(rad(lat)) * Math.cos(rad(lat)) * Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
distances[i] = d;
if ( closest == -1 || d < distances[closest] ) {
closest = i;
}
}
return closest;
}
// find_nearest( [1,2], [ [2,3], [2, 3] ] )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment