В запросе Nearby Search (New) в качестве входных данных используется область поиска в виде круга, заданного координатами широты и долготы центральной точки и радиусом в метрах. В ответ на запрос возвращается список подходящих мест, каждое из которых представлено объектом Place, в пределах указанной области поиска.
По умолчанию в ответе содержатся места всех типов в пределах области поиска. При необходимости вы можете отфильтровать ответ, указав список типов мест, которые нужно включить в ответ или исключить из него. Например, вы можете указать, что в ответ должны включаться только места типа "ресторан", "пекарня" и "кафе", или исключить все места типа "школа".
Запросы поиска поблизости (новые)
Выполните запрос поиска поблизости (New), вызвав 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. Маски полей помогут вам не запрашивать ненужные данные и тем самым сократить время обработки и снизить расходы.Укажите одно или несколько из следующих полей:
Следующие поля активируют поиск поблизости 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Полный список полей и связанных с ними кодов приведен в разделе Поля данных о местах (новая версия).
Следующие поля активируют поиск поблизости 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Полный список полей и связанных с ними кодов приведен в разделе Поля данных о местах (новая версия).
Следующие поля активируют поиск поблизости 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 и меньше или равен 50 000,0. Если указать слишком маленький радиус, в ответе будет возвращено значениеZERO_RESULTS.Чтобы задать параметр ограничения области карты, вызовите метод
setLocationRestriction()при создании объектаSearchNearbyRequest.
Необязательные параметры
Используйте объект SearchNearbyRequest, чтобы указать необязательные параметры поиска.
-
Типы и основные типы
Позволяет указать список типов из таблицы А, которые будут использоваться для фильтрации результатов поиска. В каждой категории с ограничениями можно указать до 50 типов.
С местом может быть связан только один основной тип из таблицы A. Например, основным типом может быть
"mexican_restaurant"или"steak_house". ИспользуйтеincludedPrimaryTypesиexcludedPrimaryTypes, чтобы отфильтровать результаты по основному типу места.У места также может быть несколько значений типа из таблицы А. Например, у ресторана могут быть следующие типы:
"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приведен в разделе Новые запросы поиска поблизости.Включенные типы
Список типов мест из таблицы А, которые нужно найти. Если этот параметр не указан, возвращаются места всех типов.
Чтобы задать параметр included_types, вызовите метод
setIncludedTypes()при создании объектаSearchNearbyRequest.Исключенные типы
Список типов мест из таблицы А, которые нужно исключить из поиска.
Если в запросе указать и
includedTypes(например,"school"), иexcludedTypes(например,"primary_school"), то в ответе будут места, которые относятся к категории"school", но не к категории"primary_school". В ответе будут места, которые соответствуют хотя бы одному из типов, указанных в параметреincludedTypes, и ни одному из типов, указанных в параметреexcludedTypes.Если есть конфликтующие типы, например тип, который появляется и в
includedTypes, и вexcludedTypes, возвращается ошибкаINVALID_REQUEST.Чтобы задать параметр исключенных типов, вызовите метод
setExcludedTypes()при создании объектаSearchNearbyRequest.Включенные основные типы
Список основных типов мест из таблицы А, которые нужно включить в поиск.
Чтобы задать параметр includedPrimaryTypes, вызовите метод
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…