ZoomFollowSettings class

Интерфейс, позволяющий управлять настройками масштабирования карты во время ведения.

Во время ведения масштаб зависит от скорости движения, от наличия манёвров впереди и позади на маршруте и от типа дороги.

При отсутствии манёвров впереди и позади, либо на дорогах низкого значения (неглавные улицы населённых пунктов, шоссе, междугородние или федеральные трассы) значение масштаба выбирается на основании значений SpeedRangeToStyleZoom, которые хранятся в последовательности speed_range_to_style_zoom_sequence. Последовательность speed_range_to_style_zoom_sequence должна содержать интервалы скоростей, отсортированные по возрастанию значений min_speed, при этом должны выполняться условия: max_speedi > min_speedi + 1 & & max_speedi < = min_speedi + 2 & & max_speedi < max_speedi + 1. То есть интервалы скоростей должны соприкасаться или даже пересекаться, но значение скорости не должно попадать более чем в два интервала. При этом минимальное значение скорости не считается попадающим в интервал, т.е. одно и то же значение скорости может находиться быть максимальной скоростью для одного интервала, минимальной скоростью для другого и находиться внутри интервала для третьего интервала. Исключение - первый интервал скоростей, который должен содержать значение min_speed == 0.

Масштаб карты выбирается из последовательности speed_range_to_style_zoom_sequence по алгоритму:

  1. На старте ведения выбирается элемент последовательности с index == 0.
  2. Во время движение происходит проверка на то, не вышло ли текущее значение скорости за пределы интервала скоростей, указанных в элементе последовательности с индексом index. Если скорость вышла за пределы интервала, то происходит поиск соседнего интервала, в который попадает значение скорости, и запоминается его индекс.
  3. Происходит проверка, не проезжаем ли мы маневр. Считается, что мы проезжаем маневр, если есть маневр по ходу движения и дистанция до маневра не превышает указанной в SpeedRangeToStyleZoom, или мы проехали маневр, но не отдалились от него на дистанцию больше указанной в SpeedRangeToStyleZoom. Если мы проезжаем маневр, то выбирается масштаб, соответствующий элементу последовательности с index == 0, иначе выбирается масштаб, соответствующий элементу index.

При приближении к маневру на текущей скорости масштаб будет плавно увеличиваться. Время увеличения зависит от скорости и расстояния до манёвра. При увеличении скорости время анимации увеличивается, при снижении скорости - уменьшается. Увеличение уровня зума завершается на некотором расстоянии до манёвра.

После проезда манёвра уровень зума плавно уменьшается.

Implemented types

Properties

distanceGapToManeuver RouteDistance
Расстояние до манёвра, при достижении которого анимация плавного увеличения уровня зума должна быть завершена, чтобы во время манёвра зум не менялся. Например, если до маневра 300 м, то анимация с плавным увеличением уровня зума должна быть завершена за 50 м до начала маневра. Должно быть не меньше 1 м, значения меньше будут игнорироваться.
getter/setter pair
hashCode int
The hash code for this object.
no setteroverride
minAnimationDuration Duration
Минимальное время анимации. Используется для предотвращения резких изменений уровня зума при анимации. Должно быть не меньше 200, значения меньше будут игнорироваться.
getter/setter pair
minSpeedToConsiderInZoomInBeforeManeuverAnimation double
Минимальная скорость движения в м/с, при которой длительность плавного изменения уровня зума будет рассчитываться с учётом не только близости к манёвру, но и с учётом текущей скорости. Должна быть не меньше 0.1 м/с, значения меньше будут игнорироваться.
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
speedRangeToStyleZoomFreeRoamSequence List<SpeedRangeToStyleZoom>
Последовательность интервалов скоростей и соответствующих им масштабов при ведении в режиме FreeRoam. Используется для автоматического изменения масштаба в навигаторе в зависимости от скорости.
getter/setter pair
speedRangeToStyleZoomSequence List<SpeedRangeToStyleZoom>
Последовательность интервалов скоростей и соответствующих им масштабов. Используется для автоматического изменения масштаба в навигаторе в зависимости от скорости.
getter/setter pair
styleZoomSpeedRangesAnimationDuration Duration
Длительность плавного изменения масштаба в режиме ведения при изменении скорости при отсутствии манёвров впереди/позади на достаточно близком расстоянии, либо на дорогах низкого значения.
getter/setter pair
zoomInBeforeManeuverAnimationAcceleration double
Коэффициент ускорения анимации увеличения уровня зума при приближении к манёвру. Должен быть не меньше 1, значения меньше будут игнорироваться.
getter/setter pair
zoomInBeforeManeuverAnimationDuration Duration
Длительность плавного увеличения уровня зума при приближении к манёвру. Используется только если скорость ниже, чем в get_min_speed_to_consider_in_zoom_in_before_maneuver_animation.
getter/setter pair
zoomOutAfterManeuverAnimationDuration Duration
Длительность плавного уменьшения уровня масштабирования после проезда манёвра.
getter/setter pair

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
override