2011-10-26 3 views
20

J'ai deux chaînes représentant la latitude et la longitude comme: "-56.6462520", et je veux assigner ensuite à un objet CLLocation à comparer à ma position actuelle.J'ai essayé le code suivant mais j'ai des erreurs seulement:Chaîne à CLLocalisation latitude et longitude

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

puis de comparer l'objet avec ma position actuelle de latitude et de longitude. Aucune suggestion?

+6

convention Objective-C est camelCase pour les noms var. –

Répondre

11

Je pense que vous devez:

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

J'ai eu le point, je pense que la conversion est correcte, mais je reçois cette erreur: "Lvaule requis comme opérande gauche de l'affectation" ... –

+1

http://stackoverflow.com/questions/5527878/lvalue-required-as- op-left-of-assignment –

+2

Je ne peux pas supprimer une réponse acceptée, mais j'accepte la réponse d'AmitP est correcte. Ma réponse était dans le sens de "vous ne pouvez pas utiliser une chaîne comme un nombre" –

101

Vous ne pouvez pas affecter directement dans coordonner - il est une propriété de lecture seule CLLocation.
Utilisez la méthode d'instance suivante:

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

exemple:

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

C'est vrai, vous ne pouvez pas affecter à des attributs CLLocation. –

+0

La réponse précédente était incorrecte. C'est le bon. – hook38

2

CLLocation coordonnée est en fait une valeur en lecture seule

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

Donc, la meilleure façon d'affecter des données fictives à des coordonnées est AMITp way

1

lattitude et longitu de sont des valeurs doubles, il faut donc les assigner de cette façon.

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

Réponse Swift pour les paresseux:

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

Le merci paresseux. :RÉ – PruitIgoe