我有两对经度/纬度,并希望找到它们之间的距离。我坚持在这个特定的网站上使用经典的ASP。经典ASP中两个纬度/长点之间的距离
我发现了很多使用Haversine方程的代码示例,但没有在ASP中(它缺少ACos
函数,并没有内置pi
!我最终得到了一些代码工作,但经过仔细测试证明它是我对球形几何的理解不够好,所以请任何人都说如果他们之前在ASP中完成过这个工作?!谢谢。
我有两对经度/纬度,并希望找到它们之间的距离。我坚持在这个特定的网站上使用经典的ASP。经典ASP中两个纬度/长点之间的距离
我发现了很多使用Haversine方程的代码示例,但没有在ASP中(它缺少ACos
函数,并没有内置pi
!我最终得到了一些代码工作,但经过仔细测试证明它是我对球形几何的理解不够好,所以请任何人都说如果他们之前在ASP中完成过这个工作?!谢谢。
哦,亲爱的,我刚刚一直是一个完全白痴,并没有发现一个一点点的代码,我甚至进入三角之前设置我的纬度/长整数我觉得很愚蠢......
至少这意味着我的代码是正确的,会张贴在这里的情况下,它可以帮助别人:
'calculate distance in miles between two coordinates
Function DistanceBetweenPoints(iLat1, iLong1, iLat2, iLong2)
Dim iDistance
'first assume that the earth is spherical (ha ha)
iDistance = ACos((Sin(ToRad(iLat1)) * Sin(ToRad(iLat2))) + (Cos(ToRad(iLat1)) * Cos(ToRad(iLat2)) * Cos(ToRad(iLong2) - ToRad(iLong1)))) * 3959 'mean radius of earth in miles
DistanceBetweenPoints = CInt(iDistance) 'round up to lose decimal place
End Function
'ASP doesnt have these two trigonometric functions, or pi, built in (needed above)
Const PI = 3.141592653589793100 'use this value from SQL
Function ToRad(iDegrees)
ToRad = CDbl(iDegrees) * PI/180
End Function
Function ACos(x)
If x = 1 Then
ACos = 0
ElseIf x= -1 Then
Acos = PI
Else
ACos = ATn(-x/Sqr(-x * x + 1)) + 2 * ATn(1)
End If
End Function
此代码源较为齐全:距离可在英里或公里或海里.. http://www.geodatasource.com/developers/asp
已经回答了我的问题。卫生署! – 2011-01-28 13:10:04