Как получить английский город с помощью API геокодирования Google?

#google-maps #google-maps-api-3

Вопрос:

У кого-нибудь есть практическое решение для последовательного получения названий городов на английском языке с помощью API геолокации Google?

Например:

 https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJpaWQQJthLxMRGsRX0AIkCQsamp;key=YOUR_API_KEYamp;language=en
 

ВОЗВРАТ:

 {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "62",
               "short_name" : "62",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Via degli Ausoni",
               "short_name" : "Via degli Ausoni",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Roma",
               "short_name" : "Roma",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Roma",
               "short_name" : "Roma",
               "types" : [ "administrative_area_level_3", "political" ]
            },
            {
               "long_name" : "Città Metropolitana di Roma",
               "short_name" : "RM",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Lazio",
               "short_name" : "Lazio",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Italy",
               "short_name" : "IT",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "00185",
               "short_name" : "00185",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Via degli Ausoni, 62, 00185 Roma RM, Italy",
         "geometry" : {
            "location" : {
               "lat" : 41.8982452,
               "lng" : 12.5170019
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 41.8995921302915,
                  "lng" : 12.5183911302915
               },
               "southwest" : {
                  "lat" : 41.8968941697085,
                  "lng" : 12.5156931697085
               }
            }
         },
         "place_id" : "ChIJpaWQQJthLxMRGsRX0AIkCQs",
         "plus_code" : {
            "compound_code" : "VGX8 7R Rome, Metropolitan City of Rome, Italy",
            "global_code" : "8FHJVGX8 7R"
         },
         "types" : [
            "bar",
            "cafe",
            "establishment",
            "food",
            "point_of_interest",
            "restaurant"
         ]
      }
   ],
   "status" : "OK"
}
 

То же самое происходит здесь с latlng вместо идентификаторов мест:

 https://maps.googleapis.com/maps/api/geocode/json?latlng=41.89824520000001,12.5170019amp;sensor=falseamp;language=en
 

По — видимому, Google ранее отмечал это как «Не исправит / Намеренное поведение», хотя я отправил language=en и получил «Рома» вместо Рима.

Однако автозаполнение кажется прекрасным:

введите описание изображения здесь

Комментарии:

1. Я знаю, что подобные вопросы задавались в прошлом, но, перепробовав все решения, которые я нашел в stackoverflow в течение половины дня, я все равно остался без рабочего вызова API.

2. Это единственное, что я нашел до сих пор, что, кажется, работает: https://translation.googleapis.com/language/translate/v2?key=YOUR_KEYamp;q=romaamp;target=en

3. В документации указано, что при геокодировании адресов на уровне улиц название страны возвращается на запрошенном вами языке, но остальная часть адреса будет соответствовать местоположению, которое вы геокодируете Локализуете карту .

4. @MrUpsidown Спасибо — я знаю, что, как я написал в вопросе, google сказал, что это «Преднамеренное поведение». как вы это обходите?

5. Вот как ведет себя API. Какого ответа вы ожидаете? Используйте систему перевода, если вам действительно нужна эта функция — и вы уже узнали об этом. Кроме того, не ожидайте, что названия улиц когда-либо будут переведены / переведены. И даже если бы вы нашли способ перевести названия улиц, это, вероятно, было бы очень плохой идеей для большинства случаев использования.

Ответ №1:

Я нашел способ сделать это некоторое время спустя, столкнувшись с проблемами с переводом (который отображал такие города, как «Эссен», в «Эссен, Германия»).

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

 https://maps.googleapis.com/maps/api/geocode/json?address=Roma, Italyamp;language=enamp;key=
 

Что в конечном итоге дает:

  "formatted_address" : "Rome, Metropolitan City of Rome, Italy",
 

Он также работает с Москвой,Россия:

   "formatted_address" : "Moscow, Russia",