Запрос «Поиск поблизости (новый)» принимает на вход область поиска, заданную в виде круга, определяемого координатами широты и долготы центра круга и радиусом в метрах. Запрос возвращает список подходящих мест, каждое из которых представлено объектом Place , в пределах указанной области поиска.
По умолчанию ответ содержит места всех типов в пределах области поиска. При желании вы можете отфильтровать ответ, указав список типов мест, которые следует явно включить или исключить из ответа. Например, вы можете указать, чтобы в ответ были включены только те места, которые относятся к типам «ресторан», «пекарня» и «кафе», или исключить все места типа «школа».
Поиск поблизости (новый) запросы
Для выполнения запроса на поиск поблизости (новый метод) вызовите PlacesClient.searchNearby , передав объект SearchNearbyRequest , определяющий параметры запроса.
Объект SearchNearbyRequest определяет все обязательные и необязательные параметры запроса. К обязательным параметрам относятся:
- Список полей, которые должны быть возвращены в объекте
Place, также известный как маска полей. Если вы не укажете хотя бы одно поле в списке полей или если вы его опустите, то вызов вернет ошибку. - Ограничение по местоположению для зоны поиска, определяемое парой координат широты/долготы и значением радиуса в метрах.
В этом примере запроса на поиск поблизости указано, что объекты Place в ответе должны содержать поля Place.Field.ID и Place.Field.DISPLAY_NAME для каждого объекта Place в результатах поиска. Он также фильтрует ответ, чтобы возвращать только места типа "ресторан" и "кафе", но исключать места типа "пицца_ресторан" и "американский_ресторан".
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
Результаты поиска поблизости (новые)
Класс SearchNearbyResponse представляет собой ответ на поисковый запрос. Объект SearchNearbyResponse содержит:
- Список объектов
Place, представляющих все соответствующие места, по одному объектуPlaceна каждое соответствующее место. - Каждый объект
Placeсодержит только поля, определенные списком полей, переданным в запросе.
Например, в запросе вы определили список полей следующим образом:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Этот список полей означает, что каждый объект Place в ответе содержит только идентификатор места и название соответствующего места. Затем вы можете использовать методы Place.getId() и Place.getName() для доступа к этим полям в каждом объекте Place .
Дополнительные примеры доступа к данным в объекте Place см. в разделе «Доступ к полям данных объекта Place» .
Необходимые параметры
Используйте объект SearchNearbyRequest для указания необходимых параметров поиска.
Список полей
При запросе сведений о месте необходимо указать данные, которые должны быть возвращены, в объекте
Placeв виде маски поля. Чтобы определить маску поля, передайте массив значений изPlace.Fieldв объектSearchNearbyRequest. Маскирование полей — это хорошая практика проектирования, позволяющая избежать запроса лишних данных, что помогает избежать ненужного времени обработки и дополнительных расходов.Укажите одно или несколько из следующих полей:
Следующие поля активируют артикул Nearby Search Pro :
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* Используйте вместоPlace.Field.NAME, который устарел.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* Используйте вместоPlace.Field.ICON_URL, который устарел.
Place.Field.ID
Place.Field.LAT_LNG
Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.RESOURCE_NAME
Place.Field.TYPES
Place.Field.UTC_OFFSET
Place.Field.VIEWPORT
Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCEСледующие поля запускают функцию Nearby Search Enterprise SKU :
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* Используйте вместоPlace.Field.PHONE_NUMBER, который устарел.
Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
Place.Field.PRICE_LEVEL
Place.Field.RATING
Place.Field.SECONDARY_OPENING_HOURS
Place.Field.USER_RATING_COUNT*
* Используйте вместоPlace.Field.USER_RATINGS_TOTAL, который устарел.
Place.Field.WEBSITE_URIСледующие поля активируют функцию Nearby Search Enterprise Plus SKU :
Place.Field.ALLOWS_DOGS
Place.Field.CURBSIDE_PICKUP
Place.Field.DELIVERY
Place.Field.DINE_IN
Place.Field.EDITORIAL_SUMMARY
Place.Field.EV_CHARGE_OPTIONS
Place.Field.FUEL_OPTIONS
Place.Field.GOOD_FOR_CHILDREN
Place.Field.GOOD_FOR_GROUPS
Place.Field.GOOD_FOR_WATCHING_SPORTS
Place.Field.LIVE_MUSIC
Place.Field.MENU_FOR_CHILDREN
Place.Field.OUTDOOR_SEATING
Place.Field.PARKING_OPTIONS
Place.Field.PAYMENT_OPTIONS
Place.Field.RESERVABLE
Place.Field.RESTROOM
Place.Field.REVIEWS
Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
Place.Field.SERVES_BRUNCH
Place.Field.SERVES_COCKTAILS
Place.Field.SERVES_COFFEE
Place.Field.SERVES_DESSERT
Place.Field.SERVES_DINNER
Place.Field.SERVES_LUNCH
Place.Field.SERVES_VEGETARIAN_FOOD
Place.Field.SERVES_WINE
Place.Field.TAKEOUT
Чтобы задать параметр списка полей, вызовите метод
setPlaceFields()при создании объектаSearchNearbyRequest.В следующем примере определен список из двух значений полей, указывающих на то, что объект
Place, возвращаемый запросом, должен содержать поляPlace.Field.IDиPlace.Field.DISPLAY_NAME:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
Ограничение по местоположению
Объект
LocationRestrictionопределяет область поиска, заданную в виде круга с центром и радиусом в метрах. Радиус должен быть больше 0,0 и меньше или равен 50000,0; следует помнить, что указание слишком малого радиуса вернетZERO_RESULTSв качестве ответа.Чтобы задать параметр ограничения местоположения, вызовите метод
setLocationRestriction()при создании объектаSearchNearbyRequest.
Дополнительные параметры
Используйте объект SearchNearbyRequest для указания необязательных параметров поиска.
Типы и основные типы
Позволяет указать список типов из таблицы типов A, используемых для фильтрации результатов поиска. В каждой категории ограничения типов можно указать до 50 типов.
Для каждого заведения может быть только один основной тип из таблицы типов A. Например, основным типом может быть
"mexican_restaurant"или"steak_house". ИспользуйтеincludedPrimaryTypesиexcludedPrimaryTypesдля фильтрации результатов по основному типу заведения.Место также может иметь несколько значений типа из таблицы типов A , связанных с ним. Например, ресторан может иметь следующие типы:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". ИспользуйтеincludedTypesиexcludedTypesдля фильтрации результатов в списке типов, связанных с местом.Если вы указываете общий основной тип, например,
"restaurant"или"hotel", ответ может содержать заведения с более специфическим основным типом, чем указанный. Например, вы указываете основной тип"restaurant". В этом случае ответ может содержать заведения с основным типом"restaurant", но также может содержать заведения с более специфическим основным типом, например,"chinese_restaurant"или"seafood_restaurant".Если в поиске указаны ограничения по нескольким типам, возвращаются только те места, которые удовлетворяют всем ограничениям. Например, если вы укажете
includedTypes = Arrays.asList("restaurant")иexcludedPrimaryTypes = Arrays.asList("steak_house"), то возвращаемые места предоставляют услуги, связанные с"restaurant", но не работают преимущественно как"steak_house".Пример использования
includedTypesиexcludedTypesсм. в разделе «Запросы поиска поблизости (новые)» .Включенные типы
Список типов мест из таблицы А для поиска. Если этот параметр опущен, возвращаются места всех типов.
Чтобы задать параметр включенных типов, вызовите метод
setIncludedTypes()при создании объектаSearchNearbyRequest.Исключенные типы
Список типов мест из таблицы А , которые следует исключить из поиска.
Если в запросе указаны как
includedTypes(например,"school"), так иexcludedTypesтипы (например,"primary_school"), то ответ будет включать места, которые классифицируются как"school", но не как"primary_school". Ответ будет включать места, которые соответствуют хотя бы одному изincludedTypesи ни одному изexcludedTypes.Если возникают конфликтующие типы, например, тип присутствует как в
includedTypes, так иexcludedTypes, возвращается ошибкаINVALID_REQUEST.Чтобы задать параметр исключенных типов, вызовите метод
setExcludedTypes()при создании объектаSearchNearbyRequest.Включенные основные типы
Список основных типов мест из таблицы А, которые следует включить в поиск.
Чтобы задать параметр включенных основных типов, вызовите метод
setIncludedPrimaryTypes()при создании объектаSearchNearbyRequest.Исключенные основные типы
Список основных типов мест из таблицы А , которые следует исключить из поиска.
Если существуют конфликтующие первичные типы, например, тип присутствует как в
includedPrimaryTypes, так иexcludedPrimaryTypes, возвращается ошибкаINVALID_ARGUMENT.Чтобы задать параметр исключенных основных типов, вызовите метод
setExcludedPrimaryTypes()при создании объектаSearchNearbyRequest.Максимальное количество результатов
Указывает максимальное количество результатов поиска мест, которые необходимо вернуть. Должно быть от 1 до 20 (по умолчанию) включительно.
Чтобы задать параметр максимального количества результатов, вызовите метод
setMaxResultCount()при создании объектаSearchNearbyRequest.Предпочтение ранга
Тип используемого ранжирования. Если этот параметр опущен, результаты ранжируются по популярности. Может принимать одно из следующих значений:
-
POPULARITY(по умолчанию) Сортирует результаты по их популярности. -
DISTANCEсортирует результаты в порядке возрастания расстояния от указанного местоположения.
Чтобы задать параметр предпочтения ранжирования, вызовите метод
setRankPreference()при создании объектаSearchNearbyRequest.-
код региона
Региональный код, используемый для форматирования ответа, указывается в виде двухсимвольного кода CLDR . Значение по умолчанию отсутствует.
Если название страны в поле
FORMATTED_ADDRESSв ответе совпадает сregionCode, код страны опускается в полеFORMATTED_ADDRESS.Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, национальный домен верхнего уровня Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически обозначающий «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может влиять на результаты в зависимости от применимого законодательства.
Чтобы задать параметр кода региона, вызовите метод
setRegionCode()при создании объектаSearchNearbyRequest.
Отображайте атрибуцию в своем приложении
Когда ваше приложение отображает информацию, полученную из PlacesClient , такую как фотографии и отзывы, оно также должно отображать необходимые атрибуты.
Для получения дополнительной информации см. Политику использования SDK Places для Android .