我开发了一个应用程序来读取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)
答案 0 :(得分:0)
您获得的距离is in meters。所以,13000厘米是130米 - 除非我们知道你移动了什么以及如何移动,这似乎是一个非常合理的价值。
答案 1 :(得分:0)
如何实例化位置服务 - 如果您没有使用GeoCoordinateWatcher(GeoPositionAccuracy.High)
,您可能会使用Cell Tower数据,这些数据可能会超过100米。
即使您使用的是GPS,民用GPS装置的精度也只有5-10米左右,因此以厘米或英寸为单位测量距离确实超出了这些范围。
您应该检查GeoCoordinate.HorizontalAccuracy
以查看“噪音”可能是什么。