Начало работы
Инициализация SDK
-
Обратитесь в службу поддержки 2ГИС для получения ключа доступа. Обязательно укажите
appIdприложения, для которого будет создан ключ. Подробнее см. в разделе Получение ключей доступа. -
Создайте специальный объект Container, который будет хранить все сущности, связанные с картой. При создании объекта укажите путь до полученного файла ключа
dgissdk.keyодним из способов:-
Из
Bundle.mainприложения с помощью метода fromAsset() (способ по умолчанию). Ключ должен быть прикреплён к корню приложения:// Получение файла ключа
let key = KeySource.fromAsset(KeyFromAsset(path: "dgissdk.key"))
// Создание контейнера
let sdk = DGis.Container(keySource: key) -
C указанием абсолютного пути до файла ключа с помощью метода fromFile():
// Получение файла ключа
let key = Bundle.main.path(forResource: "dgissdk", ofType: "key").map {
KeySource.fromFile(KeyFromFile(path: $0))
}
// Создание контейнера
let sdk = DGis.Container(keySource: key) -
С указанием строки для получения файла ключа с помощью метода fromString():
// Получение файла ключа
let key = KeySource.fromString(KeyFromString(contents: "some content"))
// Создание контейнера
let sdk = DGis.Container(keySource: key)
Важно
DGis.Containerможет быть создан только в единственном экземпляре. -
-
Дополнительно вы можете указать настройки журналирования (LogOptions) и настройки HTTP-клиента (HTTPOptions), такие как время ожидания ответа и кеширование.
// Настройки журналирования
let logOptions = LogOptions(systemLevel: .info)
// Настройки HTTP-клиента
let httpOptions = HttpOptions.init()
// Настройки сбора анонимной статистики использования
let personalDataCollectionOptions = PersonalDataCollectionOptions(personalDataCollectionConsent: .granted)
// Создание контейнера
let sdk = DGis.Container(
keySource: key,
logOptions: logOptions,
httpOptions: httpOptions,
personalDataCollectionOptions: personalDataCollectionOptions
)
Vendor Config
Для переопределения некоторых настроек работы SDK используется файл в формате VendorConfig, который передается при инициализации контейнера SDK.
-
Добавьте файл в формате
VendorConfigв бандл при сборке приложения и создайте экземпляр класса File.Для файла, добавленного в корень бандла и имеющего имя
vendor-config.json, код будет выглядеть так:let vendorConfigFile = Bundle.main.path(forResource: "vendor-config", ofType: "jsonx").map {
VendorConfig.fromFile(VendorConfigFromFile(path: $0))
} -
Передайте созданную переменную в качестве значения параметра
vendorConfigFileпри инициализации Container:let sdk = DGis.Container(
keySource: key,
logOptions: logOptions,
httpOptions: httpOptions,
vendorConfigFile: vendorConfigFile ?? .none
)
Работа с офлайн-данными
Мобильный SDK (версия Full) позволяет работать с данными карты, справочника и навигатора офлайн из предзагруженных пакетов. Это может быть полезно в условиях плохой связи или при её полном отсутствии.
Чтобы настроить работу в режиме офлайн:
-
Убедитесь, что ваш ключ доступа содержит необходимые права для работы с офлайн-данными. Вы можете запросить права на офлайн-данные всех компонентов (карта, справочник, построение маршрутов) или выбрать только необходимые.
-
Скачайте файлы с данными для территорий, где необходима офлайн-работа приложения, через TerritoryManager.
См. пример кода для загрузки территории:
-
Настройте компоненты SDK для работы с предзагруженными данными:
- Карта: создайте источник данных и укажите нужный режим работы.
- Справочник: используйте нужный метод для создания справочника объектов.
- Построение маршрутов: по умолчанию настроен гибридный режим. Подробнее см. документацию о маршрутах.
Язык приложения
Чтобы установить язык приложения, передайте список локалей (Locale) в методе overrideLocales() класса LocaleManager.
В зависимости от выбранной локали меняется язык звуковых оповещений в навигаторе.
Пример установки англоязычной локали:
-
Для версии SDK 13.0.0 и выше:
// Создание объекта Locale с указанием языка и региона
let locale = Locale(language: "en", region: "EN")
// Установка локали для приложения
LocaleManager.instance(context: sdkContext).overrideLocales(locales: [locale]) -
Для версии SDK 12.х и ниже:
// Создание объекта Locale с указанием языка и региона
let locale = Locale(language: "en", region: "EN")
// Установка локали для приложения
getLocaleManager(context: sdkContext).overrideLocales(locales: [locale])
Доступные значения языков (параметры language и region соответственно):
ru-RU— русский;en-EN— английский;ar-AE— арабский.