Ando haciendo una aplicacion web de geolocalización bastante compleja con Openstreetmap, Openlayers, Ajax y PHP, y una de las funcionalidades que necesito es saber la distancia que hay entre dos coordenadas GPS decimales. Y la solución se llama función Haversine.

Este caso perticular está en PHP, y devuelve la distancia en Kilómetros, pero haciendo los ajustes pertinentes se puede hacer que lo devuelva en metros, millas o las unidades que uno necesite.

función Haversine:

function distancia($lat1,$long1,$lat2,$long2){
	$distancia = (sin(deg2rad($lat1)) * sin(deg2rad($lat2))) + (cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($long1 - $long2))); 
	$distancia = acos($distancia); 
	$distancia = rad2deg($distancia); 
	$distancia = $distancia * 60 * 1.1515 * 1.609344; 
 
	return (round($distancia,2)); 
}

Saludos.