首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地质位置变化事件

地质位置变化事件
EN

Stack Overflow用户
提问于 2013-08-22 13:40:27
回答 1查看 1.9K关注 0票数 2

我正在开发一个运行跟踪器/计步器应用程序,我也在使用地理记录器,我将geolocator的运动阈值属性保持为10,这是我的代码。

按钮单击事件

代码语言:javascript
复制
 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;
            });
        }

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 22:31:01

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

来自如何测试Windows中使用位置数据的应用程序

如果应用程序使用GeoCoordinateWatcher类,则在使用位置传感器模拟器测试应用程序之前,必须在构造函数或类的DesiredAccuracy属性中指定GeoPositionAccuracy.High值。如果将精度保留在GeoPositionAccuracy.Default的默认值,则PositionChanged事件不会识别位置传感器模拟器中发生的位置更改。

还有另一个解决办法,就是运行本机地图应用程序,它似乎解决了这个问题:

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18382134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档