2011-07-01 8 views
4

Google Maps V3 APIにInfoboxプラグインを使用しています(http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs/reference .html)地図をクリックするとInfoboxを閉じる

マップ上のようにユーザーがインフォボックスの外をクリックすると、情報があまりにも近くにありますか?

答えて

5
あなたは

http://code.google.com/apis/maps/documentation/javascript/events.html#EventListeners

あなたがコードはここで見つける適応できるのaddListener()を使用したいと思うでしょう

google.maps.event.addListener(_point.popup, 'domready', function() { 
//Have to put this within the domready or else it can't find the div element (it's null until the InfoBox is opened) 

    $(_point.popup.div_).hover(
     function() { 
      //This is called when the mouse enters the element 
     }, 
     function() { 
      //This is called when the mouse leaves the element 
      _point.popup.close(); 
     } 
    ); 
});  

Src: Google Maps API v3 Event mouseover with InfoBox plugin

あなたはこれでマップのクリックを検出することができます:あなたはグローバル変数として、あなたの情報ウィンドウを持っている、または少なくとも一つの変数それを保持している場合、それは実際に道簡単です http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs/reference.html

+0

ページのすべての(10)マーカーにリスナーを追加できますか?または、それぞれ個別に追加する必要がありますか? – Nyxynyxx

+0

上記のコードは.hoverを使用する代わりに.live( 'クリック' ... 編集:ちょうどあなたが地図をクリックしたときにそれがほしいと気づいた、あなたは上記のコードを変更する必要があります – Eddie

+0

マップ内のリスナーをクリックするだけで、infoboxをループしてclose()メソッドを適用するだけです。 – Eddie

0

これ多分便利なあなたのために...

var inside = false; 
$('#foo').live('mouseenter',function(){ 
    inside=true; 
}).live('mouseleave', function(){ 
    inside=false; 
}); 
$("body").mouseup(function(){ 
    if(!inside) $('#foo').remove(); 
}); 
+0

が、私はjQueryのから ')(' .live使用するか、 'google.maps.event.addListenerを(使うべき:-)すべてだあなたはインフォボックス

google.maps.event.addListener(map, 'click', function() { if(infowindow){ infowindow.close(); } }); 

を参照する単一のポイントを意味します) 'GoogleマップAPIから?両方のリスナーは同じですか? – Nyxynyxx

+0

.live()はjqueryのfuncですので、最後のjquery jsファイルをインポートした場合と同じように使用できます。 –

10

google.maps.event.addListener(map, 'click', function() { 

}); 

インフォボックスのAPI便利な場所に追加したい単一の情報ボックスを表します。

編集:だけ明確にする:それはは、例えばwindow.myInfoBoxすべきではありません。グローバルで、私は

関連する問題