如果区域设置未在“英语(美国)”上设置,Geolocator.GetGeopositionAsync() 返回四舍五入的值
Posted
技术标签:
【中文标题】如果区域设置未在“英语(美国)”上设置,Geolocator.GetGeopositionAsync() 返回四舍五入的值【英文标题】:Geolocator.GetGeopositionAsync() return rounded values if regional setting isn't set on "English (United-States)" 【发布时间】:2015-06-13 09:11:19 【问题描述】:我尝试使用 Windows Phone 8.1 的地理定位功能,当模拟的 Windows Phone 的区域设置为“英语(美国)”时,它可以工作,但我的应用程序主要针对法国人,当我尝试使用区域设置(在我的计算机上默认设置)“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;
在“英语(美国)”的区域设置中,纬度和经度得到“48.12345”之类的值,当我保持默认/“法语(法国)”区域设置时,它们得到“48.0”(并且值已经不正确进入观察者对象)。
我实际上尝试了很多东西(我怀疑小数点分隔符有罪,也许地理定位模拟器发送了像“48,12345”这样的值,但这些值的解析超出了我的范围,进入了密封函数)。 所以我尝试通过多种方式更改应用中的区域格式,但目前没有任何效果。
有人知道解决方法吗? (我在网上找到了一些德国开发者的类似案例,但我并没有真正找到解决方案......)
【问题讨论】:
我的手机可以正常使用。我将地区更改为 fr-FR。 【参考方案1】:由于您指出此问题发生在您的模拟器上而不是实际手机上,因此您应该检查您的系统设置。
过去我的开发机器上的 WP 地理定位功能也有很多问题,现在我使用十进制分组的“英语”标准化来防止这些问题。
有一篇文章解释了如何进行设置(这很容易,但缺点是它也会影响系统上所有数字的显示,例如在 Office 中..):
http://dotnetbyexample.blogspot.de/2014/05/windows-phone-emulatorunable-to-create.html
【讨论】:
以上是关于如果区域设置未在“英语(美国)”上设置,Geolocator.GetGeopositionAsync() 返回四舍五入的值的主要内容,如果未能解决你的问题,请参考以下文章