Geolocator.GetGeopositionAsync() return 如果未在 "English (United-States)" 上设置区域设置,则舍入值

Geolocator.GetGeopositionAsync() return rounded values if regional setting isn't set on "English (United-States)"

我尝试使用 Windows Phone 8.1 中的地理定位功能,当模拟 Windows Phone 的区域设置为 "English (United State)",但我的应用程序主要针对法国人,当我尝试使用区域设置(默认情况下在我的计算机上)时 "French (France)" 经度和纬度值无关紧要,因为它们是四舍五入的。

我的代码:

Geolocator watcher = new Geolocator();
watcher.DesiredAccuracy = PositionAccuracy.High;
Geoposition position = await watcher.GetGeopositionAsync();
double lat = position.Coordinate.Point.Position.Latitude;
double lon = position.Coordinate.Point.Position.Longitude;

在 "English (United State)" 区域设置下,lat 和 lon 得到类似“48.12345”的值,当我保持默认/"French (France)" 区域设置时,它们得到“48.0”(并且值已经不正确进入观察者对象)。

我实际上尝试了很多事情(我怀疑小数点分隔符可能是地理定位模拟器发送的值如“48,12345”,但这些值的解析超出了我的范围,进入密封函数)。 所以我尝试通过多种方式更改应用程序中的区域格式,但目前没有任何效果。

有人知道这方面的解决方法吗? (我在网上找了一些德国开发者的类似案例,但是我真的没有找到解决办法...)

既然你指出这个问题发生在你的模拟器上而不是在实际的 phone 上,你应该检查你的系统设置。

我的开发机器上的 WP 地理定位功能过去也有很多问题,现在我正在使用 "English" 十进制分组标准化来防止这些问题。

有一篇文章解释了如何进行设置(相当简单,但缺点是它也会影响系统中所有数字的显示,例如在 Office 中..):

http://dotnetbyexample.blogspot.de/2014/05/windows-phone-emulatorunable-to-create.html