Haversine formule om te dichtsbijzijnde punt te vinden (google maps)

Het dichtsbijzijnde punt vinden op de kaart aan de hand van een lengte- en breedtegraad.
Erg handig voor als je met route bepaling bezig bent. Deze functie is wel gebaseerd op de lat en lng van
de google maps API. maar zou verder niks uit mogen maken. Hier wordt door een array van lat’s en lng’s gelooped.

var R = 6371;
var distances = [];
var closest = -1;
var prev = -1;
for(var i = 0; i < markers.length; i++ ) {
	var mlat = markers[i].position.lat();
	var mlng = markers[i].position.lng();
	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] ) {
		if (typeof closest != 'undefined')
		{
			prev = closest;
		}
		closest = i;

	}
}
alert(closest);
16
Sep 2011
POSTED BY
POSTED IN Javascript
DISCUSSION 0 Comments
TAGS

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>