0

その上に地図と複数のマーカーがあります。clickアニメーションを使用して、マップ上に表示されているもの (凡例、タイムラインなど) が消えるように、マップ コンテナーにイベントを既にアタッチしています。

私の問題は、マーカーをクリックして を表示すると、マップ上infoWindowのイベントもトリガーclickされ、マップ上のレイヤーオブジェクト上で消えることです。そのため、マーカーをクリックすると、マップコンテナーが既に割り当てられているイベントを防止したいので、infoWindow のみが表示され、他には何も表示されません。

マップクリックイベントは次のとおりです。

$('#map_canvas').bind('mousedown', function() { ...

マーカーで確認できる唯一のことは、それらがすべて同じクラスであることです。gmnoprint

私はすでにこれをテストしました:

$('#map_canvas').not('.gmnoprint').bind('mousedown', function() { ...

と:

$('#map_canvas').bind('mousedown', function() {

    if ($(this).is('.gmnoprint'))
        return false;
....

しかし、どれも機能しませんでした。誰でも問題を解決する方法を知っていますか?

前もって感謝します!

4

4 に答える 4

1

あなたの問題は

$('#map_canvas').bind(...

これらのマーカー/情報ウィンドウはその map_canvas div にあるため、技術的にはクリックします

于 2012-10-06T09:31:45.497 に答える
1

マップの要素とやり取りするときに最も信頼できるので、Google Maps API イベント リスナーを使用しようと思います。

https://developers.google.com/maps/documentation/javascript/events https://developers.google.com/maps/documentation/javascript/overlays#InfoWindows

これは、クリックをバインドしてマーカーに関連付けられた情報ウィンドウを開くための gmaps API の基本的な構文です。

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

うまくいけば、それは役に立ちます!

于 2012-10-06T07:43:46.907 に答える
1

をキャッチしてから、infoWindowの関数がある場所でevent呼び出す必要があります。event.preventDefault.click

于 2012-10-06T07:44:19.323 に答える
1

あなたはそのようなことをすることができます

    <div id="map_canvas" class="foo"></div>


$("#map_canvas").hasClass("foo").click(function(){

 $(this).removeClass("foo")
})
于 2012-10-06T07:45:05.507 に答える