Я обнаружил, что map.setZoom
сгладит переход, если уровень масштабирования находится в пределах 2 от текущего уровня масштабирования.
Так что, если для карты установлено масштабирование 10, а я установил его на 12, оно перейдет. Однако, если я установлю его на 13, это не так.
Также вы можете установить масштаб не целого числа, но плитки карты не будут загружаться и заявить: «Извините, у нас нет изображений».
Вы можете попробовать связать зумы, но я облегчаю их вход / выход, чтобы это выглядело вяло.
Если переход больше 2 и важно быть плавным, вы можете вручную отредактировать матричное преобразование на одном из элементов DOM карты. Похоже, -webkit-transform: matrix(1, 0, 0, 1, -62, 71);
. Изменение 1-го и 4-го чисел повлияет на шкалу, первое - это шкала x, а 4-е - шкала y.
Матрица похожа на transform: matrix(xs, 0, 0, ys, xt, yt);
, где xs
и ys
- шкала, установка ее в 2 приведет к увеличению на 200%. Эта матрица принимает дробные значения, так что вы можете увеличить до 1.1 и т. Д. Затем вы можете map.setZoom()
до своего окончательного числа в конце перехода.
У этого есть некоторые предостережения, поскольку это не предназначение:
- Панорамирование или масштабирование при переходе может нарушить преобразование матрицы, сбросив его на собственные методы Google.
- Уменьшить изображение сложнее, потому что окружающие плитки (за пределами области просмотра) не загружены - по умолчанию серый квадрат. У вас может быть дублированная карта с областью просмотра, размер вашей текущей карты, умноженный на коэффициент, который вы уменьшаете - так что если вы уменьшаете масштаб, чтобы ваша карта была вдвое меньше, тогда область просмотра была бы двойной. Затем вы можете поместить видовой экран поверх и установить масштаб на «реальной» карте, переместить скорректированную карту видового экрана и скрыть ее по завершении.