Flutter SDK Обзор | 2GIS Documentation
Flutter SDK

Flutter SDK

Flutter SDK позволяет добавить карту 2ГИС в ваше приложение. С помощью SDK можно отобразить карту на экране, получать информацию об объектах карты, использовать навигатор, строить маршруты и так далее.

Примеры использования SDK см. в разделе Примеры.

Картографические данные поддерживают стандарты OGC.

Вы можете использовать Flutter SDK на устройствах с операционными системами iOS, Android и Аврора.

Пакеты Flutter SDK доступны в pub.dev в двух версиях:

  • Full — полная версия, которая позволяет:
    • Добавлять карту в приложение и управлять ей: добавлять маркеры и геометрические фигуры, управлять движением камеры, отображать слои (например, пробки), работать со стилями карты и т. д.
    • Искать объекты в справочнике: организации, здания, места и другие.
    • Работать с навигатором в приложении в трёх режимах: свободная навигация, ведение по маршруту и симуляция ведения.
    • Строить оптимальные маршруты на карте, в том числе внутри зданий.
    • Использовать офлайн-данные.
  • Map — облегчённая версия, которая позволяет:
    • Добавлять карту в приложение и управлять ей: добавлять маркеры и геометрические фигуры, управлять движением камеры, отображать слои (например, пробки), работать со стилями карты и т. д.
    • Искать объекты в справочнике: организации, здания, места и другие.

Важно

Использовать совместно Full и Map нельзя: это приведёт к ошибке сборки.

Для работы с SDK необходимо получить файл ключа dgissdk.key: для подключения к серверам 2ГИС, получения географических данных, а также для использования офлайн-данных и навигатора. Чтобы получить файл ключа, заполните форму на dev.2gis.ru и укажите appId приложения, для которого будет использоваться ключ.

После получения ключа инициализируйте SDK. Следуйте требованиям:

  • Для одного приложения вы можете инициализировать SDK только один раз. При этом для каждого приложения используется только один ключ. Отдельные ключи требуются в следующих случаях:
    • Если приложение доступно для разных операционных систем.
    • Если у приложения есть несколько вариантов для одной ОС (например, приложение для водителя и приложение для пассажира).
    • Если используются разные версии SDK (Full и Map).
  • Значение appId приложения должно соответствовать значению app_id в файле с ключом.
  • Изменение файла ключа во время работы приложения не поддерживается.

Для работы некоторых функций в SDK используются API поиска и навигации. Доступ к этим API предоставляется вместе с ключом для SDK. Использование API оплачивается дополнительно в зависимости от количества отправленных запросов (и в некоторых случаях — полученных ответов). См. список функциональностей и дополнительных API ниже.

Вы можете просматривать статистику распределения запросов к API в личном кабинете Менеджер Платформы.

Функциональность
Используемые API
Создание поискового движка
(класс SearchManager)
Regions API
Получение результатов поиска
(метод SearchManager.search)
Получение некоторой информации об объектах в доступно только при дополнительной настройке ключа за отдельную плату: см. раздел Структура данных объекта.
Поиск объектов в справочнике по идентификатору
(метод SearchManager.searchById)
Формирование поисковых подсказок
(метод SearchManager.suggest)
Suggest API
Поиск оптимального маршрута с учётом пробок
(класс TrafficRouter)
  • Routing API — все маршруты, кроме общественного транспорта.
  • Public Transport API — маршруты общественного транспорта.
  • Truck Directions API (deprecated) — маршруты для грузовиков. Используется только в старых ключах для SDK, в новых ключах используется Routing API.
Запуск навигатора (метод NavigationManager.start):
  • Routing API — все маршруты, кроме общественного транспорта.
  • Public Transport API — маршруты общественного транспорта.
  • Truck Directions API (deprecated) — маршруты для грузовиков. Используется только в старых ключах для SDK, в новых ключах используется Routing API.
Поиск альтернативных маршрутов
(класс AlternativeRouteSelector)
  • Routing API — все маршруты, кроме общественного транспорта.
  • Public Transport API — маршруты общественного транспорта.
  • Truck Directions API (deprecated) — маршруты для грузовиков. Используется только в старых ключах для SDK, в новых ключах используется Routing API.
Отображение маршрутов на карте
(класс RouteEditorSource)
  • Routing API — все маршруты, кроме общественного транспорта.
  • Public Transport API — маршруты общественного транспорта.
  • Truck Directions API (deprecated) — маршруты для грузовиков. Используется только в старых ключах для SDK, в новых ключах используется Routing API.
