두 점 사이의 거리를 계산해야합니다 (위도는 & 경도). 전 C#C# haversine 구현은 googlemaps/movable-type.co.uk과 다른 답변을 제공합니다.
private double toRadian(double val)
{
return (Math.PI/180) *
}
public double Distance(Position pos1, Position pos2,DistanceType type)
{
double R = (type == DistanceType.Miles) ? 3960 : 6378137; // 6318137 in meters
double dLat = toRadian(pos2.Latitude - pos1.Latitude);
double dLon = toRadian(pos2.Longitude - pos2.Longitude);
double a = Math.Sin(dLat/2) * Math.Sin(dLat/2) +
Math.Cos(this.toRadian(pos1.Latitude)) * Math.Cos(this.toRadian(pos2.Latitude)) *
Math.Sin(dLon/2) * Math.Sin(dLon/2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double d = R * c;
return d;
}
의 표준 하버 사인 공식을 구현하지만 코드에서와 웹 사이트 http://www.movable-type.co.uk/scripts/latlong.html 다른 답변을 얻을. 입력 예를 들어 : pos1.Latitude = 12.916822
및 Pos1.Longitude = 77.599816
및 pos2.Latitude = 12.917135 및 Pos2.Longitude = 77.585783 내 프로그램을 반환 34.843 (I 대답에 Math.Round((dist), 4)
을 수행 할 때) 웹 사이트가 1.521 킬로미터를 제공으로 사람이 지적시겠습니까 뭐가 잘못 됐어? 추신 : 내 프로그램은 거리를 미터 단위로 계산합니다.