3

場所の配列があり、別の場所を追加するときに、配列内の他の場所が新しい場所のブロック内にあるかどうかを確認できるようにしたいと考えています。これは、現在の場所を見つけるために必要なコードです。

//Geocoding Block
[self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler:
 ^(NSArray *placemarks, NSError *error) {

     //Get nearby address
     CLPlacemark *placemark = [placemarks objectAtIndex:0];

     //String to hold address
    locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"]    componentsJoinedByString:@", "];

最初にこれを理解したいので、配列はまだ作成されていません。配列に何を保持する必要があるかわかりません(文字列...)。検索の方法は知っているので、場所を比較する方法を知りたいだけです。

4

1 に答える 1

1

CLLocationdistanceFromLocation:メソッドを使用して、2 つの場所の間の距離を取得できます。( を使用して CLPlacemark から CLLocation を取得できますmyPlacemark.location。)したがって、CLLocation オブジェクトの配列があり、1 ブロック (1/20 マイル、または約 80 メートル) 内にあるものを見つけたい場合は、次のことができます。これ:

NSMutableArray *locationsWithinOneBlock = [NSMutableArray new];
for (CLLocation *location in myLocations) {
    if ([location distanceFromLocation:targetLocation] <= 80.0)
        [locationsWithinOneBlock addObject:location];
}

myLocationsこれは、 という単一の CLLocation に対してフィルタリングする CLLocation オブジェクトの配列があることを前提としていますtargetLocation

于 2013-04-11T15:16:14.620 に答える