无法通过Windows手机以厘米计算距离

时间:2012-07-28 04:11:48

标签: windows-phone-7 geolocation

我开发了一个应用程序来读取Windows Phone 7上两个位置之间的距离。但是在测试应用程序时,每当我移动几厘米时,它就会开始在13000的时间内给出价值。

    Public Sub watcher1_PositionChanged(sender As Object, e As GeoPositionChangedEventArgs(Of GeoCoordinate))
    Dim dCoord As GeoCoordinate
    Dim currentDistance As Double
    Dim convertedDistance As Double
    dCoord = New GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude)

    If mlastCoordinate.Latitude <> 0.0 Then

        'distanceText.Text = e.Position.Location.Latitude.ToString()
        currentDistance = mlastCoordinate.GetDistanceTo(dCoord)
        mDistance = startCoordinate.GetDistanceTo(dCoord)
        ' mDistance += currentDistance
        'mDistance = Math.Round(mDistance, 2)
        'Dim distance As String
        'distance = String.Format("%.2", mDistance)
        If selectedSystemState.Equals("centi") Then
            convertedDistance = mDistance * 100
        ElseIf selectedSystemState.Equals("meter") Then
            convertedDistance = mDistance
        ElseIf selectedSystemState.Equals("inches") Then
            convertedDistance = mDistance * 39.37
        ElseIf selectedSystemState.Equals("feet") Then
            convertedDistance = mDistance * 3.28
        End If

        convertedDistance = Math.Round(convertedDistance, 2)

2 个答案:

答案 0 :(得分:0)

您获得的距离is in meters。所以,13000厘米是130米 - 除非我们知道你移动了什么以及如何移动,这似乎是一个非常合理的价值。

答案 1 :(得分:0)

如何实例化位置服务 - 如果您没有使用GeoCoordinateWatcher(GeoPositionAccuracy.High),您可能会使用Cell Tower数据,这些数据可能会超过100米。

即使您使用的是GPS,民用GPS装置的精度也只有5-10米左右,因此以厘米或英寸为单位测量距离确实超出了这些范围。

您应该检查GeoCoordinate.HorizontalAccuracy以查看“噪音”可能是什么。