将lat / long传递给distance函数时输入转换问题

问题描述 投票:0回答:1

我通过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那样点亮了。我想这是一个类型转换问题但是我无法弄清楚如何解决它。有什么帮助吗?

vb.net type-conversion coordinates distance
1个回答
0
投票

好的,我用过

Dim getLat As Double = CDbl(Val(latitudine.Value))
Dim getLon As Double = CDbl(Val(longitudine.Value))

而且似乎可以做到这一点

© www.soinside.com 2019 - 2024. All rights reserved.