Запрос «Поиск поблизости (новый)» принимает на вход область поиска, заданную в виде круга, определяемого координатами широты и долготы центра круга и радиусом в метрах. Запрос возвращает список подходящих мест, каждое из которых представлено объектом 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 .