2012-02-28 13 views
5

このページでは、GoogleマップV3 APIのデフォルトコントロールセットについて説明します。http://code.google.com/apis/maps/documentation/javascript/controls.html#DefaultUIイベントハンドラをGoogle Maps V3 APIのデフォルトのPanControlのクリックイベントにバインドするにはどうすればよいですか?

私はPanControlのクリックイベントを引き継ぐことに興味を持っていますし、私のカスタム関数にバインドします。

たとえば、左(上/右/下)UIコントロールをクリックすると、マップのビューポートが変更されるだけでなく、機能Aが呼び出されます。

私が想像しているように、これを行う方法の1つは、マップのクリックイベントを聞いてターゲットを確認することでしょうか?

提案/ (これはどのように行うことができますか?)

答えて

1

コントロールにアクセスするための実装がないため、あなたの前提(マップのクリックイベントを聴いてターゲットを確認する)が正しいと思います。

これは(今)私の作品:

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は、マークアップを変更します、これは明日かもしれまでそれだけで動作します。

より良いアプローチは、パンコントロールを非表示にして、独自のコントロールを作成することです。

関連する問題