从当前位置到Plist文件的数据的距离

时间:2011-04-27 18:03:51

标签: iphone arrays plist tableview cllocation

我有一长串列出纬度和经度的地方。我想显示一个仅在用户当前位置的X距离内的地方的tableView。有没有办法从拉特&amp ;;在plist文件中长,所以我可以使用'distanceFromLocation'?更重要的是,如何让数组只显示距当前小于X的名称?我假设我需要从lats&中制作一系列物品。如果对象distanceFrom小于X,那么在plist中长,然后在数组中做一个对象,对吗?

请帮忙。

这就是我现在的位置:我在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 :(得分:0)

读入你的plist,迭代它以拉出X距离内的那些并用它们填充任何数组,这将是你的表视图的数据源?

答案 1 :(得分:0)

正如@DavidNeiss所说,你必须遍历列表(一个带有plist作为源的NSArray),它将是这样的:

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
}

然后你可以做你想做的事情(删除远离用户的东西或其他什么)。