CLLocationCoordinates的位置/位置值是否依赖于区域设置



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

读完所有的文档后,我不能为我的生活弄清楚这些坐标是否依赖于地区,也就是说,如果一个用户在海外(我在美国)他们的位置有一个逗号作为小数分隔符:"75,45874,-45,17292"?

我知道有几种不同的方法可以在需要时将逗号转换成小数,比如使用NSNumberFormatter,我只是想弄清楚我是否需要这样做?我试过用模拟器模拟位置,但我不知道区域设置是否会渗透到CLLocation的纬度/经度属性,是否会正确地模拟这样的情况。见解吗?

CLLocation中的坐标表示为CLLocationDegrees,定义为double。这是浮点数,与语言环境无关。

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

也不依赖于语言环境。stringWithFormat(几乎)符合IEEE printf规范它将%f转换定义为

双精度实参应在风格"[-]ddd。ddd"…

所以你的代码总是会产生一个作为小数分隔符。

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

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

最新更新