расстояние от CurrentLocation до данных из Plist File - PullRequest
0 голосов
/ 27 апреля 2011

У меня длинный список мест с широтами и долготами в списке.Я хочу показать табличный вид мест только на расстоянии X от текущего местоположения пользователя.Есть ли способ создать объекты из lats & long в файле plist, чтобы я мог использовать 'distanceFromLocation'?Что еще более важно, как я могу получить массив для отображения только имена с расстоянием от текущего меньше, чем X?Я предполагаю, что мне нужно было бы сделать серию объектов из lats & long в plist, а затем сделать объекты в массиве, если для объектов distanceFrom меньше X, верно?1004 * Вот где я сейчас нахожусь: я получаю сообщение об ошибке в строке double clubLatitude

- (void)viewDidLoad {
 [super viewDidLoad];

     NSArray *clubArray = [NSArray arrayWithObjects:[self danceClubLocation], nil];
     self.tableData = clubArray;
}

-(CLLocation *)danceClubLocation
{
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
    NSArray *array = [NSArray arrayWithContentsOfFile:plistPath];

    NSEnumerator *e = [array objectEnumerator];
    id object;
    while ((object = [e nextObject])) {
        double clubLatitude = [[array valueForKey:@"Latitude"] doubleValue];
        double clubLongitude = [[array valueForKey:@"Longitude"] doubleValue];
        CLLocation *clubLocation = [[CLLocation alloc] initWithLatitude:clubLatitude longitude:clubLongitude];
        if ([clubLocation distanceFromLocation:myLocation]<=50) {
            return clubLocation;
        }
        else return nil;
    }
    return nil;
}

-(CLLocation *)myLocation
{
    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];
    NSNumber *myLatitude = [NSNumber numberWithDouble:coordinate.latitude];
    NSNumber *myLongitude = [NSNumber numberWithDouble:coordinate.longitude];
    double myLatitudeD = [myLatitude doubleValue];
    double myLongitudeD = [myLongitude doubleValue];
    myLocation = [[CLLocation alloc]initWithLatitude:myLatitudeD longitude:myLongitudeD];
    return myLocation;
}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Как сказал @DavidNeiss, вы должны выполнить итерации по списку (NSArray с plist в качестве источника), и это будет примерно так:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"latlong" ofType:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfFile:plistPath];

NSEnumerator *e = [array objectEnumerator];
id object;
while (object = [e nextObject]) {
  // do something with object
}

Затем вы можете делать то, что хотите (удаляячто далеко от пользователя или что-то еще).

0 голосов
/ 27 апреля 2011

Чтение в вашем списке, итерации по нему, чтобы вытащить те из них на расстоянии X и заполнить любой массив с ними, которые будут источником данных для вашего представления таблицы?

...