Портировал как то на JS чей то алгоритм, в расчет идет кривизна шарика, координаты можно использовать прям из карта Гугла или Яши. Результат возвращает в метрах
function calculateTheDistance (shir_A, dolg_A, shir_B, dolg_B) {
lat1 = shir_A * Math.PI / 180;
lat2 = shir_B * Math.PI / 180;
long1 = dolg_A * Math.PI / 180;
long2 = dolg_B * Math.PI / 180;
cl1 = Math.cos(lat1);
cl2 = Math.cos(lat2);
sl1 = Math.sin(lat1);
sl2 = Math.sin(lat2);
delta = long2 - long1;
cdelta = Math.cos(delta);
sdelta = Math.sin(delta);
y = Math.sqrt(Math.pow(cl2 * sdelta, 2) + Math.pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
x = sl1 * sl2 + cl1 * cl2 * cdelta;
ad = Math.atan2(y, x);
dist = ad * 6372795;
return dist;
}