0

我开发了一个应用程序来读取 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)
4

2 回答 2

0

您获得的距离以米为单位。所以,13000 厘米就是 130 米——除非我们知道你移动的是什么以及如何移动,否则这似乎是一个非常合理的值。

于 2012-07-28T04:46:20.820 回答
0

您如何实例化定位服务 - 如果您不使用GeoCoordinateWatcher(GeoPositionAccuracy.High),您可能会使用蜂窝塔数据,这些数据可能相差 100 米。

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

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

于 2012-08-03T10:30:32.113 回答