字符串到 CLLocation 纬度和经度

Posted

技术标签:

【中文标题】字符串到 CLLocation 纬度和经度【英文标题】:String to CLLocation latitude and Longitude 【发布时间】:2011-10-26 19:21:17 【问题描述】:

我有两个表示纬度和经度的字符串,例如:“-56.6462520”,然后我想将其分配给一个 CLLocation 对象以与我当前的位置进行比较。我尝试了以下代码,但我只得到错误:

CLLocation * LocationAtual = [[CLLocation alloc]init];
LocationAtual.coordinate.latitude = @"-56.6462520";
LocationAtual.coordinate.longitude = @"-36.6462520";

然后将对象与我的实际位置经纬度进行比较。有什么建议吗?

【问题讨论】:

Objective-C 约定是 var 名称的驼峰式。 【参考方案1】:

您不能直接分配到 坐标 - 它是 CLLocation 的只读属性。 使用以下实例方法:

- (instancetype)initWithLatitude:(CLLocationDegrees)latitude
                       longitude:(CLLocationDegrees)longitude

示例:

CLLocation *LocationAtual = [[CLLocation alloc] initWithLatitude:-56.6462520 longitude:-36.6462520];

【讨论】:

没错,您不能分配给 CLLocation 属性。【参考方案2】:

我认为你需要:

LocationAtual.coordinate.latitude = [@"-56.6462520" floatValue];
LocationAtual.coordinate.longitude = [@"-36.6462520" floatValue];

【讨论】:

我明白了,我认为转换是正确的,但我得到这个错误:“Lvaule required as left operand of assignment”... ***.com/questions/5527878/… 我无法删除已接受的答案,但同意 AmitP 的答案是正确的。我的回答是“你不能将字符串用作数字” 表达式不可赋值【参考方案3】:

懒惰的快速回答:

var LocationAtual: CLLocation = CLLocation(latitude: -56.6462520, longitude: -36.6462520)

【讨论】:

【参考方案4】:

CLLocation坐标实际上是一个只读值

    @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

因此将虚拟数据分配给坐标的最佳方法是 AMITp 方式

【讨论】:

【参考方案5】:

纬度和经度是双精度值,因此需要以这种方式分配。

CLLocation *LocationAtual=[[CLLocation alloc] initWithLatitude:[[location objectForKey:@"latitude"] doubleValue] longitude:[[location objectForKey:@"longitude"] doubleValue]]

【讨论】:

以上是关于字符串到 CLLocation 纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章

带有纬度和经度的 CLLocation 对象

如何从 CLLocation 变量中提取经度和纬度?

如何使用 iPhone 的 CLLocation 类将纬度和经度分配给变量?

CLLocation 如何实现 Equatable 协议?

CLLocation + Weather(Alamofire) 问题

在iOS6+中获取2个纬度和经度之间的距离