【问题标题】: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 的纬度/经度属性,并能正确模拟这种情况。有什么见解吗?

【问题讨论】:

    标签: ios locale cllocation nslocale cllocationcoordinate2d


    【解决方案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"]];
    

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 2016-11-21
      • 2011-06-09
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多