2012-05-03 66 views
0

我可以通過CLGeocoderreverseGeocodeLocation:completionHandler:方法成功得到結果(如locality,ISOcountryCode等)。
但是,我怎麼能匹配的結果?如何將該地點與CLGeocoder的結果進行匹配?

例如:如果結果的城市(地區)是Hangzhou City,我可以簡單地通過使用

if ([placemark.locality isEqualToString:@"Hangzhou City"]) {...} 

與之匹敵,但你也知道,這兒有幾百萬的城市,這是不可能得到城市名一個接一個,硬編碼到我的應用程序。

那麼,有什麼辦法可以解決這個問題嗎?或者有沒有框架存在?或者只有幾個文件包含與CLGeocoder的結果匹配的國家&城市的名稱?即使是模糊的座標匹配解決方案也沒有問題(我的意思是,一個城市有自己的區域,我可以通過座標來確定城市,但我仍然需要得到每個城市的區域區域)。


部署目標iOS5.0

+0

什麼你想要得到的數據?通常情況下,我們使用谷歌地圖的API ... – LordT

+0

@LTT是的,我之前嘗試過GMaps API,同樣的問題:數據是自定義的,我無法得到它。因此,我需要獲得城市,然後將自定義數據添加到每個城市......當他/她到達城市時,用戶將獲得相應的數據。 – Kjuly

+0

你能解釋一下你的目標是什麼嗎?你是否想遍歷所有的城市?您是否嘗試存儲用戶訪問城市的次數? 'if(...){here}'裏面是什麼? – Patrick

回答

1

以及有一個更簡單的方法,你可以使用反向GeocodeLocation得到地方的信息。你必須知道,這在每個城市思想中都行不通。 欲瞭解更多信息,請查閱Apple的CLGeocoder Class ReferenceGeocoding Location Data文檔。

所以,你可以創建和對象處理服務

#import <Foundation/Foundation.h> 
#import <CoreLocation/CoreLocation.h> 

@interface locationUtility : NSObject<CLLocationManagerDelegate>{ 
    CLLocationManager *locationManager; 
    CLPlacemark *myPlacemark; 
    CLGeocoder * geoCoder; 
} 

@property (nonatomic,retain) CLLocationManager *locationManager; 

@end 

和實現

#import "locationUtility.h" 

@implementation locationUtility 
@synthesize locationManager; 

#pragma mark - Init 
-(id)init { 
    NSLog(@"locationUtility - init"); 
    self=[super init]; 

    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startMonitoringSignificantLocationChanges]; 
    geoCoder= [[CLGeocoder alloc] init]; 
    return self; 
} 

- (void) locationManager:(CLLocationManager *) manager didUpdateToLocation:(CLLocation *) newLocation 
      fromLocation:(CLLocation *) oldLocation { 
    [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) { 
    CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
    myPlacemark=placemark; 
    // Here you get the information you need 
    // placemark.country; 
    // placemark.administrativeArea; 
    // placemark.subAdministrativeArea; 
    // placemark.postalCode]; 
    }]; 
} 

-(void) locationManager:(CLLocationManager *) manager didFailWithError:(NSError *) error { 
    NSLog(@"locationManager didFailWithError: %@", error.description); 
} 

@end 
+0

這就是我現在所做的,就像我在問題中所描述的那樣_「不可能獲得城市一個一個地命名,並將硬編碼放入我的應用程序。「_我需要讓城市定義'myPlacemark' ...無論如何感謝您的回答。:) – Kjuly

相關問題