CLLocationCoordinates lat / lon值是Locale Dependent吗?

时间:2014-05-19 19:19:59

标签: ios locale cllocation nslocale cllocationcoordinate2d

我将CLLocations转换为以逗号分隔的字符串,例如" 75.45874,-45.17292"只需使用[NSString stringWithFormat:@"%。5f,%。5f"];并将它们发送到我的服务器应用程序,该应用程序希望该字符串为带小数点的两个数字作为小数分隔符。

在阅读完所有文档之后,我无法判断我的生活是否依赖于语言环境,即用户是否在海外(我在美国)他们的location使用逗号作为小数分隔符:" 75,45874,-45,17292"?

我知道一些不同的方法可以在需要时将逗号转换为小数,例如使用NSNumberFormatter,我只是想弄清楚我是否真的需要?我已尝试使用模拟器模拟位置,但我不知道区域设置是否会逐渐降低到CLLocation的纬度/经度属性,并且会正确模拟这种情况。任何见解?

1 个答案:

答案 0 :(得分:1)

CLLocation中的坐标表示为CLLocationDegrees,定义为double。这是浮点数,而不依赖于语言环境。

使用

创建字符串
[NSString stringWithFormat:@"%.5f, %.5f", lat, lon]

也不依赖于语言环境。 stringWithFormat(差不多)符合IEEE printf specification 它将%f转换定义为

  

双参数应转换为十进制表示法   style" [ - ] ddd.ddd",...

因此,您的代码将始终生成 point 作为小数分隔符。

另一方面,NSNumberFormatter使用用户的区域设置首选项进行转换 除非另有说明。如果将语言环境设置为标准,则可以在您的情况下使用它 " POSIX语言环境":

NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];