Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/windows-phone-8/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 地理定位器位置更改事件_Windows Phone 8_Windows Phone 8 Emulator - Fatal编程技术网

Windows phone 8 地理定位器位置更改事件

Windows phone 8 地理定位器位置更改事件,windows-phone-8,windows-phone-8-emulator,Windows Phone 8,Windows Phone 8 Emulator,我正在开发一个跑步跟踪器/计步器应用程序,我也在使用geolocator,我将geolocator的运动阈值属性保持在10,这是我的代码 按钮点击事件 private void StartButton_单击(对象发送器,路由目标) { myLocator=新地理定位器(); myLocator.DesiredAccuracy=位置精度。默认值; myLocator.MovementThreshold=10; myLocator.ReportInterval=500; myLocator.Posi

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

按钮点击事件

private void StartButton_单击(对象发送器,路由目标)
{
myLocator=新地理定位器();
myLocator.DesiredAccuracy=位置精度。默认值;
myLocator.MovementThreshold=10;
myLocator.ReportInterval=500;
myLocator.PositionChanged+=myGeoLocator\u PositionChanged;
_startTime=System.Environment.TickCount;
_timer.Start();
}
void myGeoLocator\u PositionChanged(Geolocator发送方,PositionChangedEventArgs参数)
{
Dispatcher.BeginInvoke(()=>
{
var coord=新地理坐标(args.Position.Coordinate.Latitude,args.Position.Coordinate.Longitude);
如果(_line.Path.Count>0)
{
var previousPoint=_line.Path.Last();
距离+=坐标GetDistanceTo(上一个点);
var毫微度计=(1000.0/距离)*(System.Environment.TickCount-\u previousPositionChangeTick);
_公里数+=数学圆数(距离,2);
distanceLabel.Text=string.Format(“{0:f2}米”,_公里);
MessageBox.Show(“已更改”);
}
其他的
{
地图中心=坐标;
}
_line.Path.Add(坐标);
_previousPositionChangeTick=System.Environment.TickCount;
});
}

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

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

发件人:

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

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

  • 在模拟器中设置当前位置
  • 运行你的应用程序。它将当前位置报告为Redmond
  • 运行“地图”应用程序。它正确地到达中设置的位置 第一步
  • 再次运行你的应用程序。现在它使用正确的当前位置
  • 资料来源: