Перейти к основному содержимому

Android View

Вы можете добавить UI-элементы в макет своего приложения, используя стандартный подход Android View или фреймворк Android Compose.

Карта

Все варианты поставки SDK содержат стандартный набор UI-элементов для управления картой, которые вы можете добавить в макет и использовать для управления параметрами карты.

Все перечисленные ниже UI-элементы должны добавляться как дочерние View по отношению к MapView. Процесс создания и добавления MapView подробно описан в разделе Создание карты.

Стандартный набор включает в себя:

  

  1. IndoorControl для переключения этажей.
  2. TrafficControl для показа текущего уровня пробок и для управления видимостью пробок на карте.
  3. ZoomControl для масштабирования (приближения и удаления) карты.
  4. CompassControl для отображения текущего угла поворота карты относительно севера.
  5. MyLocationControl для перелёта к текущему местоположению пользователя.
  6. AddRoadEventCard для описания нового дорожного события.
  7. AddRoadEventButton для добавления дорожного события.
  8. RoadEventCard для просмотра информации о дорожном событии.

Навигатор

Полный вариант поставки SDK содержит набор UI-элементов для отображения и управления навигацией. Для удобства все элементы объединены в DefaultNavigationControls. Способ их использования и добавления описан в разделе Навигатор.

Набор UI-элементов навигации состоит из:

 

  1. TrafficLineControl для отображения уровня пробок на маршруте.
  2. ManeuverControl для отображения информации о следующем манёвре.
  3. SpeedInfoControl для отображения текущей скорости и скоростного ограничения.
  4. TrafficAndParkingControl для управления видимостью пробок и парковок на карте.
  5. ZoomControl для масштабирования (приближения и удаления) карты.
  6. CompassControl для отображения текущего угла поворота карты относительно севера.
  7. FollowControl для управления слежением за маркером местоположения.
  8. DashboardControl для отображения информации в режиме ведения по маршруту.

  

  1. DashboardControl для отображения информации в режиме свободной навигации.
  2. DashboardControl для отображения информации в режиме навигации внутри зданий.
  3. MarkedByRouteIndoorControl для выделения этажей, через которые проходит маршрут.

Справочник

SearchLayout — компонент, предоставляющий интерактивную строку поиска и список результатов. Является частью поставки как Full, так и Map-версии SDK. Чтобы добавить компонент SeachLayout в ваш макет, выполните шаги ниже:

1. Интеграция

Добавление 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 при создании, так и конфигурировать параметры в течение жизненного цикла. Об этом в следующем подразделе.

2. Настройка

После создания SearchLayout, в методе configureSearchEngine() становятся доступными методы интерфейса SearchViewConfigurator. Методы позволяют как изменить первоначальные настройки создания (тип поиска, размер выдачи и т.д.), так и сконфигурировать другие параметры: провайдера геопозиции, ограничения типа объектов и другие.

val locationProvider: LocationService
val searchLayout = findViewById<SearchLayout>(R.id.search_layout)

searchLayout.configureSearchEngine { // this: SearchViewConfigurator
// Добавим LocationService, чтобы получать расстояние до объекта относительно текущей
// геопозиции
setLocationProvider(LocationService)

// Изменим максимальное количество объектов в выдаче
setPageSize(10)
}

3. Получение результатов

Метод 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() {
...
}
})

Вы можете реализовать как все, так и только необходимые методы.

4. Настройка темы

Вы можете изменять цветовую схему и некоторые другие параметры 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Размер текста в расстоянии до объекта