UI–элементы | Mobile SDK | 2GIS Documentation
Android SDK

UI–элементы

Все варианты поставки 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 – в режиме ведения по маршруту
  9. DashboardControl – в режиме свободной навигации
  10. DashboardControl – в режиме навигации внутри зданий
  11. 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 Размер текста в расстоянии до объекта