Требуется Google Geocoding, чтобы вернуть название города на английском языке

У меня есть этот код для запроса 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;
}

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

Как это можно решить? Благодарить!!


person valk    schedule 09.08.2010    source источник


Ответы (1)


Кажется, что в этом отношении есть небольшой хаос. См. этот список отчетов об ошибках Google Geocoding API. .

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

Согласно этому сообщению и мои собственные тесты, новый V3 API:

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

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

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

person Pekka    schedule 09.08.2010