Windows Phone 8.1地理定位速度始终为5.8

时间:2016-03-18 12:52:55

标签: c# windows-phone-8 gps geolocation windows-8.1

我正在使用Geoposition和Postition更改事件来抓取设备位置的坐标。

       private async void StartGpsMonitoring()
    {
        if (locator == null)
        {
            locator = new Geolocator();

        }
        if (locator.LocationStatus == PositionStatus.Disabled)
        {
            //throw new Exception();

            MessageDialog noGpsDialog = new MessageDialog("Location services are disabled, please enable location services");
            noGpsDialog.Commands.Add(new UICommand("Location Settings", new UICommandInvokedHandler(this.CommandInvokedHandler), 0));
            noGpsDialog.Commands.Add(new UICommand("Cancel", new UICommandInvokedHandler(this.CommandInvokedHandler), 1));
            await noGpsDialog.ShowAsync();
        }
        if (locator != null)
        {
            //locator.MovementThreshold = 3;
            locator.ReportInterval = 1;
            locator.DesiredAccuracy = PositionAccuracy.High;
            locator.PositionChanged +=
                new TypedEventHandler<Geolocator,
                    PositionChangedEventArgs>(locator_PositionChanged);
        }
    }

       private async void locator_PositionChanged(Geolocator sender, PositionChangedEventArgs e)
    {
        string speed = string.Empty;
        await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            Geoposition geoPosition = e.Position;
            if (e.Position.Coordinate.Speed != null)
            {
                 speed = e.Position.Coordinate.Speed.Value.ToString(); // always 5.8
            }
            geolocation = geoPosition.Coordinate.Point.Position.Latitude.ToString() + " " +
                              geoPosition.Coordinate.Point.Position.Longitude.ToString() + "Speed = " +
                              speed;


            var textBlockStatus =
                ControlHelper.FindChildControl<TextBlock>(JourneyTrackerSection, "TextBlockStatus") as TextBlock;
            textBlockStatus.Text = geolocation;
        });
    }

我也试图获得速度值。但是当使用模拟器时,我总是得到5.8,无论我是否在模拟器上设置了速度限制/步行/自行车,并且仍然从静态位置获得5.8。

任何人都可以解释为什么?它只是模拟器吗?如果我使用真正的设备,我会得到准确的结果吗? 很难开发一个位置速度应用程序,每当我想调试/运行它时我都要跑出来。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

我想我会发布一些详细信息,告诉我有什么设法可以找到,以防将来有人遇到这个问题。看起来这是因为它在模拟器上运行。管理时遇到有关使用地理定位代码的一些有限细节,以及有关硬件特定的一些细节。在我设法拿到Windows手机进行测试之后,模拟器无法做到速度。在实际设备上完美运行。

这对微软来说非常烦人。意味着每次我需要测试我的应用程序时我都必须开车去。渲染GPS模拟器完全没用!