Geolocator.GetGeopositionAsync() 如果未在“英语(美国)”上设置区域设置,则返回舍入值

本文关键字:设置 区域 舍入 返回 美国 如果 GetGeopositionAsync Geolocator 英语 | 更新日期: 2023-09-27 17:56:03

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

我的代码:

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;

使用"英语(美国)"的区域设置,lat 和 lon 会得到像"48.12345"这样的值,当我保留默认值/"法语(法国)"区域设置时,它们会得到"48.0"(并且这些值已经不正确地进入观察者对象)。

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

有人知道这方面的解决方法吗?(我在互联网上发现了一些德国开发人员的类似案例,但我真的找不到解决方案......

Geolocator.GetGeopositionAsync() 如果未在“英语(美国)”上设置区域设置,则返回舍入值

由于您指出此问题发生在模拟器上,而不是在实际手机上,因此您应该检查系统设置。

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

有一篇文章解释了如何进行设置(这相当容易,但缺点是它还会影响系统上所有数字的显示,例如在Office中)。

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