Смещение карты с позиционированием и изменением zoom

На экране отображается карта с добавленными плейсмарками по размерам родительского UIView. Необходимо при нажатии на плейсмарк:

  1. позиционировать его в центре карты
  2. изменить zoom (увеличить карту)
  3. поднять нижнюю шторку bottom sheet
  4. сместить карту на высоту нижней шторки, с учетом того, что плейсмарк должен оставаться в середине карты вне зависимости от высоты самой карты

В данный момент реализовал сначала переход к нужной координате на карте в нужном увеличении, а потом в коллбеке применение офсета для плейсмарка.

let placemarkPoint = YMKPoint(latitude: placemark.latitude, longitude: placemark.longitude)
let zoomPosition = YMKCameraPosition(target: placemarkPoint, zoom: placemark.zoom, azimuth: 0, tilt: 0)

let zoomAnimation = YMKAnimation(type: .smooth, duration: 0.1)
mapView.mapWindow.map.move(with: zoomPosition, animation: zoomAnimation) { _ in
     // вот здесь реализовано смещение с применением оффсета
}

Что хотелось бы: одновременная анимация перехода и смещения, чтобы они не реализовывались друг за другом.

Дополнительно рассматривал реализацию с помощью YMKProjections, но так и не смог правильно его применить для реализации поставленной задачи.


Ответы (0 шт):