0

我正在为 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; });

显示垃圾只是让我看到一条消息,表明事件正在触发。唯一感兴趣的是我返回的 GPS 精度(通常约为 3 米,在门内为 9 米)。

任何方向或帮助将不胜感激。TIA

4

0 回答 0