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 по алгоритму:
- На старте ведения выбирается элемент последовательности с index == 0.
- Во время движение происходит проверка на то, не вышло ли текущее значение скорости за пределы интервала скоростей, указанных в элементе последовательности с индексом index. Если скорость вышла за пределы интервала, то происходит поиск соседнего интервала, в который попадает значение скорости, и запоминается его индекс.
- Происходит проверка, не проезжаем ли мы маневр. Считается, что мы проезжаем маневр, если есть маневр по ходу движения и дистанция до маневра не превышает указанной в 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