A fórmula de cálculo é a seguinte:
ilustrar:
1. A longitude e a latitude na fórmula são expressas em radianos;
2. Lat1 Lng1 representa a longitude e latitude do ponto A respectivamente, Lat2 Lng2 representa a longitude e latitude do ponto B respectivamente;
3. a=Lng1 -Lng2 é a diferença de latitude de dois pontos; b=Lat1 - Lat2 é a diferença de longitude de dois pontos;
4. 6378,137 é o raio da Terra em quilômetros;
A função de implementação c# é a seguinte:
público duplo DistanceOfTwoPoints (duplo lat1, duplo lng1, duplo lat2, duplo lng2)
{
duplo radLng1 = lng1 * Math.PI / 180,0;
duplo radLng2 = lng2 * Math.PI / 180,0;
duplo a = radLng1 - radLng2;
duplo b = (lat1-lat2) * Math.PI / 180,0;
duplo 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 * 10.000)/10.000;
retornar;
}
Foi aprovado corretamente após a verificação real (a unidade do resultado retornado é: quilômetros).