Строка в CLLocation широта и долгота - PullRequest
20 голосов
/ 26 октября 2011

У меня есть две строки, представляющие широту и долготу, например: -56.6462520, и я хочу назначить объект CLLocation для сравнения с моим текущим местоположением. Я пробовал следующий код, но получаю только ошибки:

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

, а затем сравните объект с моей фактической широтой и долготой местоположения.Есть предложения?

Ответы [ 5 ]

107 голосов
/ 11 февраля 2013

Вы не можете напрямую присвоить координату - это свойство только для чтения CLLocation.
Используйте следующий метод экземпляра:

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

пример:

CLLocation *LocationAtual = [[CLLocation alloc] initWithLatitude:-56.6462520 longitude:-36.6462520];
13 голосов
/ 26 октября 2011

Я думаю, вам нужно:

LocationAtual.coordinate.latitude = [@"-56.6462520" floatValue];
LocationAtual.coordinate.longitude = [@"-36.6462520" floatValue];
7 голосов
/ 01 февраля 2016

Свифт Ответ для ленивых:

var LocationAtual: CLLocation = CLLocation(latitude: -56.6462520, longitude: -36.6462520)
2 голосов
/ 10 января 2014

Координата CLLocation фактически доступна только для чтения.

    @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

Таким образом, лучший способ присвоить фиктивные данные координатам - это способ AMITp

1 голос
/ 13 января 2014

широта и долгота являются двойными значениями, поэтому их необходимо назначить таким образом.

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