2017-01-12 4 views
0

Я хотел бы знать, какая из лучших практик для обратного геокодирования с помощью Google Maps. Я считаю, что ответ API должен быть более быстрым и точным на основе lat и lng для получения отформатированного адреса.Что лучше всего подходит для обратного геокодирования с использованием карт Google

Я знаю эти два типа методов, в этом я хочу знать, что может быть лучше.

[[GMSGeocoder geocoder] reverseGeocodeCoordinate:CLLocationCoordinate2DMake([strForLatitude floatValue], [strForLongitude floatValue]) completionHandler: 
^(GMSReverseGeocodeResponse *response, NSError *error){ 
    ALog(@"Address: %@ ", response.firstResult); 
}]; 

ИЛИ

NSError *error = nil; 
NSString *lookupString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&sensor=false",latitude,longitude]; 
lookupString = [lookupString stringByReplacingOccurrencesOfString:@" " withString:@"+"]; 
NSData *jsonResponse = [NSData dataWithContentsOfURL:[NSURL URLWithString:lookupString]]; 
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonResponse options:kNilOptions error:&error]; 
NSLog(@"%@",jsonDict); 
NSArray* jsonResults = [jsonDict objectForKey:@"results"]; 

Спасибо!

ответ

2

Первый из них лучше, потому что он использует библиотеку Google с помощью API Key

Второй один не хорошо, потому что больше API хиты с в срок, тем меньше шансов получить ответ, потому что Google будет блокировать ваш внутрибрюшинно в течение некоторого времени, если вы последовательно ударил, что апи

в будущем Google может блокировать Keyless Служба поддержки API

+0

Я согласился вашу точку. –

1

с помощью GMSGeocoder является одним из лучших, потому что если Google изменить формат ответа, который используется в другом методе затем URL или ваш код не будет работать должным образом

Так что мой совет использовать Google SDK и официальные методы геокодировщиком

+0

Я принимаю вашу мысль, но я сделал несколько экспериментов с обоими геокодированием. Я использовал те же координаты, и оба они возвращали разные форматированные адреса. –

1

В одном из моих проектов я использовал первый метод:

@implementation KSTAddressServiceImplementation 

- (void)loadAddressForLatitude:(double)latitude 
        longitude:(double)longitude 
        completion:(void (^)(KSTAddress * _Nullable address, NSError * _Nullable error))completion { 
    [[GMSGeocoder geocoder] reverseGeocodeCoordinate:CLLocationCoordinate2DMake(latitude, longitude) 
            completionHandler:^(GMSReverseGeocodeResponse * _Nullable response, NSError * _Nullable error) { 
             if (completion) { 
              KSTAddress *address; 
              if (response.firstResult) { 
               address = [[KSTAddress alloc] initWithAddress:response.firstResult]; 
              } 
              completion(address, error); 
             } 
            }]; 
} 

@end 
+0

Я принимаю вашу мысль, но я сделал несколько экспериментов с обоими геокодированием. Я использовал те же координаты, и оба они возвращали разные форматированные адреса. Пример: 12.9226,77.6174. В некоторых случаях я считаю, что 'reverseGeocodeCoordinate' не является точным. Проводили ли вы какие-то эксперименты? –

+0

@AntonyRaphel У меня не было проблем. Неправильные ли платья? Или у них только другой формат? Например, у одной из них нет улицы. –

+0

оба адреса разные. Это может зависеть от области к области. –