0

APIv3にRedfinの高速マーカーオーバーレイを使用しています。

ここで利用可能なクリック可能な例をとると、

https://code.google.com/p/multimarker/source/browse/trunk/fast-marker-overlay/maps-v3/example/clickable.html?r=22

このようにinitialize()関数にクリックリスナーを追加します。

function initialize() {
  var latlng = new google.maps.LatLng(37.4419, -122.1419);
  var myOptions = {
    zoom: 4,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = window.map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

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

また、addInfoWindow呼び出しの後にreturn falseを追加してマーカーテンプレートを変更すると、

var marker = new com.redfin.FastMarker(/*id*/i, latlng, ["<div class='marker' onclick='addInfoWindow(", i,"); return false;'>&nbsp;</div>"], null);

これをChromeで実行すると、期待どおりに機能します。addInfoWindowが呼び出され、infowindowがポップアップし、return falseがヒットし、他に何も起こりません。ただし、FirefoxとIEでは、戻り値falseは無視されているようで、マップクリックイベントが発生して「マップクリック」を警告します。

私の実際のアプリケーションでは、mapsclickイベントがinfowindowcloseイベントを発生させます。したがって、Chromeで情報ウィンドウが表示されたら、マップをクリックして閉じます。Firefox / IEでは、マーカーをクリックすると、情報ウィンドウが作成されますが、マップクリックが実行され、すぐに閉じられます。

誰かが問題を見ることができますか?ChromeはFirefoxのバグをスキップしていて、IEは気に入らないのです。

4

1 に答える 1

1

これをonclick-attributeの先頭に追加します。

try{event.stopPropagation();}catch(e){event.cancelBubble=true;}
于 2012-12-19T08:28:31.813 に答える