Как анимировать изменение focusRect или focusPoint в Yandex map kit
Проблема следующая: нужно приподнимать карту с cameraPosition по центру чуть выше при выдвижении шторки снизу как это сделано в Яндекс GO. Пробовал привязывать низ view с картой к верху этой шторки констрэйнтами. По идее работает, но сама анимация изменения констрэйнтов имеет такой эффект: снизу и сверху карт проскакивает задний фон и сама карта дергается. Видимо, карта рендерится с некоторыми лагами. Как вариант я сделал изменение focusRect или focusPoint у mapWindow. Но эти изменения происходят моментально и их не получается анимировать. В Яндекс Go при выдвигании шторки снизу карта чуть смещается вверх вместе с пином. Это происходит плавно и анимируется. Пока такого добиться не получается. Кто знает как решить проблему?
Ответы (2 шт):
Вообще использование focusRect тут кажется более логичным, чем работа с блоками.
Только встроенного анимированного изменения focusRect нет, такую анимацию нужно реализовать самостоятельно. Готового примера анимации не встречал, вот лишь общий подход, описанный знающими людьми (не моё):
"Выставить FocusRect в итоговое состояние, вычислить итоговое положение камеры, затем вернуть исходное состояние FocusRect и начать его анимировать до итогового."
Вообщем, сделал так: при поднятии шторки снизу смещаем карту на ту дельту по высоте, где должно быть в итоге cameraPosition. Смещаем анимированно. При этом в completion блоке меняем focusRect у mapWindow и делаем смещение карты на эту дельту, но НЕ анимированно. В итоге получаем плавную анимацию. Если нужно перенести пин вместе с этим - устанавливаем frame пина в listener перемещения карты.