UI–элементы
Карта
Все варианты поставки SDK включают в себя стандартный набор UI-элементов для управления картой, которые могут быть добавлены в макет и использоваться для управления параметрами карты.
Все перечисленные UI-элементы должны добавляться как дочерние View по отношению к MapView
. Процесс создания и добавления MapView
подробно описан в разделе Создание карты
Стандартный набор включает в себя:
- IndoorControl
- TrafficControl
- ZoomControl
- CompassControl
- MyLocationControl
- AddRoadEventCard
- AddRoadEventButton
- RoadEventCard
Навигатор
Полный вариант поставки SDK включает в себя набор UI-элементов для отображения и управления навигацией. Для удобства, все элементы объединены в DefaultNavigationControls. Способ использования и добавления описан в разделе Навигатор
Набор UI-элементов навигации состоит из:
- TrafficLineControl
- ManeuverControl
- SpeedInfoControl
- TrafficAndParkingControl
- ZoomControl
- CompassControl
- FollowControl
- DashboardControl – в режиме ведения по маршруту
- DashboardControl – в режиме свободной навигации
- DashboardControl – в режиме навигации внутри зданий
- MarkedByRouteIndoorControl
Справочник
SearchLayout – компонент, предоставляющий интерактивную строку поиска и список результатов. Является частью поставки как full, так и map варианта SDK.
Интеграция
Добавление SearchLayout в макет происходит также, как и с любыми другими UI-компонентами Android:
<ru.dgis.sdk.directory.SearchLayout
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dgis_pageSize="10"
app:dgis_searchType="online"
app:dgis_sortingType="relevance"
app:dgis_suggestorType="general" />
Аттрибуты dgis_*
предназначены для первоначальной настройки, подробнее о них можно узнать в документации к SearchOptions.
Кроме того, SearchLayout
также можно создать из кода:
// Для примера, создадим опции и изменим SearchType
// Остальные параметры оставим по умолчанию
val options = SearchOptions(searchType = SearchType.Online)
val searchLayout = SearchLayout(this, options)
Кроме настройки при создании, доступна также конфигурация параметров в течение жизненного цикла. Об этом в следующем подразделе.
Настройка
После создания SearchLayout, в методе configureSearchEngine() становятся доступными методы интерфейса SearchViewConfigurator. Методы позволяют как изменить первоначальные настройки создания — тип поиска, размер выдачи и т.д., — так и сконфигурировать другие параметры, такие как провайдер геопозиции, ограничения типа объектов и т.д.
val locationProvider: LocationService
val searchLayout = findViewById<SearchLayout>(R.id.search_layout)
searchLayout.configureSearchEngine { // this: SearchViewConfigurator
// Добавим LocationService, чтобы получать расстояние до объекта, относительно текущей
// геопозиции
setLocationProvider(LocationService)
// Изменим максимальное количество объектов в выдаче
setPageSize(10)
}
Получение результатов
Метод addSearchViewCallback позволяет добавить экземпляр SearchViewCallback. Методы интерфейса позволяют реагировать на события, происходящие в SearchLayout
, такие как очищение поисковой строки, завершившийся поиск и тд.
searchLayout.addSearchViewCallback(object : SearchViewCallback {
// Вызовется при очищении поисковой строки.
override fun searchAborted() {
...
}
// Вызовется при выборе пользователем пункта в выдаче, который является
// объектом DirectoryObject.
override fun directoryObjectChosen(obj: DirectoryObject) {
...
}
// Вызовется при успешно завершившемся поиске, в результате которого получен
// список DirectoryObject. Список может быть пустым.
override fun searchCompletedSuccessfully(items: List<DirectoryObject>) {
...
}
// Вызовется при возникновении исключения про поиске.
override fun searchCompletedWithException(message: String) {
...
}
// Вызовется при клике на кнопку закрытия поиска. SearchLayout при этом будет удален из иерархии независимо от того, реализован ли метод.
override fun searchClosed() {
...
}
})
Можно реализовать как все, так и только необходимые методы.
Тема
Можно изменять цветовую схему и некоторые другие параметры SearchLayout с помощью изменения аттрибутов темы.
Для изменения стиля компонента необходимо установить аттрибут dgis_searchTheme
, который будет указавать на стиль в тему вашего приложения.
<resources>
<style name="AppTheme" ...>
...
<item name="dgis_searchTheme">@style/customSearchTheme</item>
...
</style>
</resources>
Доступные аттрибуты:
Имя аттрибута | Описание |
---|---|
dgis_searchPrimaryBackgroundColor |
Основной цвет фона |
dgis_searchSecondaryBackgroundColor |
Дополнительный цвет фона |
dgis_searchIconTint |
Цвет иконки лупы |
dgis_searchInputActiveTextColor |
Цвет текста |
dgis_searchInputTextSize |
Размер текста в поисковой строке |
dgis_searchResultTitleTextSize |
Размер текста в заголовке результата поисковой выдачи |
dgis_searchResultAddressTextSize |
Размер текста в подзаголовке результата поисковой выдачи |
dgis_searchResultDistanceTextSize |
Размер текста в расстоянии до объекта |