2

我正在开发一个跑步追踪器/计步器应用程序,我正在使用地理定位器,我将地理定位器的移动阈值属性保持为 10 这是我的一段代码。

按钮点击事件

 private void StartButton_Click(object sender, RoutedEventArgs e)
        {
            myLocator = new Geolocator();
            myLocator.DesiredAccuracy = PositionAccuracy.Default;
            myLocator.MovementThreshold = 10;
            myLocator.ReportInterval=500;
            myLocator.PositionChanged += myGeoLocator_PositionChanged;
            _startTime = System.Environment.TickCount;
            _timer.Start();
        }
 void myGeoLocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
        {
            Dispatcher.BeginInvoke(() =>
            {
                var coord = new GeoCoordinate(args.Position.Coordinate.Latitude, args.Position.Coordinate.Longitude);
                if (_line.Path.Count > 0)
                {
                    var previousPoint = _line.Path.Last();
                    distance += coord.GetDistanceTo(previousPoint);
                    var millisPerKilometer = (1000.0 / distance) * (System.Environment.TickCount - _previousPositionChangeTick);
                    _kilometres += Math.Round(distance, 2);
                    distanceLabel.Text = string.Format("{0:f2} meters", _kilometres);
                    MessageBox.Show("Changed");
                }
                else
                {
                    Map.Center = coord;
                }
                _line.Path.Add(coord);
                _previousPositionChangeTick = System.Environment.TickCount;
            });
        }

问题是位置更改事件只被调用一次,我试图通过更改位置点来调试模拟器中的代码,但仍然没有调用该事件。我在哪里做错了?

4

1 回答 1

2

您的代码将在真实设备上运行。但是,为了在模拟器上进行测试,请尝试将DesiredAccuracy属性设置为High.

如何测试使用 Windows Phone 位置数据的应用程序

如果您的应用程序使用 GeoCoordinateWatcher 类,您必须在构造函数或类的 DesiredAccuracy 属性中指定 GeoPositionAccuracy.High 的值,然后才能使用位置传感器模拟器测试您的应用程序。如果将精度保留为其默认值 GeoPositionAccuracy.Default,PositionChanged 事件将无法识别位置传感器模拟器中发生的位置变化。

还有另一种解决方法,包括运行本机地图应用程序,这似乎可以解决问题:

  1. 在模拟器中设置当前位置。
  2. 运行您的应用程序。它将当前位置报告为雷德蒙德。
  3. 运行地图应用程序。它正确地转到步骤 1 中设置的位置。
  4. 再次运行您的应用程序。现在它使用正确的当前位置。

资料来源:http ://social.msdn.microsoft.com/Forums/wpapps/en-US/c2cc57b1-ba1f-48fb-b285-d6cfbb8f393a/windows-phone-8-emulator-returns-microsofts-location-only

于 2013-08-22T22:31:01.080 回答