Формула расчета следующая:
проиллюстрировать:
1. Долгота и широта в формуле выражены в радианах;
2. Lat1 Lng1 представляет долготу и широту точки A соответственно, Lat2 Lng2 представляет долготу и широту точки B соответственно;
3. a=Lng1 -Lng2 – разность широт двух точек; b=Lat1 – Lat2 – разность долгот двух точек;
4. 6378,137 – радиус Земли в километрах;
Функция реализации С# выглядит следующим образом:
public double DistanceOfTwoPoints(двойная широта1, двойная длина1, двойная широта2, двойная длина2)
{
двойной радLng1 = lng1 * Math.PI/180.0;
двойной радLng2 = lng2 * Math.PI/180.0;
двойной a = radLng1 - radLng2;
двойной b = (широта1-широта2) * Math.PI/180,0;
double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2), 2) +
Math.Cos(radLng1) * Math.Cos(radLng2) * Math.Pow(Math.Sin(b/2), 2)))* 6378,137;
s =Math.Round(s * 10000) / 10000;
вернуть с;
}
Он был пройден правильно после фактической проверки (единица возвращаемого результата: километры).