#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",