iOS SDK Релизы | 2GIS Documentation
iOS SDK

Release notes

  • Получаем обновленную информацию о пробочных данных в регионах независимо от обновления конфигурационного файла SDK.
  • Теперь при zoom-уровне выше 2 карту нельзя сдвинуть для отображения пустых полос сверху и снизу.
  • Арабский голосовой пакет для навигатора.
  • Исправлена работа кластеризации через MapObjectManager.withClustering, если изменялась позиция одного из маркеров через Marker.position. Теперь иерархия кластеров перестраивается, если позиция одного из составных маркеров изменилась.
  • Исправлена некорректная обработка тапа в Marker с lottie анимацией.
  • Map.dataLoadingStateChannel больше не зависает в состоянии loading при режиме слежения за геопозицией.
  • Добавлен файл PrivacyInfo.xcprivacy.
  • Заканчивается поддержка iOS 12 версии. Со следующей версии SDK работает только для iOS 13 и выше.
  • Опции CircleOptions.dashedStrokeOptions и Circle.dashedStrokeOptions для создания пунктирной окружности или добавления пунктира для уже созданной окружности.
  • Метод RoadEventSource.setHighlighted для выделения дорожных событий с идентификаторами из RoadEventMapObject.id.
  • Функция calculateClosestPoint для получения ближайшей точки на маршруте относительно переданной точки.
  • Исправлена ошибка в работе layedId, который задается в MapObjectManager: теперь он влияет на отображение кластеризованных маркеров.
  • Исправлен отрисовка карты: раньше карта зависала при отображении модального окна над MapView.
  • Исправлена работа карты при сворачивании приложения.
  • Для корректной работы пунктирных окружностей нужно заново выгрузить стили.
  • Добавлена структура DirectoryObject.buildingInfo со справочной информацией о здании: buildingName, purposeName, purposeCode и buildingLevels. DirectoryObject.buildingLevels помечено deprecated и будет удалено в будущих мажорных релизах.
  • Добавлен DirectoryObject.address.fiasCode - ФИАС-код объекта справочника.
  • В DirectoryObject.address.components в структурах AddressComponent.streetAddress и AddressComponent.number добавлено поле fiasCode - ФИАС-код улицы.

Для всех типов Mobile SDK:

  • Заново выгрузить стили.
  • Изменена работа с FollowController:
    • Методы createRawMyLocationController и createSmoothMyLocationController удалены. Добавлен конструктор MyLocationController для создания контроллера перемещения маркера геопозиции.
    • Теперь не нужно указывать источник направления, поэтому удалены значения FollowBearing.satellite и FollowBearing.magnetic. Добавлено значение FollowBearing.on для включения слежения - источник выбирается автоматически.
    • Удалено поле FollowPosition.tilt. Слежение за наклоном теперь нужно включать отдельно. В конструктор CameraBehaviour добавлен новый параметр tilt для слежения за наклоном. Добавлен новый конструктор CameraBehaviour с параметром tilt для включения слежения только за наклоном.
    • Удалены значения FollowValue.satelliteBearing, FollowValue.magneticBearing и FollowValue.accuracy. Вместо них добавено значение FollowValue.bearing с автоматическим выбором источника.
    • Из интерфейса CustomFollowController удалены методы satelliteBearing, magneticBearing и accuracy. Вместо этого добавлен метод CustomFollowController.bearing.
    • Из FollowController удалены методы setClock, satelliteBearing, magneticBearing и accuracy. Вместо этого добавлены методы 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. Поле CameraBehaviour.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.
  • Из MobileSDK Map сборки удалены PackageManager и Package, что уменьшило размер продукта.

