#google-maps-api-3 #google-places-api
#google-maps-api-3 #google-places-api
Вопрос:
В настоящее время я работаю над проектом с требованием получить список мест на уровне штата. Я пробовал следующие два API, но ни один из них не может на 100% соответствовать требованиям:
- API автозаполнения Google. Чтобы избавиться от подробных мест на уровне улиц, которые я передал
types: ["(regions)"]
, что нормально с точки зрения бизнеса (хотя идеально было бы только на уровне штата, но уровень города все еще в порядке). Однако, когда пользовательский поиск поWashington, USA
API возвращает только 5 городов с именем Вашингтон, и пользователю приходится искатьWA, USA
вместо этого. - API Google Places. Этот API может успешно справиться
Washington
с описанным выше случаем. Однако я не смог найти способ ограничить API, чтобы избавиться от мест на уровне улицы, если я не отфильтрую возвращенные места поtypes
атрибуту.
Кто-нибудь знает, какой API лучше всего использовать для этого сценария?
Комментарии:
1. Что такое место уровня штата? Вы ищете штаты / провинции для всех стран?
2. @geocodezip Спасибо за ответ. Я хочу, чтобы при поиске
Washington, USA
API возвращал штат Вашингтон, а не города с именем Вашингтон, но в других штатах. На данный момент единственное решение, которое у меня есть, — сохранить результаты API Google Places, которые имеютadministrative_area_level_1
тип.
Ответ №1:
Выполнение запроса текстового поиска со строкой поиска, поскольку Washington, USA
я получаю только 1 результат, который, по-видимому, является состоянием WA.
Запрос (используйте свой собственный ключ API): https://maps.googleapis.com/maps/api/place/textsearch/json ?запрос= Вашингтон, USAamp;language=ruamp;key=YOUR_API_KEY
Результат:
{
"html_attributions" : [],
"results" : [
{
"formatted_address" : "Washington, USA",
"geometry" : {
"location" : {
"lat" : 47.7510741,
"lng" : -120.7401385
},
"viewport" : {
"northeast" : {
"lat" : 49.0024442,
"lng" : -116.91558
},
"southwest" : {
"lat" : 45.543541,
"lng" : -124.8489739
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/geocode-71.png",
"name" : "Washington",
"photos" : [
{
"height" : 2124,
"html_attributions" : [
"u003ca href="https://maps.google.com/maps/contrib/101488181553592859672"u003eArko Bhattacharjeeu003c/au003e"
],
"photo_reference" : "ATtYBwLa-P4aH5Uh3rD2CKaZmwb8HyNPWZ1WZUnw_y4iaUouh4B6BKOwAo52kkiBNSfn3MJmkW6Ju50H_e7zhxs5m5oBJva-dywtTv2cF_OgX6COeUfnre_SVmXw1qA4Fof924hSOvutwFnjsO6MJ1R71ozhBfieWrtvN9dSwVbgQbvMu-3y",
"width" : 1440
}
],
"place_id" : "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
"reference" : "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
"types" : [ "administrative_area_level_1", "political" ]
}
],
"status" : "OK"
}
Дважды проверьте это, выполнив запрос сведений о месте с возвращенным идентификатором места ChIJ-bDD5__lhVQRuvNfbGh4QpQ
:
Запрос (используйте свой собственный ключ API): https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJ-bDD5__lhVQRuvNfbGh4QpQamp;language=enamp;key=YOUR_API_KEY
Результат:
{
"html_attributions" : [],
"result" : {
"address_components" : [
{
"long_name" : "Washington",
"short_name" : "WA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"adr_address" : "u003cspan class="region"u003eWashingtonu003c/spanu003e, u003cspan class="country-name"u003eUSAu003c/spanu003e",
"formatted_address" : "Washington, USA",
"geometry" : {
"location" : {
"lat" : 47.7510741,
"lng" : -120.7401386
},
"viewport" : {
"northeast" : {
"lat" : 49.00256875707851,
"lng" : -116.9155800245149
},
"southwest" : {
"lat" : 45.54354101516995,
"lng" : -124.8489739457119
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/geocode-71.png",
"name" : "Washington",
"photos" : [],
"place_id" : "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
"reference" : "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
"types" : [ "administrative_area_level_1", "political" ],
"url" : "https://maps.google.com/?q=Washington, USAamp;ftid=0x5485e5ffe7c3b0f9:0x944278686c5ff3ba",
"utc_offset" : -480,
"website" : "http://www.access.wa.gov/"
},
"status" : "OK"
}