将值数组放入 CLLocationCoordinate2D 的优雅方式
Posted
技术标签:
【中文标题】将值数组放入 CLLocationCoordinate2D 的优雅方式【英文标题】:Elegant Way to Put Array of Values Into 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),
;
欢迎任何编码建议。 谢谢!
【问题讨论】:
【参考方案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]);
【讨论】:
以上是关于将值数组放入 CLLocationCoordinate2D 的优雅方式的主要内容,如果未能解决你的问题,请参考以下文章