Компонент поиска места
Компонент поиска места из комплекта пользовательского интерфейса Places отображает результаты поиска места в виде списка.

Вы можете настроить список поиска мест. Вы можете указать:
- Контент для отображения
- Размер носителя в вертикальной ориентации
- Усечение текста
- Ориентация
- Переопределения тем, соответствующие вашему бренду и языку дизайна приложения
- Позиция атрибуции
- Можно ли выбрать место
Вы также можете настроить запрос так, чтобы он выполнял либо Search by text request
, либо Search Nearby request
.
Биллинг
С вас будет взиматься плата каждый раз, когда изменяется значение привязки configureFromSearchByTextRequest()
или configureFromSearchNearbyRequest()
.
Добавьте поиск места в свое приложение
Используйте виджет «Поиск места», добавив фрагмент PlaceSearchFragment
в свой макет.
Если вы хотите, чтобы ваше приложение загружало текстовый поиск или результаты поиска поблизости, вызовите configureFromSearchByTextRequest()
или configureFromSearchNearbyRequest()
с запросом.
Котлин
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Ява
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Вы также можете добавить к компоненту необязательный PlaceSearchFragmentListener
для получения обратных вызовов при загрузке компонента, выборе места (если установлено возможность выбора) или при возникновении ошибки при загрузке компонента.
Котлин
fragment.registerListener( object : PlaceSearchFragmentListener { override fun onLoad(places: List<Place>) {...} override fun onRequestError(e: Exception) {...} override fun onPlaceSelected(place: Place) {...} } )
Ява
fragment.registerListener( new PlaceSearchFragmentListener() { @Override public void onLoad(List<? extends Place> places) {...} @Override public void onRequestError(Exception e) {...} @Override public void onPlaceSelected(Place place) {...} } )
Настройте компонент поиска места
Настроить контент
Вам необходимо указать, какой контент будет отображать ваш компонент.В этом примере компонент настраивается для отображения адреса и рейтинга места.
Котлин
val fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS, Content.RATING))
Ява
PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS,Content.RATING));
При желании вы также можете настроить следующие аспекты контента, отображаемого в компоненте поиска места:
- PlaceSearchFragment.Content : содержимое, отображаемое в компоненте.
- mediaSize : Размер фотографии в вертикальной ориентации фрагмента. Значение по умолчанию —
SMALL
. - preferTruncation : следует ли обрезать текст в каждом представлении сведений о месте.
- attributionPosition : отображать ли атрибуцию Google Maps вверху или внизу компонента.
- selectable : можно ли выбрать каждое место в списке.
Добавьте конфигурацию настройки в PlaceSearchFragment
.
Котлин
fragment.preferTruncation = false fragment.attributionPosition = AttributionPosition.BOTTOM fragment.mediaSize = MediaSize.SMALL fragment.selectable = true
Ява
fragment.setPreferTruncation(false) fragment.setAttributionPosition(AttributionPosition.BOTTOM) fragment.setMediaSize(MediaSize.SMALL) fragment.setSelectable(true)
Настроить ориентацию
Ориентация по умолчанию — вертикальная. Для горизонтальной ориентации укажите Orientation.HORIZONTAL
в PlaceSearchFragment.newInstance()
.
Котлин
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Ява
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Настройте тему
При создании фрагмента можно указать тему, которая переопределяет любой из атрибутов стиля по умолчанию. Значение по умолчанию — PlacesMaterialTheme
. Подробнее о темах см . в документации по компоненту Place Details .
Все атрибуты темы, которые не переопределены, используют стили по умолчанию. Если вы хотите поддерживать тёмную тему, вы можете добавить запись для цвета в values-night/colors.xml
.
<style name="CustomizedTheme" parent="PlacesMaterialTheme"> <item name="placesColorPrimary">@color/app_primary_color</item> <item name="placesColorOnSurface">@color/app_color_on_surface</item> <item name="placesColorOnSurfaceVariant">@color/app_color_on_surface</item> <item name="placesTextAppearanceBodySmall">@style/app_text_appearence_small</item> <item name="placesCornerRadius">20dp</item> </style>
Пример
Котлин
val fragment: PlaceSearchFragment = PlaceSearchFragment.newInstance(PlaceSearchFragment.STANDARD_CONTENT) fragment.preferTruncation = false fragment.attributionPosition = AttributionPosition.BOTTOM fragment.mediaSize = MediaSize.SMALL fragment.selectable = true fragment.registerListener( object : PlaceSearchFragmentListener { override fun onLoad(places: List<Place>) {...} override fun onRequestError(e: Exception) {...} override fun onPlaceSelected(place: Place) {...} } ) supportFragmentManager .beginTransaction() .replace(R.id.fragment_container, fragment) .commitNow() fragment.configureFromSearchByTextRequest(searchByTextRequest)
Ява
PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(PlaceSearchFragment.STANDARD_CONTENT); fragment.setPreferTruncation(false) fragment.setAttributionPosition(AttributionPosition.BOTTOM) fragment.setMediaSize(MediaSize.SMALL) fragment.setSelectable(true) fragment.registerListener( new PlaceSearchFragmentListener() { @Override public void onLoad(List<? extends Place> places) {...} @Override public void onRequestError(Exception e) {...} @Override public void onPlaceSelected(Place place) {...} } ) getSupportFragmentManager() .beginTransaction() .replace(R.id.fragment_container, fragment) .commitNow(); fragment.configureFromSearchByTextRequest(searchByTextRequest)