setCenter () и затем переместить маркер вертикально вверх на холсте карты - PullRequest
3 голосов
/ 04 марта 2012

У меня простой вопрос, и, надеюсь, есть простой ответ. , , Я просто не могу найти его после нескольких часов поиска.

У меня есть стандартная карта Google с кучей маркеров. У меня есть событие щелчка по каждому маркеру, поэтому при нажатии на карту маркер перемещается в центр и приближается к нему. Там нет проблем.

Теперь я хочу изменить обработчик событий, чтобы при нажатии на маркер карта центрировалась так, чтобы маркер был отцентрирован по горизонтали, но вертикально к вершине холста карты. Есть ли относительно прямой способ сделать это, который работает на разных уровнях масштабирования?

Спасибо, Чак

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Вы также можете обойти с помощью getProjection() и fromContainerPixelToLatLon и fromLatLonToContainerPixel, чтобы установить определенную позицию в пределах видимой точки математики.

Оба из них предоставят вам измерения пикселей от элемента <div>, который вы используете в качестве холста карты.

cf fromDivPixel и ToDivPixel, которые дадут вам положение в пикселяхпредмета на бесконечном карте мира.Скажем, ваша карта сфокусирована на Африке, верно?И у тебя есть значок в Нью-Йорке.Использование вариантов *DivPixel* сохранит ваш пин-код в Нью-Йорке, а затем вы сможете перемещаться к нему.Использование *ContainerPixel* переместит ваш пин-код на карту независимо от того, какой широтой / долготой вы его установили.

1 голос
/ 04 марта 2012

Может быть много способов, например,

google.maps.event.addListener(marker, 'click', function() {
          this.getMap().setCenter(this.getPosition());
          this.getMap().panBy(0,(this.getMap().getDiv().offsetHeight/2)+this.anchorPoint.y);
        });

. Он помещает маркер в центр, а затем перемещает карту по вертикали на (mapHeight/2-markerHeight)

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...