Как привязать обработчик событий к событию click по умолчанию PanControl API Карт Google V3? - PullRequest
5 голосов
/ 28 февраля 2012

На этой странице описан набор элементов управления по умолчанию для Google Maps V3 API: http://code.google.com/apis/maps/documentation/javascript/controls.html#DefaultUI

Мне интересно принять событие нажатия PanControl и связать его с моей пользовательской функцией.

Например,когда пользователь щелкает по элементу управления пользовательским интерфейсом Pan Left (Up / Right / Down), изменяется не только область просмотра карты, но и функция A .

Как я представляю, один из способов сделать этоэто, будет ли прослушивать событие нажатия карты и проверять его цель?

Любые предложения / примеры (особенно полезно) о том, как это можно сделать?

1 Ответ

1 голос
/ 28 февраля 2012

Ваше предположение (прослушать событие нажатия Карты и проверить его цель) звучит правильно, так как нет реализации для доступа к элементам управления.

Это работает для меня (сейчас):

google.maps.event.addDomListener(map.getDiv(),'click', 
             function(e) 
             {
                var t=e.target,
                    a=[null,'left','right','up','down'];

                if(
                    t.parentNode.parentNode.hasAttribute('controlwidth')
                      &&
                    t.parentNode.childNodes.length==5
                      &&
                    t.parentNode.firstChild.tagName=='IMG'
                      &&
                    t.parentNode.firstChild.src
                         =="http://maps.gstatic.com/mapfiles/mapcontrols3d7.png"
                  )
                  {
                    for(var i=1;i<t.parentNode.childNodes.length;++i)
                    {
                      if(t.parentNode.childNodes[i]==t)
                      {
                        alert('You\'ve clicked on \n>>>'+a[i]+
                              '\nyou may call a function now.');
                      }
                    }
                  }
             });

http://jsfiddle.net/doktormolle/fwgMy/

Но это работает только до тех пор, пока Google не изменит разметку, а это может произойти завтра.

Лучше было бы спрятать панель управления и создать свой собственный элемент управления.

...