1

現在bounds_changed、マーカーオーバーレイをクリアしてから、マップ境界内にマーカーを再作成しているリスナーがいます。

ただし、マーカーがクリックされてマップが移動しても、情報ウィンドウは表示されません。拭き取ったので。clearOverlaysマーカーのクリックが行われたかどうかを検出し、行われた場合は他に何もしないifステートメントを次のように追加するにはどうすればよいですかcreateMarkers

google.maps.event.addListener(map, 'bounds_changed', function() { 
        //alert(map.getBounds()); 
        clearOverlays();
        createMarkers(map, mgr);          
    });

例えば

if(marker.click) {
} else {
    clearOverlays();
    createMarkers(map, mgr);      
}        

最終的な作業コード。

google.maps.event.addListener(map, 'bounds_changed', function() { 
        if(checkevent == false)
        {
            //alert(checkevent);
            clearOverlays();
            createMarkers(map, mgr);          
        }
    }); 

マーカーのリスナーでクリックします

google.maps.event.addListener(marker5, 'click', function() { checkevent = true;  infowindow5.open(map,marker5); setTimeout('checkevent = false', 3000); });
4

1 に答える 1

2

マーカークリックイベントのリスナーがあると仮定して、外部スコープの状態変数をイベントリスナーに設定します。bounds_changedリスナーで、状態変数を確認します。bound_changedリスナーの最後で常に状態変数をリセットします。

于 2012-06-21T17:00:32.073 に答える