2011-10-26 139 views
20

我有兩個字符串代表緯度和經度,如:「-56.6462520」,我想分配一個CLLocation對象來比較我的當前位置。我試了下面的代碼,但我得到錯誤只有:CLLocation經緯度字符串

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

然後將該對象與我的實際位置經緯度進行比較。有什麼建議麼?

+6

Objective-C的慣例是變種的名稱駝峯。 –

回答

11

我想你需要:

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

我明白了,我認爲這個轉換是正確的,但是我得到這個錯誤:「Lvaule需要作爲賦值的左操作數」... –

+1

http://stackoverflow.com/questions/5527878/lvalue-required-as-左操作數轉讓 –

+2

我無法刪除接受的答案,但同意AmitP的答案是正確的。我的回答是「你不能使用字符串作爲數字」 –

101

您不能直接分配到協調 - 這是CLLocation的只讀屬性。
使用下面的實例方法:

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

例如:

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

這是真的,你不能分配給CLLocation屬性。 –

+0

上一個答案不正確。這是正確的。 – hook38

2

CLLocation座標實際上是一個只讀值

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

所以到虛擬數據分配到座標的最好辦法是AMITp方式

1

地位和longitu de是雙重值,所以需要這樣分配。

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

懶惰的雨燕答:

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

懶惰謝謝你。 :d – PruitIgoe

相關問題