Как контакты iphone находят адрес на карте Google?

Я пытался показать адрес на карте Google в своем приложении для iphone. Я пытался использовать

NSString * theAddressString =......;
NSString * query = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@",theAddressString];
NSString * urlString = [query stringByAddingPercetntEscapesUsingEncoding:NSUTF8StringEncoding];
[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString];

Карта Google не может найти некоторые адреса, которые мы предоставили. (Некоторые японские или китайские адреса) Но если я сохранил адрес в контактах iPhone. А затем нажал адресную ссылку контакта. Он перейдет на карты Google, хотя карта Google сначала предупредила, что «не может найти адрес», после того как я подтвердил предупреждающее сообщение, другое представление отобразит местоположение на карте Google или покажет адрес рядом.

Таким образом, приложение iPhone «Контакт» может использовать другие API для фильтрации адресной строки для определения адреса или использования некоего «нечеткого поиска».

Кто-нибудь знает, как они этого добиваются?

Я действительно ценю твою помощь.


person binzhang    schedule 12.08.2011    source источник


Ответы (1)


Попробуйте следующее и расскажите о статусе решения.

    NSString * theAddressString =......; 
    NSString *latlong = [[myLatitude stringByAppendingString:@","]stringByAppendingString:myLongitude];
    NSString * query = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@@%@",[theAddressString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], [latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    //NSString * urlString = [query stringByAddingPercetntEscapesUsingEncoding:NSUTF8StringEncoding]; 
    [UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString];

Новый код с указанным адресом:

    NSString *theAddressString = @"東村山市野口町1-3-49 アマドムス 102, 東京都, 日本";
    NSString *urlString=[NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv",[theAddressString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];   
    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];  
    NSArray *listItems = [locationString componentsSeparatedByString:@","]; 
    float latitude=0.0; 
    float longitude=0.0;    
    if([listItems count] >=4  && [ [listItems objectAtIndex:0] isEqualToString:@"200"]){        
        latitude = [[listItems objectAtIndex:2] doubleValue];       
        longitude = [[listItems objectAtIndex:3] doubleValue];      
    }   
    else{       
        NSLog(@"Error");        
    }   
    NSString *myLatitude = [NSString stringWithFormat:@"%f",latitude];
    NSString *myLongitude = [NSString stringWithFormat:@"%f",longitude];
    NSString *latlong = [[myLatitude stringByAppendingString:@","]stringByAppendingString:myLongitude];
    NSString * query = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@@%@",[theAddressString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], [latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:query]];

Я проверил строку запроса с помощью карты Google, и она показывает мне булавку на карте Google.

person alloc_iNit    schedule 12.08.2011
comment
Карта Google также не могла показать адрес. Проверяю строку на карте Google, она такая же, как когда я нажимаю адрес в контактах iPhone. - person binzhang; 12.08.2011
comment
Пожалуйста, проверьте еще раз с данным кодом, так как вы должны передать широту и долготу с адресом. - person alloc_iNit; 12.08.2011
comment
Спасибо, но мне нужно обработать строку входного адреса, в которой не указаны широта и долгота. - person binzhang; 12.08.2011
comment
Моя проблема: я хочу знать, как приложение Apple Contact вызывает API карты Google, чтобы найти адрес? Например: Введите следующую строку: 東村 山 市 野 口 町 1-3-49 ア マ ド ム ス 102 東京 都 日本 в поле поиска Google Maps. Он не покажет адрес. Но если вы создадите новый контакт и поместите строку адреса в соответствующее поле: страна: 日本 город: 東京 都 улица: 東村 山 市 野 口 町 1-3-49 ア マ ド ム ス 102. И нажмите адрес в контакте, карта Google покажет адрес. И текст поля поиска на карте Google такой же, как и при первой попытке выше. Кто-нибудь знает трюк, который знает яблоко? - person binzhang; 12.08.2011
comment
Я разместил последний код и проверил его с помощью карты Google в сафари, и он показывает местоположение. Попробуй.. - person alloc_iNit; 12.08.2011
comment
Спасибо. Обновленный код действительно улучшился, но все еще есть адреса. Приведенный выше код не может быть обнаружен. (Не удалось получить широту и долготу) Но если я введу в поле улицы контактного приложения iPhone. Это могло бы. Например: 本社 〒104 東京 都 中央 区 八 丁 堀 4-5-4 秀 和 桜 橋 ビ ン レ 4F Так что, может быть, есть еще некоторые уловки, может быть, мне стоит поискать через API карт Google. - person binzhang; 16.08.2011
comment
Если вы внимательно следили за кодом, я уже разместил код, чтобы получить широту и долготу с помощью адреса. С этим кодом нет ничего, что могло бы помешать вам добраться до места назначения прямо сейчас. - person alloc_iNit; 16.08.2011
comment
Спасибо, я действительно следил за кодом, но для некоторых адресов, упомянутых выше, не удалось получить широту и долготу. - person binzhang; 17.08.2011
comment
Ну, я не знаю, почему данный код для указанного адреса не работает на вашей стороне, но я протестировал код с тем же адресом, и он также возвращает широту и долготу. - person alloc_iNit; 18.08.2011