Windows phone 8 地理定位器位置更改事件
我正在开发一个跑步跟踪器/计步器应用程序,我也在使用geolocator,我将geolocator的运动阈值属性保持在10,这是我的代码 按钮点击事件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
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事件不会识别位置传感器模拟器中发生的位置更改
还有另一个解决办法,就是运行本机地图应用程序,这似乎可以解决问题: