Нужна помощь в отладке кода CLLocation, чтобы найти расстояние между двумя точками - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь развернуть следующий код в моем приложении View-Based, но я получаю следующие ошибки при попытке его запустить:

GPSViewController.h

CLLocationManager *lm;
CLLocation *firstLocation;
CLLocation *secondLocation;
CLLocationDistance *distance;
NSString *distanceString;

GPSViewController.m

firstLocation = [[[CLLocation alloc] initWithLatitude:lat1 longitude:lon1] autorelease];
secondLocation = [[[CLLocation alloc] initWithLatitude:lat2 longitude:lon2] autorelease];
distance = [secondLocation distanceFromLocation:firstLocation]; //CLLocation may not respond to distanceFromLocation

double dist = distance / 1000;  //invalid operands to binary

distanceString = [[NSString alloc] stringWithFormat: @"%f", dist];
NSLog(@"the distance between the two points is: %@", distanceString); 

В моем примере кода выше, как мне преобразовать переменную "distance" из типа "CLLocationDistance" в тип "double"?

Я просто пытаюсь вычислить расстояние между двумя точками, используя два разных объекта CLLocation, и распечатать его на консоли. lat1, lon1, lat2, lon2 являются двойными.

Кто-нибудь может увидеть, где я иду не так?

1 Ответ

2 голосов
/ 10 ноября 2010

CLLocationDistance является двойным, поэтому вам не нужно пытаться конвертировать в двойное или что-либо еще.

Вы можете рассчитать свои данные следующим образом, это будет работать:

CLLocationDistance distance = [secondLocation distanceFromLocation:firstLocation];  // distance is expressed in meters

CLLocationDistance kilometers = distance / 1000.0;
NSString *distanceString = [[NSString alloc] initWithFormat: @"%f", kilometers];
...