用例;點擊標記打開infowindow,點擊地圖關閉它。stopEventPropagation不適用於移動Safari或Chrome開發工具仿真
stopEventPropagation
用於防止標記點擊傳播到地圖(點擊地圖將關閉infowindow),這可以在Chrome中正常工作,但在移動Safari(iphone 5)或chrome本身模擬相同的手機時,事件不會停止(因此信息框未顯示,或立即關閉)。
function stopEventPropagation(e) {
var evt = e ? e : window.event;
evt.cancelBubble = true;
if (evt.stop) evt.stop();
if (evt.stopPropagation) evt.stopPropagation();
if (evt.stopImmediatePropagation) evt.stopImmediatePropagation();
if (evt.preventDefault) evt.preventDefault();
evt.returnValue = false;
}
function initialize() {
var map = new google.maps.Map(document.getElementById('map-canvas'));
var infowindow = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
var point = new google.maps.LatLng(49.277, -123.125);
var RichMarkerDiv='<div style="width:100px; height:100px;border:solid black 1px;">RichMarker</div>';
var marker = new RichMarker({ position: point, map: map, title: 'RichMarker', content: RichMarkerDiv });
google.maps.event.addListener(marker, 'click', function(e) {
stopEventPropagation(e);
infowindow.setContent(this.title);
infowindow.open(map, this);
});
bounds.extend(point);
google.maps.event.addListener(map, 'click', function(event) {
infowindow.close();
});
map.fitBounds(bounds);
}
initialize();
這可以在這裏進行測試:http://jsfiddle.net/hy7rrm28/4/
使用豐富的標記lib中有一個小的改進,以繞過事件的建議在這裏:https://code.google.com/p/google-maps-utility-library-v3/issues/detail?id=280
注:這是工作一個星期左右前,所以它可能與谷歌地圖內的更新或這些瀏覽器(?)中的更新有關。
感謝您詳細的解答,我結束了使用(回當我問的問題)爲包含一個標誌,類似於你在這裏做什麼,但是,正如你所指出的辦法,基本問題似乎沒有解決然而 –