我通过java函数获取当前的lat / long坐标,该函数将这些值写入页面上的2个不同的隐藏字段中,然后在后面的代码中我传递这些值并将其固定为函数来计算距离。问题是,即使我检查相同的纬度/长值,它也会计算出千分之一公里。
这是获取aspx坐标所涉及的一些代码:
var lat = position.coords.latitude;
var lng = position.coords.longitude;
document.getElementById('<%=latitudine.ClientID %>').value = lat;
document.getElementById('<%=longitudine.ClientID %>').value = lng;
然后在代码后面我有这个功能
Public Function gpsCordDistance(ByVal pointLat As Double, ByVal pointLon As Double, ByVal locLat As Double, ByVal locLon As Double) As Double
Dim R As Double = 6371
Dim dLat As Double = deg2rad(pointLat - locLat)
Dim dLon As Double = deg2rad(pointLon - locLon)
Dim lat1 As Double = deg2rad(locLat)
Dim lat2 As Double = deg2rad(pointLat)
Dim a As Double = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Sin(dLon / 2) * Math.Sin(dLon / 2) * Math.Cos(lat1) * Math.Cos(lat2)
Dim c As Double = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a))
Dim d As Double = R * c
Return d
End Function
我正在传递这样的值:
Dim getLat As String = latitudine.Value
Dim getLon As String = longitudine.Value
gpsCordDistance(44.4040527, 8.9336762, getLat, getLon)
虽然我传递给函数的固定值是虚线的(44.4040527,8.9336762),但是当我调试代码时,我看到getLat e getLon的管理方式有所不同,像444040527,89336762那样点亮了。我想这是一个类型转换问题但是我无法弄清楚如何解决它。有什么帮助吗?
好的,我用过
Dim getLat As Double = CDbl(Val(latitudine.Value))
Dim getLon As Double = CDbl(Val(longitudine.Value))
而且似乎可以做到这一点