Миграция с предыдущих мажорных версий SDK
С версий 12.x на 13.x
Для версий Full и Map
-
Повторно выгрузите стили: исправлены ошибки отображения пользовательских и иммерсивных объектов.
-
Обновлены все слои групп
Roadsдля отображения иммерсивных дорог в основном режиме карты. -
Добавлена группа
Traffic v13.0.0для отображения новых цветов тайлов с пробками. -
Добавлена группа
Car route line v13.0.0для отображения автомобильных маршрутов на иммерсивных дорогах. -
Для изоляции потоков и совместимости с Swift 6 в проект добавлен атрибут
@MainActorи отмечены протоколы, структуры и функции какSendable. -
Минимальная поддерживаемая версия iOS обновлена до 16.0.
-
Основные изменения в SwiftUI-элементах:
- Переименован основной слой карты
MapViewOverlayв MapView и переименованы все методы для настройки слоя. - Переименовано свойство
IMapFactory.mapViewOverlayв IMapFactory.mapView. - Переименована фабрика SwiftUI-элементов управления картой
IMapControlViewFactoryв IMapViewsFactory. - Переименованы методы SwiftUI-элементов для создания дорожных событий RoadEventCreatorView.
- Переименованы методы SwiftUI-элементов для настройки отображения информации о дорожном событии RoadEventInfoView.
- Переименованы пользовательские SwiftUI-маркеры и контейнеры на карте
MapMarkerView,MapMarkerViewModelиMapMarkerViewOverlayв MarkerView, MarkerViewModel и MarkerOverlayView соответственно. - Переименовано свойство
IMapFactory.mapMarkerViewOverlayв IMapFactory.markerOverlayView. - Переименован основной слой навигатора
NavigatorViewв NavigationView. - Переименован метод
NavigatorView.navigatorViewFinishButtonCallback()в NavigationView.finishButtonCallback(). - Переименована фабрика SwiftUI-элементов управления навигатором
INavigatorViewFactoryв INavigationViewFactory.
- Переименован основной слой карты
-
Основные изменения в UIKit-элементах:
- Переименован основной слой карты
IMapViewв IMapUIView. - Переименовано свойство
IMapFactory.mapViewв IMapFactory.mapUIView. - Переименованы интерфейсы слоя обработки жестов
IMapGestureViewиIMapGestureViewFactoryв IMapGestureUIView и IMapGestureUIViewFactory соответственно. - Переименовано свойство
IMapFactory.gestureViewв IMapFactory.gestureUIView. - Переименованы пользовательские UIKit-маркеры и контейнеры на карте
IMarkerView,IMarkerViewFactoryиIMarkerViewOverlayв IMarkerUIView, IMarkerUIViewFactory и IMarkerOverlayUIView соответственно. - Переименован объект
IMapFactory.markerViewOverlayв IMapFactory.markerOverlayUIView. - Переименована фабрика UIKit-элементов управления картой
IMapControlFactoryв IMapUIControlsFactory. - Переименованы все публичные классы UIKit-элементов управления, моделей и их фабрик. Например,
ZoomControlпереименован в ZoomUIControl,TrafficControlпереименован в TrafficUIControl,IndoorControlпереименован в IndoorUIControl и т. д. - Переименована фабрика UIKit-элементов управления карточками дорожных событий
RoadEventCardViewOptionsв IRoadEventUIViewFactory. - Переименован объект
IRoadEventCardViewв IRoadEventInfoUIView. - Переименован объект
ICreateRoadEventViewв IRoadEventCreatorUIView. - Переименован объект
RoadEventCardViewOptionsв RoadEventInfoViewOptions. - Переименован основной слой навигатора
INavigationViewв INavigationUIView. - Переименована фабрика UIKit-элементов управления навигатором
INavigationViewControlsFactoryв INavigationUIControlsFactory. - Переименована фабрика UIKit-элементов управления картой
INavigationMapControlsFactoryв INavigationMapUIControlsFactory.
- Переименован основной слой карты
-
Теперь для отслеживания изменений состояний камеры используется единый канал BaseCamera.changed вместо отдельных каналов для каждого свойства. Заменены подписки и добавлена дополнительная фильтрация причин изменений.
-
Изменён способ создания некоторых классов:
- Удалена функция
getSystemMemoryManager. Чтобы получить объект для управления системной памятью, используйте метод SystemMemoryManager.instance(). - Удалён конструктор SearchHistory. Чтобы получить объект истории поиска, используйте метод SearchHistory.instance().
- Удалён конструктор RoadEventManager. Чтобы получить объект для работы с дорожными событиями, используйте метод RoadEventManager.instance().
- Удалена функция
getHttpCacheManager. Чтобы получить объект для управления HTTP-кешем, используйте метод HttpCacheManager.get(). - Удалена функция
getLocaleManager. Чтобы получить объект для управления локалями приложения, используйте метод LocaleManager.instance(). - Удалён конструктор TrafficCollector. Чтобы получить объект для управления сервисом сбора информации о дорожном движении, используйте метод TrafficCollector.instance().
- Удалена функция
getAudioSettings. Чтобы получить объект для управления звуком приложения, используйте метод AudioSettings.get(). - Удалена функция
getPackageManager. Чтобы получить объект для работы с пакетами, используйте метод PackageManager.instance(). - Удалена функция
getTerritoryManager. Чтобы получить объект для работы с территориями, используйте метод TerritoryManager.instance(). - Удалена функция
getTerritoriesAlongRouteProvider. Чтобы получить объект для извлечения списка территорий вдоль маршрута, используйте конструктор TerritoriesAlongRouteProvider. - Удалена функция
getVoiceManager. Чтобы получить объект для управления голосовыми пакетами, используйте метод VoiceManager.instance().
- Удалена функция
-
Свойство
buildingLevelsдля получения этажных планов удалено из DirectoryObject. -
Свойство DirectoryObject.buildingInfo теперь опциональное.
-
Свойство BuildingInfo.buildingId теперь обязательное и не может быть пустым.
-
Свойство LevelInfo.id теперь опциональное.
-
Изменён тип свойства PublicTransportDirectoryRouteInfo.color с
Int?наColor?. -
Метод SearchQueryBuilder.setGeoPoint() теперь принимает опциональный тип значения.
-
Метод SearchQueryBuilder.setRadius() теперь принимает опциональный тип значения.
Дополнительно для версии Full
- Удалены функция
getRoadMacroGraphи классRoadMacroGraph. Теперь для построения офлайн-маршрутов между соседними регионами достаточно скачать пакеты нужных регионов. - Удалены класс для настройки позиции бабла с полосами на маршруте (
LanesCalloutMapPositionиRouteMapObject.lanesCalloutPositions) и свойство в RouteMapObject. - Переименован класс
UIntRouteLongAttributeв DoubleRouteLongAttribute. - Изменён тип свойства Route.trafficLights с VoidRouteAttribute на StringRouteAttribute.
- Добавлен новый вид транспорта
motorcycle(мотоцикл) в TransportType. - Добавлены параметры для настройки уровня масштабирования для стиля в конструктор SpeedRangeToStyleZoom.
- Добавлены значения для пандусов
rampDown,rampUp,smoothRampDownиsmoothRampUpв RoadSubtype. - Добавлены новые значения позиций и ориентиров в CarInstructionCrossroadLandmark.
- Добавлены значения цветов
deepGreenиorangeв TrafficSpeedColor. - Добавлен флаг
crossingдля отображения начала и конца переправы на маршруте в RouteMapObjectDisplayFlag. - Добавлен новый тип точки маршрута
crossing(начало и конец переправы) в RoutePointKind. - Добавлены значения для оповещений о событиях
betterRoute(«маршрут лучше») иhumps(искусственные дорожные неровности) в SoundCategory.
С версий 10.x на 12.x
Для версий Full и Map
- Повторно выгрузите стили.
- Для корректного отображения маркера геопозиции скопируйте соответствующие слои.
- Удалён параметр
Container.apiKeyOptions. Теперь вы можете передавать явно источник файл ключа с помощьюKeySource,KeyFromAsset,KeyFromFileиKeyFromString. - Удалён параметр
Container.vendorConfigFile. Теперь вы можете передавать явно источник файл конфигурационных настроек с помощьюVendorConfig,VendorConfigFromAsset,VendorConfigFromFileиVendorConfigFromString. - Удалены методы
Container.makeStyleFactory(),Container.makeSearchManagerFactory(),Container.makeSourceFactory(),Container.makeImageFactory()иContainer.makeLocaleManager(). Вместо них используйте поляContainer.styleFactory,Container.searchManagerFactory,Container.sourceFactory,Container.imageFactoryиContainer.localeManager. - Удалены
IPositioningServicesFactoryи параметрContainer.positioningServices. Теперь при созданииContainerнужно передавать отдельноContainer.locationProviderиContainer.magneticHeadingProvider. - Удалён
ILocationService. Вместо него используйтеLocationServiceс аналогичным функционалом. - Удалены
MyLocationControllerиMapLocationController.myLocationIndicatorController. Для настройки источника маркера геопозиции используйте MyLocationControllerSettings. В INavigationView теперь не происходит подмена источника геопозиции. - Структура HttpOptions изменена с сохранением функциональности.
- В LogOptions переименованы поля: вместо
osLogLevelиcustomLogLevelтеперьsystemLevelиcustomLevel. - В LogLevel переименованы значения: вместо
disabledиfaultтеперьoffиfatal. - Удалено значение
CameraState.followPosition. Вместо него ориентируйтесь на значение Camera.behaviour. - Добавлены значения для SuggestedType, SuggestorType и ObjectType и теперь соответствуют результатам Places API.
- Приведены к стандарту именования значения MyLocationMapObjectMarkerType.
- Удалён метод
createRasterTileDataSource()и добавлен новый источник RasterTileSource с возможностью задания прозрачности растровых тайлов.
Дополнительно для версии Full
- Для отображения иммерсивных дорог реальной ширины и для корректного взаимодействия остальных объектов с иммерсивными дорогами в режиме навигации выгрузите последние стили Mobile SDK и примените свои настройки.
- Удалён
AudioVolume. Теперь вы можете задавать громкость инструкций от 0 до 100 через AudioSettings.volume. - Удалены
AudioOptionsиIAudioSettings. ИспользуйтеAudioSettingsдля настройки звука. - Добавлен флаг RouteMapObjectDisplayFlag.immersiveRouteParts для использования иммерсивной геометрии для отрезков маршрута.
С версий 7.x на 10.x
Для версий Full и Map
-
Повторно выгрузите стили.
-
Изменена работа с FollowController:
- Удалены методы
createRawMyLocationController()иcreateSmoothMyLocationController(). Добавлен конструктор MyLocationController для создания контроллера перемещения маркера геопозиции. - Удалены значения
FollowBearing.satelliteиFollowBearing.magnetic, т. к. теперь не нужно указывать источник направления. Добавлено значение FollowBearing.on для включения слежения — источник выбирается автоматически. - Удалено поле FollowPosition.tilt. Добавлен новый конструктор CameraBehaviour с параметром
tiltдля слежения только за наклоном. - Удалены значения
FollowValue.satelliteBearing,FollowValue.magneticBearingиFollowValue.accuracy. Вместо них добавлено значение FollowValue.bearing с автоматическим выбором источника. - Удалены методы
satelliteBearing(),magneticBearing()иaccuracy()из интерфейса CustomFollowController. Вместо них добавлен метод CustomFollowController.bearing(). - Удалены методы
setClock(),satelliteBearing(),magneticBearing()иaccuracy()из FollowController. Вместо них добавлены методыonAddedToMap(),onRemovedFromMap()иbearing(). - Удалён канал
FollowController.nextTimestampChannel. Вместо него добавлен FollowController.changedChannel. - Изменена сигнатура метода FollowController.updateValues().
- Удалён контроллер
PlatformLocationFollowController. Вместо него добавлены контроллеры BearingFollowController и CoordinatesFollowController для слежения за направлением карты и за координатами позиции карты, соответственно. - Изменён конструктор контроллера StyleZoomFollowController. Удалён метод
StyleZoomFollowController.setAnimationDuration(). - Изменён конструктор контроллера TiltFollowController. Удалены методы
TiltFollowController.setTilt()иTiltFollowController.setAnimationDuration(). - Изменены параметры метода FollowController.setThresholds() на типизированные.
- Удалён класс
FollowControllerClock. Тип параметра в методе FollowController.setClock заменён на timestamp. - Удалён
TransitionType. Конструктор MyLocationControlModel теперь не принимаетtransitionType. Удалён параметрtransitionTypeиз конструктора CameraBehaviour. - Удалён
MyLocationDirectionBehaviour. Конструктор источника геопозиции MyLocationMapObjectSource теперь не принимаетdirectionBehaviour. Удалён методMyLocationMapObjectSource.setDirectionBehaviour().
- Удалены методы
-
Удалено поле
BaseCamera.styleZoomToTiltRelation. -
Переименован класс
MagneticHeadingProviderвHeadingProvider. -
Конструкторы динамических объектов Circle, Marker, Polygon и Polyline помечены как
throws. -
Удалена опция MapOptions.mapRendererType и enum
MapRendererType. Теперь всегда включёнMetalдля рендеринга карты. -
Удалены
Circle.positionиCircle.radius. Вместо них добавлены методы Circle.setPosition() и Circle.setRadius(), которые могут генерировать исключение. -
Структура Locale теперь создаётся на основе отдельных значений языка
languageи регионаregion. -
Из сборки версии Map удалены PackageManager и Package, что уменьшило размер продукта.
Дополнительно для версии Full
- Метод Voice.playWelcome() теперь возвращает Future, который становится готовым, когда проигрывание сэмпла завершается.
- Удалено поле
RoadSubtype.stairway. Вместо него добавлены поля RoadSubtype.stairwayUp и RoadSubtype.stairwayDown для использования лестниц с явным направлением. - Удалено поле
NavigationFollowController.mapTiltController. - При запуске навигатора в режиме ведения или симуляции с маршрутом на общественном транспорте теперь генерируется исключение.
- Отключено кеширование тайлов
FreeRoamпри навигации. - MyLocationMapObjectSource для навигатора теперь устанавливается внутри INavigationView.
С версий 5.x на 7.x
Для версий Full и Map
- Повторно выгрузите стили.
- Удалены методы
DgisSource.createOnlineDgisSource()иDgisSource.createOfflineDgisSource(). Вместо них используйте методDgisSource.createDgisSource()с дополнительным параметромDgisSourceWorkingModeдля установки режима работы карты. Доступно четыре режима работы:online,offline,hybridOnlineFirstиhybridOfflineFirst. FollowControllerтеперь возвращаетStyleZoom, а неZoom.FollowValue.zoomпереименован вFollowValue.styleZoom.ZoomFollowControllerпереименован вStyleZoomFollowController.ZoomToTiltRelationпереименован вStyleZoomToTiltRelation.SpeedRangeToZoomпереименован вSpeedRangeToStyleZoom.- Метод
Projection.screenToMap()теперь вместо исключения возвращает пустое значение, если точка находится за пределами карты. - Удалены методы
BaseCamera.setPadding()иBaseCamera.setPositionPoint(). Удалён enumCameraPositionPointChangeBehaviour. ПолеBaseCamera.paddingтеперь является свойством. - Удалены методы
Camera.animatedMoveStarted()иCamera.animatedMoveFinished(). Вместо них используйте каналCamera.stateChannel. - Методы
SearchManager.createOnlineManager(),SearchManager.createOfflineManager()иSearchManager.createSmartManager()помечены какthrows. - Удалены свойства
BaseCamera.positionиBaseCamera.zoomRestrictions. МетодыBaseCamera.setPosition(),BaseCamera.setZoomRestrictions()иBaseCamera.setPositionPoint()помечены какthrows. - Удалено свойство
Map.fontIconSizeMultiplier. МетодMap.setFontIconSizeMultiplier()помечен какthrows. - Конструктор
NavigationManagerи методыNavigationManager.start()иNavigationManager.startSimulation()помечены какthrows. Container.contextи остальные методы-фабрикиContainerпомечены какthrows.
Дополнительно для версии Full
- Изменены названия в
ZoomFollowSettings, чтобы лучше соответствовать назначению. - Удалён метод
Model.applyBetterRoute(). Вместо него добавлен методModel.betterRouteResponse()и enumBetterRouteResponseдля работы с альтернативными маршрутами. - Удалено значение
State.freeRoam. Чтобы определить, что навигатор находится в режиме свободной навигации, используйте значениеRouteInfo.routeBuildOptions(оно должно быть пустым).
С версий 4.x на 5.x
Для версий Full и Map
-
Изменена сигнатура методов:
zoomOutToFit()теперь принимает только камеру и геометрию.calcPosition()теперь принимает активную область, угол наклона и поворота карты, поэтому теперь необязательно предварительно настраивать камеру для расчёта позиции.
-
Конструктор
ZoomFollowControllerтеперь принимает параметрMap. -
Удалены методы
osmCopyrightAnimationDuration()иshowOSMCopyright()из классаMapView.
Дополнительно для версии Full
- Удалён избыточный класс
RoutePosition. Вместо него используйтеRoutePoint. - Удалено свойство
Model.cameraProgressChannel. Вместо него используйте классCameraNotifier. - Изменён тип
Traffic.durationsсMillisecondsRouteAttributeнаSecondsRouteLongAttributeи повышена точность значений. - Изменён тип
Route.obstaclesнаObstacleInfoRouteAttributeи добавлена дополнительная информация.
С версий v2.x на 4.x
Для версий Full и Map
- Обратитесь в службу поддержки 2ГИС для получения нового ключа для использования Mobile SDK. Обязательно укажите
appIdприложения, для которого будет создан ключ. Полученный файл ключаdgissdk.keyнужно либо добавить в корень приложения, либо при инициализации Mobile SDK передать объект структурыApiKeyOptionsс указанием пути до файла. - Удалена структура
APIKeys. Вместо неё вContainer.initпервым параметром передайте объект структурыApiKeyOptions, который содержит путь до файлаdgissdk.key. Объект по умолчаниюApiKeyOptions.defaultпытается получить файл из корня приложения. - Обновите стили.
- Переименован класс
DirectoryObjectIdвDgisObjectId. - Удалены функции
serializeиdeserializeдляCameraPosition. Вместо них используйте новый механизм сериализацииPackedMapState. - Удалены методы
SearchQueryBuilder.setLocation()иSuggestQueryBuilder.setLocation(). Теперь значение автоматически берётся из источника геопозиции. - Удалён метод
PackedSearchQuery.location(). - Удалены
SearchResultMarkerObjectиSearchResultMarkerSourceдля генерализации маркеров поисковой выдачи, т. к. невозможно динамически добавлять или удалять объекты. В качестве альтернативы вы можете реализовать генерализацию маркеров или воспользоваться кластеризацией. - При создании
MyLocationMapObjectSourceпо умолчанию используетсяSmoothMyLocationControllerвместоRawMyLocationController.
Дополнительно для версии Full
-
Удалены списки с информацией о маршруте в
RouteInfo:cameras,instructions,laneSignsи т. д. Удалены индексы текущих элементовModel.cameraIndexChannelиModel.instructionIndexChannel. Вместо этого получайте информацию непосредственно из маршрута и текущей позиции. Например, для получения ближайшей камеры используйтеModel.route.route.cameras.findNearForward(position). -
Переименованы параметры поиска маршрута:
BicycleRouteSearchOptions.avoidUnderpassesвavoidUnderpassesAndOverpasses;CarRouteSearchOptions.avoidFerryвavoidFerries;TruckRouteSearchOptions actualWeight,maxPermissibleWeightвactualMass,maxPermittedMass.
-
Значение enum
RoadType.roadразделено на подтипыRoadType.highway,RoadType.federalRoadи другие. -
Заменён метод
VoiceSelector.setVoice()на свойствоvoice. -
Удалены
Model.durationChannel,Model.routeDurationChannel. Вместо них используйтеModel.dynamicRouteInfo.traffic.durations.calculateDuration(routePoint). -
Изменён набор значений в enum
RoadSurface. -
Удалены
Model.navigationActiveChannel,NavigationManager.uiSettings. Вместо них для получения активности навигатора используйте новый классActivityTracker.
С версий 1.x на 2.x
-
Вместо
Arcdegreeиспользуйте отдельные типыBearing,LatitudeиLongitudeдля задания поворота камеры, широты и долготы. -
Изменён API для работы с пробками:
- Переименован
TrafficScoreвTrafficScoreProvider. - Переименован
TrafficScoreValueвTrafficScore. - Удалён
TrafficManager. TrafficScoreProviderтеперь создаётся через конструктор.
- Переименован
-
Исправлено падение приложения, когда при создании карты не создавался
GLContext. Теперь в случае ошибки возникает исключениеGLContextError. -
Переименован метод
LocaleManager.setOverridedLocales()вoverrideLocales(). -
Удалено получение очереди позиционирования через
IPositioningServicesFactory.positioningQueue. Теперь внутри реализации протоколаILocationProviderне нужно вызывать callback через очередь. -
Исправлены и изменены API пользовательских контроллеров камеры. Теперь контроллер может быть только один. Для добавления и удаления используйте методы
Camera.setCustomFollowController()иCamera.removeCustomFollowController().