Дополнительно для полной версии:

  • Метод Voice.playWelcome теперь возвращает Future, который становится готовым, когда проигрывание сэмпла завершается.
  • Удалено поле RoadSubtype.stairway. Вместо него добавлены поля RoadSubtype.stairwayUp и RoadSubtype.stairwayDown для использования лестниц с явным направлением.
  • Удалено поле NavigationFollowController.mapTiltController.
  • Кидается исключение при попытке стартовать навигатор в режиме ведения или симуляции с маршрутом на общественном транспорте.
  • Отключено кэширование тайлов FreeRoam при навигации.
  • MyLocationMapObjectSource для навигатора устанавливается внутри NavigationView.
  • Иммерсивные деревья на карте отображаются по умолчанию.
  • Поддержана новая модель для отображения маркера текущего местоположения. Если необходимо переопределить иконку текущего местоположения, нужно передать MyLocationMapObjectMarkerType.svgIcon в конструктор MyLocationMapObjectSource, а в стилях отредактировать соответствующий слой.
  • Добавлены MarkerOptions.iconAnimationMode и Marker.iconAnimationMode для возможности задания режима анимации в маркерах. Режим может быть обычным или зацикленным.
  • Добавлены SearchResult.actionWidgets и SearchResult.mainWidgets для динамической фильтрации уже полученной поисковой выдачи. Widget - базовый класс, представляющий виджет для фильтрации поисковой выдачи.
  • В LocaleManager добавлены методы locales и systemLocales и соответствующие каналы для получения всех локалей приложения и системных локалей.
  • Добавлен метод BaseCamera.changePosition для изменения только части параметров позиции камеры. Метод принимает новую структуру CameraPositionChange.
  • Добавлен метод Camera.move для запуска анимированного перемещения карты с возможностью сброса слежения за наклоном.
  • Добавлен параметр styleZoomToTiltRelation для функций calcPosition и zoomOutToFit - функция зависимости угла наклона камеры от стилевого zoom-уровня.
  • Добавлена новая функция createDefaultStyleZoomToTiltRelation для получения зависимости угла наклона камеры от стилевого zoom-уровня для стандартного контроллера слежения за наклоном.
  • Добавлена функция createDefaultMaxTiltRestriction для получения дефолтной зависимости ограничения угла наклона от масштаба. По умолчанию эта зависимость устанавливается при создании карты - BaseCamera.maxTiltRestriction.
  • Добавлен enum BearingSource - источник направления.
  • Добавлено поле PackedMapState.cameraBehaviour для сериализации режима слежения камеры.
  • В PackageInfo добавлено поле error - ошибка, произошедшая при попытке загрузки и/или установки пакета.
  • Добавлен метод IndoorManager.setIndoorState для управления отображением этажных планов на карте.
  • Добавлено поле NavigationManager.alternativeRouteSelector для выбора альтернативного маршрута.
  • Добавлено поле Route.bicycleLanes - признак наличия выделенной велополосы.
  • Добавлено значение RoutePointKind.bicycleLane - начало и конец велополосы.
  • Добавлен флаг PedestrianRouteSearchOptions.avoidUnderpassesAndOverpasses - избегать подземных и надземных переходов.
  • Добавлен метод RouteMapObjectSource.replaceObject для замены одного объекта маршрута в источнике на другой.
  • Добавлено поле NavigationFollowController.mapLocationController. MapLocationController - контроллер для управления позиционированием карты в навигаторе.
  • Добавлено поле NavigationFollowController.cameraBehaviour для возможности менять режим слежения карты за маркером геопозиции.
  • Добавлено поле ZoomFollowSettings.speedRangeToStyleZoomFreeRoamSequence - последовательность интервалов скоростей и соответствующих им масштабов при ведении в режиме FreeRoam.
  • Изменена работа с FollowController:
    • Методы createRawMyLocationController и createSmoothMyLocationController удалены. Добавлен конструктор MyLocationController для создания контроллера перемещения маркера геопозиции.
    • Теперь не нужно указывать источник направления, поэтому удалены значения FollowBearing.satellite и FollowBearing.magnetic. Добавлено значение FollowBearing.on для включения слежения - источник выбирается автоматически.
    • Удалено поле FollowPosition.tilt. Слежение за наклоном теперь нужно включать отдельно. В конструктор CameraBehaviour добавлен новый параметр tilt для слежения за наклоном. Добавлен новый конструктор CameraBehaviour с параметром tilt для включения слежения только за наклоном.
    • Удалены значения FollowValue.satelliteBearing, FollowValue.magneticBearing и FollowValue.accuracy. Вместо них добавено значение FollowValue.bearing с автоматическим выбором источника.
    • Из интерфейса CustomFollowController удалены методы satelliteBearing, magneticBearing и accuracy. Вместо этого добавлен метод CustomFollowController.bearing.
    • Из FollowController удалены методы setClock, satelliteBearing, magneticBearing и accuracy. Вместо этого добавлены методы 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. Поле CameraBehaviour.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.
  • Из MobileSDK Map сборки удалены PackageManager и Package, что уменьшило размер продукта.
  • Метод Voice.playWelcome теперь возвращает Future, который становится готовым, когда проигрывание сэмпла завершается.
  • Удалено поле RoadSubtype.stairway. Вместо него добавлены поля RoadSubtype.stairwayUp и RoadSubtype.stairwayDown для использования лестниц с явным направлением.
  • Удалено поле NavigationFollowController.mapTiltController.
  • Кидается исключение при попытке стартовать навигатор в режиме ведения или симуляции с маршрутом на общественном транспорте.
  • Отключено кэширование тайлов FreeRoam при навигации.
  • MyLocationMapObjectSource для навигатора устанавливается внутри NavigationView.
  • При частом обновлении динамических объектов (около 100 FPS) зависает карта.
  • Оптимизирована перерисовка кадров карты при любых изменениях.
  • Исправлено отображение пробок на карте в зависимости от zoom-уровня.
  • Исправлено неплавное обновление маркера геопозиции.
  • Оптимизировано и исправлено отображение карты на последних версиях iOS.
  • Исправлена работа метода SimpleClusterObject.setIcon при первом вызове.
  • Исправлена работа кластеризации через MapObjectManager.withClustering, если передать дробные значения minZoom и maxZoom.
  • Обновлен логотип 2GIS в копирайте на снапшотах карты.
  • Теперь бросается корректное исключение, если в карту загрузить битые стили.
  • При установке в MapOptions.appearance значения MapAppearance.default будет устанавливаться дневная тема по умолчанию.
  • При расчёте дистанции для проигрывания предварительной инструкции о манёвре учитывается полосность.
  • При проигрывании финишной фразы в режиме навигатора учитывается пеший маршрут.
  • Исправлена ошибка, при которой баблы полосности не отображают направление маршрута.
  • Исправлено формирование баблов полосности, чтобы не учитывалось ограничение по скорости.
  • Исправлено отображение баблов автобусной полосы, идущей прямо, со знаком "Въезд запрещен" для остального транспорта.
  • Не убирается предложенный маршрут лучше с карты, если пользователь явно отказался переходить на него.
  • Убирается с карты альтернативные маршруты, от развилки с которыми уже слежение уехало слишком далеко, даже если к ним всё ещё можно притянуться.
  • Откидываются альтернативные маршруты, ответвляющиеся от основного маршрута в одной и той же точке и идущие в одну и ту же сторону.
  • Отзыв предложения маршрута лучше в случае, когда после обновления пробочных данных маршрут лучше перестаёт быть таковым.
  • Не озвучиваются предупреждения о камерах-муляжах.
  • В NavigationView при отображении полного маршрута отображается только оставшаяся часть маршрута.
  • По умолчанию отключено кэширование тайлов FreeRoam при навигации для уменьшения запросов к бэкендам.
  • Добавлены стили светофоров.
  • Добавлены иммерсивные модели деревьев и зданий.
  • Поддержаны новые ветки Московского метро МЦД-3 и МЦД-4.
  • Оптимизированы модели иммерсивных деревьев.
  • Добавлена новая модель для отображения маркера текущего местоположения.
  • Исправлен рендеринг карты - карта зависала при отображении модального окна над MapView.
  • Добавлены MarkerOptions.iconAnimationMode и Marker.iconAnimationMode для возможности задания режима анимации в маркерах. Режим может быть обычным или зацикленным.
  • Оптимизировано и исправлено отображение карты на последних версиях iOS.
  • Исправлена работа метода SimpleClusterObject.setIcon при первом вызове.
  • Исправлена работа кластеризации через MapObjectManager.withClustering, если передать дробные значения minZoom и maxZoom.
  • Обновлен логотип 2GIS в копирайте на снапшотах карты.
  • В NavigationView при отображении полного маршрута отображается только оставшаяся часть маршрута.
  • По умолчанию отключено кэширование тайлов FreeRoam при навигации для уменьшения запросов к бэкендам.
  • Теперь при формировании запроса в справочник через SearchQueryBuilder для определения локали всегда берется первое значение из метода LocaleManager.locales, если не удалось определить локаль по области поиска.
  • Теперь при формировании запроса в справочник через SearchQueryBuilder для определения локали не используется текущая геопозиция пользователя, а берется первое значение из метода LocaleManager.locales, если в SearchQueryBuilder явно не задана область для поиска.
  • Исправлена ошибка, возникающая при обращении к полям SimpleClusterObject при формировании кластера в реализации метода SimpleClusterRenderer.renderCluster.
  • Добавлены два метода SearchQueryBuilder.fromRubricIds и SearchQueryBuilder.fromQueryTextAndRubricIds для создания поисковых запросов с фильтрацией по идентификаторам рубрик.
  • Добавлено новое поле DirectoryObject.tradeLicense с информацией о лицензии организации.
  • Поддержана работа справочника с новым форматом ключей.
  • Исправлено получение snapshot карты методом IMapSnapshotter.makeImage при переходе приложения из состояния background в foreground.
  • Исправлен расчет оставшегося рабочего времени организации в Directory.workStatus при офлайн поиске.
  • Контрол TUGC в режиме FreeRoam доступен только при добавлении RoadEventSource на карту.
  • Поддержана работа справочника с новым форматом ключей.
  • Исправлено получение snapshot карты методом IMapSnapshotter.makeImage при переходе приложения из состояния background в foreground.
  • Появилась возможность задавать исключаемые области при поиске маршрутов через ExcludedArea.
  • В INavigationView добавлено отображение названия организации назначения при Indoor навигации.
  • Исправлена ошибка при двойном тапе в карту и резком изменении масштаба.
  • Исправлено потенциальное падение при добавлении маркера на карту с подписью через Marker.
  • В INavigationView исправлено скрывание контролов карты через 10 секунд в случае, если пользователь не взаимодействует с картой.
  • В INavigationView исправлена кнопка добавления TUGC на карту на панели ETA.

