0

我在 plist 中有一长串带有纬度和经度的地方。我想仅在用户当前位置的 X 距离内显示地点的 tableView。有没有办法从 plist 文件中的 lats & longs 创建对象,以便我可以使用“distanceFromLocation”?更重要的是,如何让数组只显示与当前距离小于 X 的名称?我假设我需要从 plist 中的 lats & longs 制作一系列对象,然后如果 objects distanceFrom 小于 X,则在数组中创建一个对象,对吗?

请帮忙。

这就是我现在的位置:我在双 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;
}
4

2 回答 2

0

读入您的 plist,对其进行迭代以拉出 X 距离内的 plist 并用它们填充任何数组,这些数组将成为您的表格视图的数据源?

于 2011-04-27T18:20:19.057 回答
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
}

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

于 2011-04-27T18:34:37.233 回答