Отображение пробок на карте
(класс TrafficSource)
Regions API
Отображение дорожных событий
(класс RoadEventSource)
Regions API
Вычисление местоположения устройства по сотовым вышкам и точкам доступа Wi-Fi
(использование RadarApiSettings в Android и ru.dgis.sdk.positioning.RadarSettingsProvider)
Radar API

Для SDK ключ выписывается для определённого идентификатора приложения. Для ОС Аврора идентификатор приложения формируется по принципу "{QCoreApplication::organizationDomain()}.{QCoreApplication::applicationName()}".

Значение organizationDomain указывается в файле приложения aurora/main.cpp. Например:

int main(int argc, char * argv[])
{
	aurora::Initialize(argc, argv);
	aurora::EnableQtCompatibility();
	// Необходимо указать для успешной проверки ключа
	QCoreApplication::setOrganizationDomain("ru.mobile.sdk.app");
	aurora::RegisterPlugins();
	aurora::Launch();
	return 0;
}

Значение applicationName указывается в конфигурационных файлах приложения. Например:

ApplicationName=flutter_app

и:

Name: ru.dgis.flutter_app

Полные примеры файлов см. в GitHub-репозитории: ru.dgis.flutter_app.desktop и ru.dgis.flutter_app.spec.

Чтобы установить Flutter SDK на iOS, Android и Аврора, добавьте в файл pubspec.yaml одну из следующих зависимостей.

  • Для версии SDK Full:

    dependencies:
        flutter:
            sdk: flutter
        flutter_localizations:
            sdk: flutter
    
        dgis_mobile_sdk_full:
            # При зависимости этого пакета от реального приложения используйте:
            #   dgis_mobile_sdk_full: ^x.y.z
            # См. https://dart.dev/tools/pub/dependencies#version-constraints
            # Приложение в примере связано с плагином, поэтому используется зависимость пути от
            # родительской директории, чтобы использовать текущую версию плагина.
            path: ../
    }
    
  • Для версии SDK Map:

    dependencies:
        flutter:
            sdk: flutter
    
        dgis_mobile_sdk_map:
            # При зависимости этого пакета от реального приложения используйте:
            #   dgis_mobile_sdk_map: ^x.y.z
            # См. https://dart.dev/tools/pub/dependencies#version-constraints
            # Приложение в примере связано с плагином, поэтому используется зависимость пути от
            # родительской директории, чтобы использовать текущую версию плагина.
            path: ../
    

Полные примеры файлов см. в GitHub-репозитории: pubspec.yaml.

Выполните дополнительные шаги установки для Android и ОС Аврора.

При сборке для Android используется бинарный артефакт в формате .aar. Для правильного подключения добавьте репозиторий с этим артефактом в build.gradle вашего приложения:

repositories {
    maven {
        url "https://artifactory.2gis.dev/sdk-maven-release"
    }
}

Для установки временно доступна только версия SDK Full.

Чтобы установить Flutter SDK:

  1. Клонируйте репозиторий с SDK для версии Full.

  2. Переключитесь на ветку нужной версии релиза, например версии 12.6.3.

  3. Скопируйте в ваше приложение Flutter реализацию SDK для ОС Аврора.

  4. В файле CMakeLists.txt вашего приложения включите копирование ресурсов, необходимых для корректной работы SDK:

    set(DGIS_DATA_DIR ${CMAKE_CURRENT_LIST_DIR}/../../aurora/data)
    

    Полный пример файла см. в GitHub-репозитории: CMakeLists.txt.

  5. Чтобы библиотека dgis_c_bindings_linux корректно подключалась к приложению, добавьте в rpm приложения следующую строку:

    %global __requires_exclude ^lib(dgis_c_bindings_linux|dconf|flutter-embedder|maliit-glib|.+_platform_plugin)\\.so.*$
    

    Полный пример файла см. в GitHub-репозитории: ru.dgis.flutter_app.spec.

  6. Для корректной работы SDK внутри ОС Аврора добавьте следующие разрешения:

    [Desktop Entry]
    Type=Application
    Name=flutter_app
    Comment=A new Flutter project.
    Icon=ru.dgis.flutter_app
    Exec=/usr/bin/ru.dgis.flutter_app
    X-Nemo-Application-Type=silica-qt5
    
    [X-Application]
    Permissions=Audio;Sensors;SecureStorage;DeviceInfo;Internet;Location;UserDirs
    OrganizationName=ru.dgis
    ApplicationName=flutter_app
    

    Полный пример файла см. в GitHub-репозитории: ru.dgis.flutter_app.desktop.

  7. Инициализируйте SDK.