Как центрировать маркер карты Google с плавным увеличением (api V3)? - PullRequest
5 голосов
/ 30 ноября 2010

Я использую map.panTo(), чтобы получить плавный переход между маркерами, когда я щелкаю из списка местоположений, но я не вижу похожих методов для увеличения ... Я представляю что-то вроде setZoom(13, 1500) где 1500 - продолжительность ...

какая-нибудь подсказка?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2013

Я обнаружил, что 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.
  • Уменьшить изображение сложнее, потому что окружающие плитки (за пределами области просмотра) не загружены - по умолчанию серый квадрат. У вас может быть дублированная карта с областью просмотра, размер вашей текущей карты, умноженный на коэффициент, который вы уменьшаете - так что если вы уменьшаете масштаб, чтобы ваша карта была вдвое меньше, тогда область просмотра была бы двойной. Затем вы можете поместить видовой экран поверх и установить масштаб на «реальной» карте, переместить скорректированную карту видового экрана и скрыть ее по завершении.
0 голосов
/ 30 ноября 2010

Единственная встроенная функция масштабирования на данный момент - map.setZoom, которая не позволяет вам изменять скорость.

Если вы хотите установить карту на уровень масштабирования на основе набора маркеров, вы можете сделать что-то вроде этого:

var bounds : LatLngBounds = new LatLngBounds(southwestmarker.getLatLng(), northeastmarker.getLatLng()); 
bounds.extend(someMarker.getLatLng());
//some more extend() here
map.setZoom(map.getBoundsZoomLevel(bounds)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...