假设地球是个球体,利用的是空间解析几何知识 Public Function RadLen(ByVal lngA, ByVal latA, ByVal lngB, ByVal latB) Dim R As Double = 6378.137 '半径 '求A点的空间坐标 Dim xA = Math.Cos(latA) * Math.Cos(lngA) Dim yA = Math.Cos(latA) * Math.Sin(lngA) Dim zA = Math.Sin(latA) '求B点的空间坐标 Dim xB = Math.Cos(latB) * Math.Cos(lngB) Dim yB = Math.Cos(latB) * Math.Sin(lngB) Dim zB = Math.Sin(latB) 'O点是圆心 '求距离 Dim OA = Math.Sqrt(Math.Pow(xA, 2) + Math.Pow(yA, 2) + Math.Pow(zA, 2)) Dim OB = Math.Sqrt(Math.Pow(xB, 2) + Math.Pow(yB, 2) + Math.Pow(zB, 2)) Dim AB = Math.Sqrt(Math.Pow(xA - xB, 2) + Math.Pow(yA - yB, 2) + Math.Pow(zA - zB, 2)) '求OA、OB之间的夹角弧度 Dim Rad = Math.Acos((Math.Pow(OA, 2) + Math.Pow(OB, 2) - Math.Pow(AB, 2)) / (2 * OA * OB)) / 180 * Math.PI Return Rad * R End Function