Несоответствующий язык в Google Place Details API

Я использую API-интерфейс Google Place на моем сервере для хранения информации о месте, используя placeId, отправленный клиентом.

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

  • Место id ChIJ53USP0nBhkcRjQ50xhPN_zw - город Милан, а API возвращает Milan как локальность и Lombardy как административную область (английские имена)

  • Идентификатор места EjBWaWEgZGVsbGEgU3BpZ2EsIE1pbGFuLCBQcm92aW5jZSBvZiBNaWxhbiwgSXRhbHk - это улица в Милане, а API возвращает Milano как локальность и Lombardia в качестве административной области (итальянские имена)

Чтобы сделать это еще более странным, оба запроса возвращают Italy в качестве страны. Является ли это ожидаемым поведением API?

Ответ 1

Is this the expected behavior of the API?

Да, это ожидаемый результат. Даже если вы укажете язык, он вернет ответ на этом языке, только если есть один доступный, если он не вернет ответ на том языке, на котором он был первоначально введен.

Случай 1:

  • Милан: Милан - город. Таким образом, результаты доступны практически на каждом языке. Почти все главные города по всему миру имеют результаты на каждом языке. По умолчанию вы получите результат на английском языке.

Случай 2:

  • Via della Spiga: Как это улица. Прямо сейчас, результаты доступны только на итальянском языке, поскольку они наиболее востребованы на итальянском языке.

Результат при поиске "Через della Spiga" в Карте Google:

enter image description here

Чтобы узнать больше об этом:

Оба вышеупомянутых вопроса - около 2-х лет. Однако Google не может решить эти проблемы.

Один из способов решить эту проблему - использовать textsearch:

Как вы можете конвертировать большую часть административной области/города в любое имя языка, используя textearch:

`https://maps.googleapis.com/maps/api/place/textsearch/json?query=Lombardia&lang‌​uage=Your_language&key=YOUR_API_KEY` 

Пример: Преобразование "Lombardia" в китайский язык:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=Lombardia&language=zh-CN&key=YOUR_API

{
   "html_attributions" : [],
   "results" : [
      {
         "formatted_address" : "意大利伦巴第",
         "geometry" : {
            "location" : {
               "lat" : 45.47906709999999,
               "lng" : 9.8452433
            },
            "viewport" : {
               "northeast" : {
                  "lat" : 46.6351853,
                  "lng" : 11.4276993
               },
               "southwest" : {
                  "lat" : 44.6796491,
                  "lng" : 8.4978605
               }
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
         "id" : "02401d0909d69ca5c69de799e193caf84acc41f9",
         "name" : "伦巴第",
         "place_id" : "ChIJf4M-GsNEgUcR1JMVKCIm8qY",
         "reference" : "CoQBfQAAAEKCAV-1Ec-V2ZfnWsCk_elhlEXckc_k94jBYlU7k5ivhrqPlWd24aSAa5fqNTfwKKhU0wSsZFv42aMm1BrG5wEwZNGKwFqELxMEt0ye7KFfBgVtfHZbqeiBx3hEH8Iq60wwW--edqpROkBTjHrxIwisCGJwhCzKKkQ9H6FdfW_aEhAnmI0ZOFk1KGaGms4IqTOiGhRX5iErBIwnmLos4U9Ggs325MmcEA",
         "types" : [ "administrative_area_level_1", "political" ]
      }
   ],
   "status" : "OK"
}

Ломбардия в китайском 意大利 伦巴 第

При поиске сведений placeID вы получаете массив address_components:

"address_components" : [
         {
            "long_name" : "Via della Spiga",
            "short_name" : "Via della Spiga",
            "types" : [ "route" ]
         },
         {
            "long_name" : "Milano",
            "short_name" : "Milano",
            "types" : [ "locality", "political" ]
         },
         {
            "long_name" : "Milano",
            "short_name" : "MI",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "Lombardia",
            "short_name" : "Lombardia",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "Italy",
            "short_name" : "IT",
            "types" : [ "country", "political" ]
         }
      ]

Итак, если вы зацикливаете над указанным выше массивом и используете textearch, тогда вы получите почти согласованный адрес на определенном языке.

Ответ 2

Я думаю, вы можете использовать некоторый Optional parameters, чтобы указать нужный язык, например:

Запрос на соседний поиск - это URL-адрес HTTP следующей формы:

https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters

введите language параметр, например:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&language=en

Подробнее см. здесь.