Запрос Nearby Search (New) принимает в качестве входных данных регион для поиска, указанный как круг, определяемый координатами широты и долготы центральной точки круга и радиусом в метрах. Запрос возвращает список соответствующих мест, каждое из которых представлено объектом Place
, в пределах указанной области поиска.
По умолчанию ответ содержит места всех типов в области поиска. Вы можете дополнительно отфильтровать ответ, указав список типов мест, которые следует явно включить или исключить из ответа. Например, вы можете указать, что нужно включить в ответ только те места, которые относятся к типу «ресторан», «пекарня» и «кафе», или исключить все места типа «школа».
Запросы на поиск поблизости (новые)
Сделайте запрос на поиск поблизости (новый), вызвав PlacesClient.searchNearby
и передав объект SearchNearbyRequest
, который определяет параметры запроса.
Объект SearchNearbyRequest
определяет все обязательные и необязательные параметры для запроса. Обязательные параметры включают:
- Список полей для возврата в объекте
Place
, который также известен как маска поля. Если вы не укажете хотя бы одно поле в списке полей или опустите список полей, то вызов вернет ошибку. - Ограничение местоположения для области поиска, определяемое парой широты/долготы и значением радиуса в метрах.
В этом примере запроса поиска поблизости указано, что объекты Place
содержат поля Place.Field.ID
и Place.Field.DISPLAY_NAME
для каждого объекта Place
в результатах поиска. Он также фильтрует ответ, чтобы возвращать только места типа "restaurant" и "cafe", но исключать места типа "pizza_restaurant" и "american_restaurant".
// 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 SKU :
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
см. в разделе Запросы Nearby Search (New) .Включенные типы
Список типов мест из Таблицы A для поиска. Если этот параметр пропущен, возвращаются места всех типов.
Чтобы задать параметр включенных типов, вызовите метод
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, за некоторыми заметными исключениями. Например, ccTLD Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически для субъекта «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может влиять на результаты в зависимости от применимого законодательства.
Чтобы задать параметр кода региона, вызовите метод
setRegionCode()
при создании объектаSearchNearbyRequest
.
Отображение атрибуции в вашем приложении
Когда ваше приложение отображает информацию, полученную от PlacesClient
, например фотографии и отзывы, приложение также должно отображать требуемые атрибуции.
Более подробную информацию см. в разделе Политики для Places SDK для Android .