Для всех типов Mobile SDK:

  • Заново выгрузить стили.
  • Методы 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 удален. Enum CameraPositionPointChangeBehaviour также удален. Поле 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 помечен как throws. Так же помечены все остальные методы-фабрики Container.

Дополнительно для полной версии:

  • Изменены названия в ZoomFollowSettings, чтобы лучше соответствовать назначению.
  • Метод Model.applyBetterRoute удален. Вместо него появился метод Model.betterRouteResponse и enum BetterRouteResponse для работы с альтернативными маршрутами.
  • Удалено значение State.freeRoam. Теперь для определения, что навигатор в режиме Free Roam, нужно смотреть на значение RouteInfo.routeBuildOptions - оно должно быть пустым.
  • Добавлена возможность устанавливать Lottie-анимацию у маркера через Marker.icon. В IImageFactory добавлен метод для получения Image c Lottie-данными.
  • Добавлена UI-модель IndoorControlModel для реализации контрола этажных планов IndoorControl.
  • В SearchResult добавлено поле dynamicFilters - динамические фильтры, которые можно дополнительно применить для поисковой выдачи.
  • В DirectoryFilter добавлено поле dynamic для передачи динамических фильтров.
  • Добавлен метод BaseCamera.maxTiltRestriction для задания и получения функции зависимости максимального угла наклона камеры от стилевого zoom-уровня.
  • Добавлена возможность создать MapObjectManager с генерализацией объектов через MapObjectManager.withGeneralization.
  • Добавлен метод Projection.screenToMapClipped, который возвращает ближайшую точку карты к проекции указанной точки экрана.
  • В режиме навигатора теперь отображаются альтернативные маршруты, которые могут быть предложены как маршрут лучше. Model.betterRouteChannel — канал для оповещений о появлении альтернативного маршрута. Model.betterRouteResponse — метод для подтверждения альтернативного маршрута. Маршруты настраиваются с помощью NavigationManager.alternativeRoutesProviderSettings.
  • Добавлен метод Voice.playWelcome для воспроизведения образца голоса в навигаторе.
  • В RoutePointKind добавлено больше типов для идентификации точечных объектов на маршруте.
  • Появилась возможность задавать исключаемые области при поиске маршрутов через ExcludedArea.
  • В INavigationView добавлено отображение названия организации назначения при Indoor навигации.
  • Методы 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 удален. Enum CameraPositionPointChangeBehaviour также удален. Поле 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 помечен, как throws. Также помечены все остальные методы-фабрики Container.
  • Изменены названия в ZoomFollowSettings, чтобы лучше соответствовать назначению.
  • Метод Model.applyBetterRoute удален. Вместо него появился метод Model.betterRouteResponse и enum BetterRouteResponse для работы с альтернативными маршрутами.
  • Удалено значение State.freeRoam. Теперь для определения, что навигатор в режиме Free Roam, нужно смотреть на значение RouteInfo.routeBuildOptions - оно должно быть пустым.
  • Уменьшен размер Full сборки за счет уменьшения зависимости Offline справочника от других модулей.
  • Исправлены утечки памяти при разрушении карты с активным перелётом.
  • Оптимизировали использование одного источника данных DgisSource, добавленного в 2 и более объектов Map.
  • Исправили работу канала Map.dataLoadingStateChannel, который теперь учитывает любую работу с картой (добавление объектов, изменение темы, добавление источников данных и т.д.).
  • В случаях, когда точка позиции камеры расположена ближе к нижнему краю экрана, значение максимального угла наклона камеры может быть уменьшено.
  • Исправлена ошибка при двойном тапе в карту и резком изменении масштаба.
  • Теперь маршрут не будет отображаться на карте в режиме навигации до появления позиции на нем.
  • Исправлен возврат в режим слежения при работе навигатора по умолчанию.
  • В INavigationView исправлено скрывание контролов карты через 10 секунд в случае, если пользователь не взаимодействует с картой.
  • В INavigationView исправлена кнопка добавления TUGC на карту на панели ETA.
  • Добавлена поддержка иконки автобус + знак "Въезд запрещен" в баблах полосности.
  • Установлены цвета для градиента линии неактивного маршрута.
  • Исправили падение, когда в ключе указаны ограничения по регионам, у которых нет офлайн-данных.
  • Исправлено потенциальное падение при вращении карты.
  • Исправлено потенциальное падение при анимации появления маркеров с SVG изображением.
  • В метод DgisSource.setHighlighted теперь можно передавать идентификаторы входов в здание для их выделения/снятия выделения.
  • Исправлено отображение маркеров с SVG изображением.
  • У слоёв Parking lots with unknown price, Parking for persons with disabilities, Parking for residents, Parking for taxi, Free parking и Covered parking поменялся размер иконки.
  • В ночной теме в каталоге POI icons у слоёв Airport, Railway station, Bus terminal и Port поменялся цвет подписи.
  • Изменения для выделенного состояния:
    • Цвета заливки и обводки: каталог Flat buildings.
    • Цвета заливки верхней плоскости, стены и обводки: каталог Building 3D.
    • Иконка: слои Entrances, under buildings, Entrances, over buildings, Small gates, Boom gates, Parking lots with unknown price, Parking for persons with disabilities, Parking for residents, Parking for taxi, Free parking, Covered parking.
    • Иконка: каталоги Sights (кроме слоя Park в ночной теме), POI icons (только в дневной теме), Transport landmarks (только в дневной теме), Public transport stops icons (кроме слоёв Railway station point и Stop point).
    • Размер иконки: каталоги Parking lots bubbles (слои Paid parking, Parking lots with unknown price, Parking for residents, Parking for persons with disabilities, Parking for taxi, Free parking), POI icons (только в ночной теме), Transport landmarks (только в ночной теме), слой Park каталога Sights (только в ночной теме).
    • Иконка и цвет подписи: каталог Metro stations icons (кроме слоёв MCD 1, MCD 2), Metro exits icons (кроме слоёв MCD 1, MCD 2).
    • Размер иконки и цвет подписи: каталог Metro stations icons (слои MCD 1, MCD 2), Metro exits icons (слои MCD 1, MCD 2).
    • Цвет заливки и ширина линии: каталог Roads в дневной теме (кроме Walkways, Intercity, background, Federal, background).
    • Цвет заливки: каталог Roads в ночной теме, каталог Roads в дневной теме (слой Walkways).
  • Добавился слой Entrances, arrows только с выделенным состоянием.
  • Исправлено падение при уничтожении объекта Context.
  • Исправлено падение, когда не удалось закэшировать тайлы карты.
  • В метод calcPosition добавлен параметр size - размер карты.
  • Исправлена ошибка, при которой настройка HTTPOptions.timeout никак не влияла на таймаут запросов через OnlineSearchManager/SmartSearchManager.
  • Удалено появление OpenStreetMap в копирайте.
  • Исправлено падение при навигации в случае, если голосовой инструкции нет в пакете данных.
  • Исправлено определение локали при формировании запросов через OnlineSearchManager.
  • Исправлена проблема, когда после удаления MapView не удалялся объект Map.
  • Исправлено отображение панели ETA в NavigationView при переходе в Indoor режим.
  • Исправлена проблема, при которой после завершения навигации оставался периодический перелет к текущему местоположению, если камера находилась в состоянии покоя.
  • Отказались от использования OpenGL в качестве графического API в пользу Apple Metal по причине нестабильной работы OpenGL на устройствах с процессорами M1 и новее.
  • Добавлена пешая навигация в здании. Включается, когда маршрут построен с учетом этажей (с флагом PedestrianRouteSearchOptions.useIndoor) при входе в здание. UI навигатора меняется - отображается контрол переключения этажей с пометками, через какие этажи проходит маршрут, в нижней панели отображается номер этажа точки назначения. В NavigationManager добавлен IndoorDetector для определения нахождения пользователя в помещении в режиме навигации.
  • Добавлена возможность поиска и отображения пешеходных маршрутов в зданиях с этажными планами.
    • При поиске должно быть включено PedestrianRouteSearchOptions.useIndoor (по умолчанию включено).
    • Маршрут в здании отображается пунктиром на активном этаже, а при включенном RouteMapObjectDisplayFlag.inactiveFloors - на всех этажах.
    • На переходах между этажами отображаются иконки с инструкциями, их видимостью управляет RouteMapObjectDisplayFlag.indoorInstructions.
    • Получить информацию об этажах, через которые проходит маршрут, можно с помощью Route.levels.
  • Добавлен класс BaseCamera для хранения основных настроек камеры. Класс Camera является наследником BaseCamera. В BaseCamera также добавлен метод clone для копирования камеры.
  • Добавлены перегрузки для методов zoomOutToFit и calcPosition, принимающие вместо геометрий массив объектов карты SimpleMapObject.
  • Добавлен метод быстрого получения базовой информации о маршрутах (время в пути, длина и др.) без их построения - TrafficRouter.findBriefRouteInfos.
  • Добавлен поиск проезда на самокатах. Для этого необходимо задать ScooterRouteSearchOptions в TrafficRouter.findRoute.
  • Добавлена информация об уровне высот на маршруте - Route.altitudes.
  • Добавлена информация о запретах перемещения по маршруту - Route.truckRestrictedAreas, Route.vehicleRestrictedAreas.
  • Добавлена возможность "съедать" маршрут с любого конца - RouteMapObject.passedDistanceVisualization.
  • Добавлен метод для одновременного задания нескольких отображаемых маршрутов RouteMapObject.replaceAllObjects.
  • Добавлены настройки отображения баблов на маршруте RouteMapObject.calloutLabelFlags, RouteMapObject.calloutLabelDisplayMode.
  • Появилась возможность не скрывать некоторые элементы маршрута по мере его "съедания" - RouteMapObject.permanentDisplayFlags.
  • Добавлен класс для управления слежением карты за маркером геопозиции в навигаторе - NavigationFollowController.
  • Добавлена возможность получить бабл маршрута через Map.getRenderedObject, возвращаемый объект имеет тип RouteInfoCalloutMapObject.
  • Улучшена работа SmartSearchManager - теперь при любых исключениях в OnlineSearchManager происходит переключение на OfflineSearchManager.
  • В MapGestureViewOptions появился параметр pinchScalingCenter для задания точки на экране, относительно которой происходит масштабирование карты при жесте изменения масштаба.
  • Появилась возможность задавать идентификатор для запросов в WebAPI для On-Premise ключей.
  • Обновлен логотип 2GIS в копирайте на карте.
  • В NavigationViewOptions появился флаг roadEventCreationEnabled для отключения контрола дорожных событий.
  • Поддержка PPI всех моделей iPhone 14 и iPad.
  • В DGis.Container добавлено свойство locationService - реализация протокола ILocationService для получения последнего известного местоположения пользователя.
  • Реализованы методы IMapView.addObjectTappedCallback, IMapView.addObjectLongPressCallback, IMapView.removeObjectTappedCallback, IMapView.removeLongPressCallback для добавления и удаления MapObjectTappedCallback - обработчиков тапа и долгого нажатия на карту.
  • В INavigationViewFactory добавлен метод makeNavigationView с дополнительными параметрами INavigationViewControlsFactory и INavigationMapControlsFactory для переопределения контролов навигатора и контролов карты в навигаторе. Все контролы теперь публичные.
  • В INavigationViewFactory добавлены методы makeNavigationViewControlsFactory и makeNavigationMapControlsFactory для получения фабрик контролов навигатора и контролов карты в навигаторе, соответственно.
  • Изменена сигнатура методов zoomOutToFit и calcPosition. zoomOutToFit теперь принимает только камеру и геометрию. В calcPosition теперь помимо камеры и геометрии можно передать активную область, угол наклона и поворота карты, поэтому теперь необязательно предварительно настраивать камеру для расчета позиции.
  • Удален RoutePosition - избыточный класс, вместо него используется RoutePoint.
  • Удалено Model.cameraProgressChannel, вместо него необходимо использовать класс CameraNotifier.
  • Traffic.durations теперь имеет тип MillisecondsRouteAttribute вместо SecondsRouteLongAttribute и большую точность значений.
  • Route.obstacles теперь имеет тип ObstacleInfoRouteAttribute и помимо типа препятствия содержит дополнительную информацию.
  • Конструктор ZoomFollowController теперь принимает параметром Map.
  • В MapView были удалены методы osmCopyrightAnimationDuration и showOSMCopyright.
  • Увеличена точность отображения оставшегося времени в пути в навигаторе.
  • В случае пустого результата OfflineSearchManager не кидает исключение, а возвращает пустой список.
  • У INavigationView при старте навигатора изменили zoom-уровень камеры, приближенный к основному приложению 2ГИС.
  • В INavigationView исправлена работа контрола ограничения скорости - теперь нулевое ограничение не отображается.
  • После завершения навигации в INavigationView камера возвращается к исходным настройкам.
  • Более корректное вычисление точки расхождения между основным маршрутом и маршрутом лучше.
  • Исправлена работа контрола компаса CompassControl.
  • Исправлено определение локали в поисковых запросах. Теперь регион определяется через область интереса или текущее местоположение пользователя.
  • Добавлена проверка на добавление пользовательских маркеров с пустым изображением.
  • Исправлена проблема, при которой маршрут лучше исчезал вместе с панелью выбора маршрута по истечению таймаута.
  • У пешего маршрута (группа Pedestrian route line) и объектов на маршруте (Point A, Point B, Route joints, Intermediate route points в группе Dynamic objects) добавлена логика отображения на этажах.
  • Добавлены инструкции навигации в здании - группа Indoor instructions.
  • Cлой "Point A" теперь не отображается в режиме навигации.
  • Выключено отображение слоёв "Region border" и "Regions".
  • Установлены цвета для градиента линии неактивного маршрута.
  • Исправлен селектор для платных парковок.
  • Слои "Intermediate route points", "Route joints", "Point A", "Point B" теперь сразу после слоя "Location precision radius".

Для всех типов Mobile SDK:

  • Изменена сигнатура методов zoomOutToFit и calcPosition. zoomOutToFit теперь принимает только камеру и геометрию. В calcPosition теперь помимо камеры и геометрии можно передать активную область, угол наклона и поворота карты, поэтому теперь необязательно предварительно настраивать камеру для расчета позиции.
  • Конструктор ZoomFollowController теперь принимает параметром Map.
  • В MapView были удалены методы osmCopyrightAnimationDuration и showOSMCopyright.

Дополнительно для полной версии:

  • Удален RoutePosition - избыточный класс, вместо него используется RoutePoint.
  • Удалено Model.cameraProgressChannel, вместо него необходимо использовать класс CameraNotifier.
  • Traffic.durations теперь имеет тип MillisecondsRouteAttribute вместо SecondsRouteLongAttribute и большую точность значений.
  • Route.obstacles теперь имеет тип ObstacleInfoRouteAttribute и помимо типа препятствия содержит дополнительную информацию.