-3

私のアプリには多くの場所があり、現在の場所に基づいて結果をフィルタリングし、半径 5 マイル内にあるものだけを表示する必要があります。これを達成する方法はありますか??

ありがとう、

4

3 に答える 3

2

CLLocationにはdistanceFromLocationがあり、次のように呼び出すことができます

CLLocation dist = [locationA distanceFromLocation:locationB];
于 2013-02-27T00:41:22.573 に答える
1

このようなものは動作するはずですが、テストしていません:

- (NSArray *)filterArrayOfLocations:(NSArray *)array byDistance:(CLLocationDistance)distance toCurrentLocation:(CLLocation*)currentLocation
{
    NSArray *filteredArray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
        return [currentLocation distanceFromLocation:(CLLocation *)evaluatedObject] < distance;
    }]];
    return filteredArray;
}
于 2013-02-27T00:48:40.767 に答える
1

この機能を試してみてください。これはあなたを助けるでしょう。

-(void)distanceBetween{


double latitude1 = [merchant.latitude doubleValue];
double longitude1 = [merchant.longitude doubleValue];

NSUserDefaults *userLocation = [NSUserDefaults standardUserDefaults];
float lat = [userLocation floatForKey:@"latitude"];
float lon = [userLocation floatForKey:@"longitude"];


CLLocation *locA = [[CLLocation alloc] initWithLatitude:latitude1 longitude:longitude1];
CLLocation *locB = [[CLLocation alloc] initWithLatitude:lat longitude:lon];

CLLocationDistance distanceTo = [locA distanceFromLocation:locB];
NSLog(@"locaA is %f", locA);
NSLog(@"locaB is %f", locB);
NSLog(@"locdistnace is %f", distanceTo);
[[self distance] setText:[NSString stringWithFormat:@"%0.2f miles", distanceTo/1609.34]];

}
于 2013-02-27T00:41:45.843 に答える