ru.dgis.sdk.navigation.ZoomFollowSettings | Android SDK | 2GIS Documentation
Android SDK

ZoomFollowSettings

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

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

При отсутствии манёвров впереди и позади, либо на дорогах низкого значения (неглавные улицы населённых пунктов, шоссе, междугородние или федеральные трассы) значение масштаба выбирается на основании значений SpeedRangeToZoom, которые хранятся в последовательности speed_range_to_zoom_sequence. Последовательность speed_range_to_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_zoom_sequence по алгоритму:

  • На старте ведения выбирается элемент последовательности с index == 0.
  • Во время движение происходит проверка, на то, не вышло ли текущее значение скорости за пределы интервала скоростей, указанных в элементе последовательности с индексом index, если скорость вышла за пределы интервала, то происходит поиск соседнего интервала в который попадает значение скорости и запоминается его индекс.
  • Происходит проверка не проезжаем ли мы маневр, считается, что мы проезжаем маневр, если есть маневр по ходу движения и дистанция до маневра не превышает указанной в SpeedRangeToZoom, или мы проехали маневр, но не отдалились от него на дистанцию больше указанной в SpeedRangeToZoom. Если мы проезжаем маневр, то выбирается масштаб, соответствующий элементу последовательности с index == 0; иначе выбирается масштаб, соответствующий элементу index.
  • При приближении к маневру на текущей скорости масштаб будет плавно увеличиваться. Время увеличения зависит от скорости и расстояния до манёвра. При увеличении скорости время анимации увеличивается, при снижении скорости - уменьшается. Увеличение уровня зума завершается на некотором расстоянии до манёвра.

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

    Properties

    Последовательность интервалов скоростей и соответствующих им масштабам. Используется для автоматического изменения масштаба в навигаторе в зависимости от скорости.

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

    Длительность плавного увеличения уровня зума при приближении к манёвру.

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

    Минимальная скорость движения в м/с, при которой длительность плавного изменения уровня зума будет рассчитываться с учётом не только близости к манёвру, но и с учётом текущей скорости. Должна быть не меньше 0.1 м/с, значения меньше будут игнорироваться.

    Коэффициент ускорения анимации увеличения уровня зума при приближении к манёвру. Должен быть не меньше 1, значения меньше будут игнорироваться.

    Расстояние до манёвра, при достижении которого анимация плавного увеличения уровня зума должна быть завершена, чтобы во время манёвра зум не менялся. Например, если до маневра 300 м, то анимация с плавным увеличением уровня зума должна быть завершена за 50 м до начала маневра. Должно быть не меньше 1 м, значения меньше будут игнорироваться.

    Минимальное время анимации. Используется для предотвращения резких изменений уровня зума при анимации. Должно быть не меньше 200, значения меньше будут игнорироваться.