我正在开发一个Windows手机运动追踪器应用程序,它使用gps传感器来计算跑步者的行进距离,我使用geocoordinatewatcher类同样,将移动阈值设置为100.但是,我发现我的应用程序给出了距离即使设备保持静止,也会显示值。我的应用程序应该只在设备改变位置时给出距离。我在市场上的其他应用程序中发现了相同的错误,请告诉我我在哪里做错了? 我的代码。
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 150;
watcher.PositionChanged += watcher_PositionChanged;
watcher.Start();
{
latitudeCurrent = e.Position.Location.Latitude;
longitudeCurrent = e.Position.Location.Longitude;
if (stepCounter == 0)
{
latitudePrevious = latitudeCurrent;
longitudePrevious = longitudeCurrent;
distanceTravelled += Math.Round(Calculate(latitudePrevious,longitudePrevious,latitudeCurrent,longitudeCurrent),2);
txbDistanceTravelled.Text = distanceTravelled.ToString();
txbCalories.Text=string.Format("{0:f0}", distanceTravelled * 65);
stepCounter++;
var millisPerKilometer = (distanceTravelled) * (System.Environment.TickCount - _previousPositionChangeTick);
txbPace.Text = TimeSpan.FromMilliseconds(millisPerKilometer).ToString(@"mm\:ss");
double hrs = counterTick / 3600;
if (!double.IsNaN((distanceTravelled / hrs)))
{
txbSpeed.Text = (distanceTravelled / hrs).ToString();
}
else
{
txbSpeed.Text = "0";
}
}
}
答案 0 :(得分:0)
您正在为Windows Phone 7或Windows Phone 8开发应用程序?如果您正在为后者开发,则需要使用新的Geolocator类而不是GeoCoordinateWatcher。
此外,正如LewisBenge所说,如果你正在测试这个室内,你可以获得WiFi位置甚至蜂窝数据。在户外测试可能会更好。
答案 1 :(得分:0)
在您测试的地方,您的GPS信号可能会很弱。在室外尝试。