我正在为WinPhone 8写一个POC(我有一个运行8.1版本的诺基亚928)。
我正在使用的功能之一是GeoLocator,我注意到一些奇怪的行为。我的应用程序获取您当前的位置,然后跟踪您的移动并计算两点之间的距离。奇怪的是,我坐着不动而且PositionChanged事件正在开火!是什么赋予了?我还没有移动,我的应用已经说明距离原点和我当前位置的距离是~9米。
这是GPS的正常行为吗?如果是这样,建议的处理方法是什么?
以下是我的GeoLocator设置方式:
_Geolocator = new Geolocator();
_Geolocator.DesiredAccuracy = PositionAccuracy.High;
_Geolocator.MovementThreshold = 5;
_Geolocator.ReportInterval = 1000;
我有一个获取当前位置的按钮并启动位置更改事件(为了简洁起见斩波代码):
Geoposition position = await _Geolocator.GetGeopositionAsync();
_trackLocation = true;
_currentLocation = position;
OrigLongitude = _currentLocation.Coordinate.Longitude;
OrigLatitude = _currentLocation.Coordinate.Latitude;
_Geolocator.PositionChanged += _Geolocator_PositionChanged;
Message = "tracking location";
和PositionChanged事件:
_currentLocation = args.Position;
//calculate the distance
double d = _pointTracker.DistanceTo(_currentLocation.Coordinate.Latitude, _currentLocation.Coordinate.Longitude);
double accuracy = _currentLocation.Coordinate.Accuracy;
if (true == show.Contains("tracking X"))
{
show = "tracking Y " + accuracy.ToString();
}
else
{
show = "tracking X " + accuracy.ToString();
}
DispatcherHelper.CheckBeginInvokeOnUI(() => { Distance = d; });
DispatcherHelper.CheckBeginInvokeOnUI(() => { Message = show; });
DispatcherHelper.CheckBeginInvokeOnUI(() => { Longitude = _currentLocation.Coordinate.Longitude; });
DispatcherHelper.CheckBeginInvokeOnUI(() => { Latitude = _currentLocation.Coordinate.Latitude; });
show junk让我看到一条消息,显示事件正在触发。唯一感兴趣的是GPS准确度我回来了(通常它大约3米,门在9米)。
任何方向或帮助将不胜感激。 TIA