web-dev-qa-db-fra.com

Chaîne vers CLLocation latitude et longitude

J'ai deux chaînes représentant la latitude et la longitude, comme: "-56.6462520", et je souhaite ensuite affecter un objet CLLocation à la comparaison avec mon emplacement actuel. J'ai essayé le code suivant, mais je ne reçois que des erreurs:

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

puis comparez l'objet avec la latitude et la longitude de mon emplacement actuel. Aucune suggestion?

20
Vinicius Albino

Je pense que vous devez:

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

Vous ne pouvez pas affecter directement dans coordonnée - c'est une propriété en lecture seule de 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];
107
AmitP

Réponse rapide pour les paresseux:

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

La coordonnée CLLocation est en réalité une valeur en lecture seule

    @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

La meilleure façon d’affecter des données factices aux coordonnées est donc la méthode AMITp.

2
abc123

la latitude et la longitude sont des valeurs doubles, il faut donc les attribuer de cette façon. 

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