叠加层上的gmap.js MouseOver事件?可能吗?

时间:2014-07-08 21:32:47

标签: jquery google-maps mouseover

我正在使用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>"
  });

});

任何人都可以帮忙吗?任何建议表示赞赏。谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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");
  });
});