Я разрабатываю приложение для отслеживания спортивных состязаний в Windows, которое использует GPS-датчики для расчета расстояния, пройденного бегуном, для этого я использую класс геокоординатного ватчера, устанавливая порог движения до 100. Но я нахожу свой приложение дает значения расстояния, даже если устройство остается неподвижным. Мое приложение должно показывать расстояние только тогда, когда устройство меняет свое положение. Я нашел ту же ошибку в приложениях, которые находятся на рынке, скажите, пожалуйста, где я делаю неправильно?
Мой код.Вопросы точности GPS
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";
}
}
}
Вы тестируете устройство на улице или в помещении на WiFi? Если вы находитесь в помещении, скорее всего, вы не используете GPS, так что теряете уровень точности и переключаетесь на ячейки или Wi-Fi. Возможно, включена некоторая зарегистрированная информация об отладке и выведет устройство на прогулку на улицу и посмотрим, какие результаты вы получите. – LewisBenge