鼠标事件从标记传播到底层地图

时间:2012-03-08 16:17:44

标签: google-maps-api-3

我有一个问题, 当我们超过标记时,为什么与地图相关的剂量鼠标事件永远不会激发

进出口。当我们移动到标记上时,永远不会调用添加到地图中的鼠标移动侦听器 (没有所谓的事件传播或冒泡)。

这是在地图v2上正在进行的工作!

这是一个错误,还是在v3中改变了这种行为?

火焰

以下是示例......

如果您在地图上移动,mapLabel会更新 但如果你移动标记,mapLabel永远不会更新

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

  google.maps.event.addListener(map, 'MOUSEMOVE', function() {
    document.getElementByID('moveLabel').innerHtml = 'Mouse map move' + Math.random();
  });

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title:"Hello World!"
  });
google.maps.event.addListener(marker, 'MOUSEOUT', function() {
    document.getElementByID('markerLabel').innerHtml = '';
  });
  google.maps.event.addListener(marker, 'MOUSEOVER', function() {
    document.getElementByID('markerLabel').innerHtml = 'Mouse over marker';
  });
}

1 个答案:

答案 0 :(得分:2)

绘制在7个图层上的所有谷歌地图数据。这些图层称为窗格。根据绘图所属的窗格,它可以接收或不接收事件。有关更多信息,请查看google.maps.MapPanes文档。

更新:Google地图会在7个窗格上绘制所有数据。所有窗格都是同一父母的孩子。对于事件冒泡,必须使元素的关系为parent-child(然后,孩子可以将事件冒泡到父级),而不是sibling-sibling。在sibling-sibling关系中,事件由具有最高z-index的元素接收。这就是您不会将标记窗格中的事件冒泡到地图窗格的原因。