Geolocation WinRT地理定位器始终返回相同的位置

Geolocation WinRT地理定位器始终返回相同的位置,geolocation,gps,windows-runtime,Geolocation,Gps,Windows Runtime,在我们的一个应用程序中,WinRT Geolocator有一个奇怪的行为。用户单击应用程序中的按钮以获取当前位置。第一次工作正常,但所有后续点击按钮返回相同的坐标,即使我们移动超过一公里 该应用程序在ThinkPad上运行,我们安装了一个名为GPS卫星的应用程序,如果我们切换到该应用程序,获取坐标,然后返回到我们的应用程序,那么地理定位器将返回正确的坐标。所以我们知道GPS工作正常,但似乎坐标被保存在缓存中,即使我们设定了几毫秒的过期时间 private async void ExecuteOb

在我们的一个应用程序中,WinRT Geolocator有一个奇怪的行为。用户单击应用程序中的按钮以获取当前位置。第一次工作正常,但所有后续点击按钮返回相同的坐标,即使我们移动超过一公里

该应用程序在ThinkPad上运行,我们安装了一个名为GPS卫星的应用程序,如果我们切换到该应用程序,获取坐标,然后返回到我们的应用程序,那么地理定位器将返回正确的坐标。所以我们知道GPS工作正常,但似乎坐标被保存在缓存中,即使我们设定了几毫秒的过期时间

private async void ExecuteObtenirCoordGPSCommand()
        {      
            try
            {
                Geolocator geolocator = new Geolocator();
                geolocator.DesiredAccuracy = PositionAccuracy.High;
                // Make the request for the current position

                Geoposition pos = await geolocator.GetGeopositionAsync(new TimeSpan(0,0,0,0,200), new TimeSpan(0,0,5));


                Place.Latitude = pos.Coordinate.Latitude;
                Place.Longitude = pos.Coordinate.Longitude;
            }
            catch
            {
                GPSMsgErreur = "The GPS is unavailable";
            }
}
我们试图对GetGeopositionAsync方法设置过期,但没有解决问题

我们尝试将geologicator变量放在类级别上,得到了相同的结果


有什么想法吗?

不确定这是否是您的问题,但您使用的API在本文中已被标记为过时:

尝试使用:

Place.Latitude = pos.Coordinate.Point.Position.Latitude;
Place.Longitude = pos.Coordinate.Point.Position.Longitude;
您也可以使用:

double someVar = pos.Coordinate.Accuracy
找出设备的误差范围。可能你的位置离第一个位置不够远,第二个位置在误差范围内

我还可以告诉您,我有一个用Visual Studio 2013 Windows WinRT构建的软件,它在ThinkPad上运行,使用的对象与您使用的对象相同,并且运行良好。 我的API与您的API的主要区别在于,我使用的是上面显示的API,而我没有使用以下语句:

geolocator.DesiredAccuracy = PositionAccuracy.High;
我没有向GetGeopositionAsync方法传递任何参数

我希望这有帮助。
干杯,Hans。

将async void更改为async Task,并使用wait关键字调用方法ExecuteObtenirCoordGPSCommand。您是否在应用程序清单中添加了位置功能?使用MS中的示例代码,我们有相同的行为:您是否在应用程序清单中添加了位置功能?