CLLocationCoordinates 纬度/经度值是不是取决于区域设置?
Posted
技术标签:
【中文标题】CLLocationCoordinates 纬度/经度值是不是取决于区域设置?【英文标题】:Are CLLocationCoordinates lat/lon values Locale Dependent?CLLocationCoordinates 纬度/经度值是否取决于区域设置? 【发布时间】:2014-05-19 19:19:59 【问题描述】:我只需使用 [NSString stringWithFormat:@"%.5f, %.5f"]; 将 CLLocations 转换为逗号分隔的字符串,例如 "75.45874, -45.17292"并将它们发送到我的服务器应用程序,该应用程序需要将字符串作为两个数字,以小数点作为小数点分隔符。
在阅读完所有文档后,我无法确定这些坐标是否取决于区域设置,即如果用户在海外(我在美国),他们的位置是否会有逗号作为小数点分隔符:"75,45874, -45,17292"?
我知道有几种不同的方法可以在需要时将逗号转换为小数,例如使用 NSNumberFormatter,我只是想弄清楚我是否真的需要这样做?我试过用模拟器模拟位置,但我不知道语言环境设置是否会渗透到 CLLocation 的纬度/经度属性,并能正确模拟这种情况。有什么见解吗?
【问题讨论】:
【参考方案1】:CLLocation
中的坐标表示为CLLocationDegrees
,其定义为double
。这是浮点数,不依赖于语言环境。
创建一个字符串
[NSString stringWithFormat:@"%.5f, %.5f", lat, lon]
也不依赖于语言环境。 stringWithFormat
(几乎)符合IEEE printf specification
它将%f
转换定义为
双参数应转换为十进制表示法 样式“[-]ddd.ddd”,...
因此,您的代码将始终生成一个 point 作为小数分隔符。
另一方面,NSNumberFormatter
使用用户的区域设置首选项进行转换
除非另有说明。如果您将语言环境设置为标准,您可以在您的情况下使用它
“POSIX 语言环境”:
NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
【讨论】:
以上是关于CLLocationCoordinates 纬度/经度值是不是取决于区域设置?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从 CLLocation(或 CLLocationCoordinates2D)获取 NSTimeZone 实例?
使用 Swift 将 CLLocationCoordinate2d 转换为街道地址