From 628aba7055dbe860e461f14bd30ed9c3dea3392a Mon Sep 17 00:00:00 2001 From: Alexander Desyatov Date: Thu, 10 Apr 2014 22:53:21 +0400 Subject: [PATCH] Implementation language parameter Into reverseGeocode add language parameter --- SVGeocoder/SVGeocoder.h | 1 + SVGeocoder/SVGeocoder.m | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) mode change 100644 => 100755 SVGeocoder/SVGeocoder.h mode change 100644 => 100755 SVGeocoder/SVGeocoder.m diff --git a/SVGeocoder/SVGeocoder.h b/SVGeocoder/SVGeocoder.h old mode 100644 new mode 100755 index a0bd1ee..ec64dfa --- a/SVGeocoder/SVGeocoder.h +++ b/SVGeocoder/SVGeocoder.h @@ -38,6 +38,7 @@ typedef void (^SVGeocoderCompletionHandler)(NSArray *placemarks, NSHTTPURLRespon + (SVGeocoder*)geocode:(NSString *)address region:(CLRegion *)region components:(NSDictionary *)components completion:(SVGeocoderCompletionHandler)block; + (SVGeocoder*)reverseGeocode:(CLLocationCoordinate2D)coordinate completion:(SVGeocoderCompletionHandler)block; ++ (SVGeocoder*)reverseGeocode:(CLLocationCoordinate2D)coordinate language:(NSString *)language completion:(SVGeocoderCompletionHandler)block; - (SVGeocoder*)initWithAddress:(NSString *)address completion:(SVGeocoderCompletionHandler)block; - (SVGeocoder*)initWithAddress:(NSString *)address region:(CLRegion *)region completion:(SVGeocoderCompletionHandler)block; diff --git a/SVGeocoder/SVGeocoder.m b/SVGeocoder/SVGeocoder.m old mode 100644 new mode 100755 index c90062d..fe31623 --- a/SVGeocoder/SVGeocoder.m +++ b/SVGeocoder/SVGeocoder.m @@ -39,7 +39,7 @@ @interface SVGeocoder () @property (nonatomic, strong) NSString *requestPath; @property (nonatomic, strong) NSTimer *timeoutTimer; // see http://stackoverflow.com/questions/2736967 -- (SVGeocoder*)initWithParameters:(NSMutableDictionary*)parameters completion:(SVGeocoderCompletionHandler)block; +- (SVGeocoder*)initWithParameters:(NSMutableDictionary*)parameters language:(NSString *)language completion:(SVGeocoderCompletionHandler)block; - (void)addParametersToRequest:(NSMutableDictionary*)parameters; - (void)finish; @@ -94,7 +94,12 @@ + (SVGeocoder*)geocode:(NSString *)address region:(CLRegion *)region components: } + (SVGeocoder *)reverseGeocode:(CLLocationCoordinate2D)coordinate completion:(SVGeocoderCompletionHandler)block { - SVGeocoder *geocoder = [[self alloc] initWithCoordinate:coordinate completion:block]; + return [self reverseGeocode:coordinate language:nil completion:block]; +} + ++ (SVGeocoder *)reverseGeocode:(CLLocationCoordinate2D)coordinate language:(NSString *)language completion:(SVGeocoderCompletionHandler)block +{ + SVGeocoder *geocoder = [[self alloc] initWithCoordinate:coordinate language:language completion:block]; [geocoder start]; return geocoder; } @@ -102,10 +107,14 @@ + (SVGeocoder *)reverseGeocode:(CLLocationCoordinate2D)coordinate completion:(SV #pragma mark - Public Initializers - (SVGeocoder*)initWithCoordinate:(CLLocationCoordinate2D)coordinate completion:(SVGeocoderCompletionHandler)block { + return [self initWithCoordinate:coordinate language:nil completion:block]; +} + +- (SVGeocoder*)initWithCoordinate:(CLLocationCoordinate2D)coordinate language:(NSString *)language completion:(SVGeocoderCompletionHandler)block { NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"%f,%f", coordinate.latitude, coordinate.longitude], @"latlng", nil]; - return [self initWithParameters:parameters completion:block]; + return [self initWithParameters:parameters language:language completion:block]; } @@ -113,7 +122,7 @@ - (SVGeocoder*)initWithAddress:(NSString*)address completion:(SVGeocoderCompleti NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys: address, @"address", nil]; - return [self initWithParameters:parameters completion:block]; + return [self initWithParameters:parameters language:nil completion:block]; } @@ -124,7 +133,7 @@ - (SVGeocoder*)initWithAddress:(NSString *)address region:(CLRegion *)region com address, @"address", bounds, @"bounds", nil]; - return [self initWithParameters:parameters completion:block]; + return [self initWithParameters:parameters language:nil completion:block]; } - (SVGeocoder*)initWithAddress:(NSString *)address components:(NSDictionary *)components completion:(SVGeocoderCompletionHandler)block { @@ -134,7 +143,7 @@ - (SVGeocoder*)initWithAddress:(NSString *)address components:(NSDictionary *)co address, @"address", componentsValue, @"components", nil]; - return [self initWithParameters:parameters completion:block]; + return [self initWithParameters:parameters language:nil completion:block]; } - (SVGeocoder*)initWithAddress:(NSString *)address region:(CLRegion *)region components:(NSDictionary *)components completion:(SVGeocoderCompletionHandler)block { @@ -146,19 +155,19 @@ - (SVGeocoder*)initWithAddress:(NSString *)address region:(CLRegion *)region com bounds, @"bounds", componentsValue, @"components", nil]; - return [self initWithParameters:parameters completion:block]; + return [self initWithParameters:parameters language:nil completion:block]; } #pragma mark - Private Utility Methods -- (SVGeocoder*)initWithParameters:(NSMutableDictionary*)parameters completion:(SVGeocoderCompletionHandler)block { +- (SVGeocoder*)initWithParameters:(NSMutableDictionary*)parameters language:(NSString *)language completion:(SVGeocoderCompletionHandler)block { self = [super init]; self.operationCompletionBlock = block; self.operationRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://maps.googleapis.com/maps/api/geocode/json"]]; [self.operationRequest setTimeoutInterval:kSVGeocoderTimeoutInterval]; [parameters setValue:@"true" forKey:@"sensor"]; - [parameters setValue:[NSLocale preferredLanguages][0] forKey:@"language"]; + [parameters setValue:language ? language : [NSLocale preferredLanguages][0] forKey:@"language"]; [self addParametersToRequest:parameters]; self.state = SVGeocoderStateReady;