6

マップ上に2つのイベントをバインドするマーカーがあります。

  1. クリック
  2. dblclick

私は次のことをしたい:

  1. ユーザーがマーカーをクリックすると、地図が拡大され、より詳細な地図が表示されます。
  2. 'dblclick'イベントを同じマーカーにバインドして、隣接する'div'要素にサードパーティのレポートをロードしたいと思います。

つまり、ユーザーがクリックしたときとdblclickしたときの動作が異なるようにしたいのです。しかし、問題は、これらのイベントの両方をマーカーにバインドし、ユーザーがマーカーを「ダブルクリック」すると、「クリック」ハンドラーが起動されることです。これを発生させたくありません。

ユーザーがダブルクリックすると、クリックイベントも発生するというのは本当ですか?もしそうなら、ユーザーが実際にダブルクリックしたときに「クリック」イベントがトリガーされないようにするにはどうすればよいですか?マーカーのクリックイベントとダブルクリックイベントのどちらかで異なることを実行できる方法はありますか?

4

2 に答える 2

4

これは、API の既知のニュアンスです。次のように、クリック カウンターのタイムアウトをインストールする必要があります。

function createMap2() {
  var infoWindow = new google.maps.InfoWindow();
  var map = new google.maps.Map(document.getElementById("map2"), myOptions); 

  var doubleClicked=false;
  var clickEvent;

  google.maps.event.addListener(map, 'dblclick', function(event) { 
    doubleClicked=true;
  }); 

  function handleClick() {
    if (!doubleClicked) {
      infoWindow.setPosition(clickEvent.latLng);
      infoWindow.setContent(createInfo(clickEvent));
      infoWindow.open(map);
    }
  }

  google.maps.event.addListener(map, 'click', function(event) { 
    clickEvent = event;
    doubleClicked = false;
    window.setTimeout(handleClick, 250);
  }); 
}

http://www.william-map.com/20100506/1/v3click.htmから抽出した上記のコード

詳細については、次のリンクを参照してください。

https://groups.google.com/forum/?fromgroups=#!topic/google-maps-js-api-v3/YRAvYHngeNk https://groups.google.com/forum/?fromgroups=#!topic/google -maps-js-api-v3/2MomDiLMEiw

于 2012-12-13T12:49:27.973 に答える