【问题标题】:gmap.js MouseOver event on an overlay? Is it possible?覆盖层上的gmap.js MouseOver事件?是否可以?
【发布时间】:2014-07-08 21:32:47
【问题描述】:

我正在使用gmap.js,我正在尝试在我创建的覆盖标记上创建鼠标悬停事件。

这是一个 jsFiddle --> http://jsfiddle.net/LXv87/

查看documentation - 这是我能想到的尝试创建 mouseOver 事件但它不起作用的最合乎逻辑的方式:

var map;
$(document).ready(function(){
  map = new GMaps({
    el: '#map',
    lat: 29.425967,
    lng: -98.486142,
    zoom:12,
    zoomControl : true,
    zoomControlOpt: {
        style : 'SMALL',
        position: 'TOP_LEFT'
    },
    panControl : false,
    streetViewControl : false,
    mapTypeControl: false,
    overviewMapControl: false
  });

  map.drawOverlay({
    lat: 29.425967,
    lng: -98.486142,
    events: {
      mouseover:function() {
        alert("The Alamo");
      }
    },
    content: "<div class='masterpin bounce'></div><div class='pulse'></div>"
  });

});

谁能帮忙??任何建议表示赞赏。谢谢!

.

【问题讨论】:

  • 你为什么不向包含该叠加层的 div 添加一个? fiddle
  • 谢谢!将此作为答案,我将奖励它

标签: jquery google-maps mouseover


【解决方案1】:

一种选择是将 onmouseover 和 onmouseout 函数添加到包含叠加层的 div 中:

var map;
var infowindow = new google.maps.InfoWindow();

function mouseover() {
    infowindow.setContent("Mouse");
    infowindow.setPosition(new google.maps.LatLng(29.425967,-98.486142));
    infowindow.setOptions({pixelOffset:new google.maps.Size(-14,-16)});
    infowindow.open(map);
};
function mouseout() {
    infowindow.close();
};
$(document).ready(function () {
    map = new GMaps({
        el: '#map',
        lat: 29.425967,
        lng: -98.486142,
        zoom: 12,
        zoomControl: true,
        zoomControlOpt: {
            style: 'SMALL',
            position: 'TOP_LEFT'
        },
        panControl: false,
        streetViewControl: false,
        mapTypeControl: false,
        overviewMapControl: false
    });

    map.drawOverlay({
        lat: 29.425967,
        lng: -98.486142
        },
        content: "<div class='masterpin bounce' onmouseover='mouseover();' onmouseout='mouseout();'></div><div class='pulse'></div>"
    });

});

Working fiddle

【讨论】:

    【解决方案2】:

    您可以在叠加层的就绪事件触发时将侦听器添加到元素,而不是像其他答案建议那样创建全局函数。

    var overlay = map.drawOverlay({
      lat: 29.425967,
      lng: -98.486142,
      layer: 'overlayMouseTarget',
      content: '<div>my overlay</div>'
    });
    
    overlay.addListener('ready', function () {
      overlay.el.addEventListener('mouseover', function (e) {
        console.log("mouseover");
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 2018-08-04
      • 1970-01-01
      • 2011-06-13
      • 2013-10-27
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多