这个是已知两点求距离的,你看看有没有帮助希望对你有点帮助! '---------------------------------------------------------------------- '已知经纬度求距离的函数 '---------------------------------------------------------------------- Function Countdistance(ByVal lon1 As Double, ByVal lat1 As Double, ByVal lon2 As Double, ByVal lat2 As Double) As Double Dim d As Double Dim a1, a2, b1, b2 As Double a1 = lat1 * 0.0174532925194 a2 = lat2 * 0.0174532925194 b1 = lon1 * 0.0174532925194 b2 = lon2 * 0.0174532925194 Countdistance = ArcCos(Math.Cos(a1) * Math.Cos(a2) * Math.Cos(b1) * Math.Cos(b2) + Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2)) * 6371
End Function
Public Function ArcCos(ByVal X As Double) As Double If CStr(X) = "1" Then ArcCos = 0 Exit Function ElseIf CStr(X) = "-1" Then ArcCos = 3.14159265358979 Exit Function Else ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) End If End Function
| . B | / | / | / | / | / | / | /------- A. x 已知A点坐标,BAX的角度,AB的距离.B 点的经度应该是 A.经度+(-) AB * COS(BAX) B 点的纬度应该是 B.纬度+(-) AB * Sin(BAX)难道真的这么简单?
2.如果是直线距离,那就是简单的数学了。结合math.cos及math.sin应该不难算出来
'----------------------------------------------------------------------
'已知经纬度求距离的函数
'----------------------------------------------------------------------
Function Countdistance(ByVal lon1 As Double, ByVal lat1 As Double, ByVal lon2 As Double, ByVal lat2 As Double) As Double
Dim d As Double
Dim a1, a2, b1, b2 As Double
a1 = lat1 * 0.0174532925194
a2 = lat2 * 0.0174532925194
b1 = lon1 * 0.0174532925194
b2 = lon2 * 0.0174532925194
Countdistance = ArcCos(Math.Cos(a1) * Math.Cos(a2) * Math.Cos(b1) * Math.Cos(b2) + Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2)) * 6371
End Function
Public Function ArcCos(ByVal X As Double) As Double
If CStr(X) = "1" Then
ArcCos = 0
Exit Function
ElseIf CStr(X) = "-1" Then
ArcCos = 3.14159265358979
Exit Function
Else
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End If
End Function
| /
| /
| /
| /
| /
| /
| /-------
A. x
已知A点坐标,BAX的角度,AB的距离.B 点的经度应该是 A.经度+(-) AB * COS(BAX)
B 点的纬度应该是 B.纬度+(-) AB * Sin(BAX)难道真的这么简单?
已知A,B两点的经纬度,求A点相对于B点的方向