2010-08-09 2 views
2

У меня этот код для запроса Google, чтобы исправить набранный в адрес, и нужно, чтобы вернуть английское название города:нужно Google Геокодировать вернуть название города на английском языке

function gmap_query_xml($in_address) { 
    $base_url = "http://maps.google.com/maps/geo?output=xml&region=US&language=en&key=". KEY; 
    $request_url = $base_url . "&q=" . urlencode($in_address); 
    return simplexml_load_file($request_url); 
} 

Затем

$xml = gmap_query_xml($in_address); 

И, наконец, чтобы получить название города:

if ($xml) { 
    $city = (string) $xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName; 
} 

Это возвращает правильное название города, НО! представлена ​​на родном языке. Попробуйте Рим - вы получите Рома, попробуйте Киев, и вы получите Киев.

Как это можно решить? Спасибо !!

ответ

5

В этом отношении, похоже, есть хаос. См. this list of Google Geocoding API bug reports.

Вы используете старый API V2.

По this post и моим собственным тестам, новый V3 API:

http://maps.google.com/maps/api/geocode/xml?address=Rome&sensor=false&language=en 

более чувствителен к параметру language и переводит имена локальности правильно. Я получаю правильные результаты для language=en (Рим), language=de (Rom) и даже language=fi (Rooma)!

Однако V3 выполняет результаты геокодирования в другом формате, поэтому вам придется значительно изменить ваш синтаксический анализ (из-за того, что теперь структура addressComponents структурирована, это тоже вылезало из меня).

+0

Спасибо, Пекка! – valk

Смежные вопросы