我正在开发一个运行跟踪器/计步器应用程序,我也在使用地理记录器,我将geolocator的运动阈值属性保持为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;
});
}问题是,位置更改事件只被调用一次,我试图通过更改位置点来调试模拟器中的代码,但仍然没有调用该事件。我哪里做错了??
发布于 2013-08-22 22:31:01
您的代码将在真正的设备上工作。但是,为了在模拟器上进行测试,请尝试将DesiredAccuracy属性设置为High。
来自如何测试Windows中使用位置数据的应用程序
如果应用程序使用GeoCoordinateWatcher类,则在使用位置传感器模拟器测试应用程序之前,必须在构造函数或类的DesiredAccuracy属性中指定GeoPositionAccuracy.High值。如果将精度保留在GeoPositionAccuracy.Default的默认值,则PositionChanged事件不会识别位置传感器模拟器中发生的位置更改。
还有另一个解决办法,就是运行本机地图应用程序,它似乎解决了这个问题:
来源:http://social.msdn.microsoft.com/Forums/wpapps/en-US/c2cc57b1-ba1f-48fb-b285-d6cfbb8f393a/windows-phone-8-emulator-returns-microsofts-location-only
https://stackoverflow.com/questions/18382134
复制相似问题