【问题标题】:Elegant Way to Put Array of Values Into CLLocationCoordinate2D将值数组放入 CLLocationCoordinate2D 的优雅方式
【发布时间】:2012-01-30 03:36:08
【问题描述】:

有没有一种优雅的方法可以从 NSDecimalNumber 值的数组中创建一个 CLLocationCoordinate2D 对象?也许是递归函数?

我是目标 C 的新手,对此有困难。

以下是我正在使用的数据结构的示例。


NSDecimalNumber 值的数组:

NSLog(@"path: %@", [path description]);

返回

path: (
    "-71.4826609644423",
    "27.7231737704478",
    "-71.4826608497223",
    "27.7231120144099",
    "-71.4826391681679",
    "27.7228678610506",
    ...
    "-71.482414263977",
    "27.7225217655116",
)

我可以像这样手动创建 CLLocationCoordinate2D 对象:

CLLocationCoordinate2D pathCoords[5]={
    CLLocationCoordinate2DMake(27.7231737704478,-71.4826609644423),
    CLLocationCoordinate2DMake(27.7231120144099,-71.4826608497223),
    CLLocationCoordinate2DMake(27.7228678610506,-71.4826391681679),
    ...
    CLLocationCoordinate2DMake(27.7225217655116,-71.482414263977),
};

欢迎任何编码建议。 谢谢!

【问题讨论】:

    标签: objective-c ios ios5 nsarray core-location


    【解决方案1】:

    我假设您已经创建了一个名为 pathCoords 大小为 5 的 CLLocationCoordinate2D 结构。

    for(int i=0;i<[path count]/2;i++)
       pathCoords[i] = CLLocationCoordinate2DMake([path objectAtIndex:2*i+1], [path objectAtIndex:2*i]);
    

    你的问题的本质不是递归的,所以如果你去递归 - 这是一个矫枉过正。

    【讨论】:

    • 感谢您的快速回复!编译器返回[path objectAtIndex:2*i+1] 的错误:Passing 'id' to parameter of incompatible type 'CLLocationDegrees' (aka 'double')
    • 好吧,你需要正确地转换类型。我只是即时输入代码。您需要将 NSDecimalNumber 转换为双精度数。这 (google.com/…) 会有所帮助。
    【解决方案2】:

    最终解决方案包括将 NSDecimalNumbers 类型转换为 doubleValues:

    for(int i=0; i<[path count]/2; i++) {
            pathCoords[i] = CLLocationCoordinate2DMake([[path objectAtIndex:2*i+1] doubleValue], [[path objectAtIndex:2*i] doubleValue]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-08
      • 2014-07-20
      • 2011-10-03
      • 2011-01-20
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多