谷歌地图api, addListener外部悬停事件



我试图添加mouseenter/mouseleave事件处理程序,使用谷歌地图打开信息窗口。

我有10个元素,每个元素都有一个相关的Google Maps信息窗口。我为元素添加了一个data-marker属性,以确定哪个元素对应于各自的标记/信息窗口。

我的问题是我没有正确地在参数列表中构造变量。

 ....standard google maps definition above.  double brackets are django context variables within a forloop loop. 
infowindow[{{forloop.counter}}]= new google.maps.InfoWindow({
    content:contentString{{forloop.counter}}
    });

var marker{{forloop.counter}} = new google.maps.Marker({
    position:latlng{{forloop.counter}},
    map:map,
    icon:image,
    animation: google.maps.Animation.DROP,
     title:"Click for more info"
    });

google.maps.event.addListener(marker{{forloop.counter}},'click', function(){
    $.each(infowindow, function(name, value){
        this.close();
    }); 
    infowindow[{{forloop.counter}}].open(map,marker{{forloop.counter}});
});
{% endfor %}    
{% endif %} 

}

$('.entries').mouseenter(function(){
   var num=$(this).attr('data-marker');
   $.each(infowindow, function(name, value){
    this.close();
  });
      var mk='marker'
  m=mk.concat(num);

   infowindow[num].open(map,m);
});
$('.entries').mouseleave(function(){
$.each(infowindow, function(name, value){
    this.close();
});

});

显然,我不能只是将字符串传递给.open()方法并期望它工作。我更惊讶的是,我不能传递变量'num'到数组索引谢谢,布伦丹

在您的代码infowindow[num].open(map,m);中,您有m作为字符串。M需要是一个标记对象。

就像你做infowindows一样创建一个标记数组然后使用infowindow[num].open(map,markers[num]);

最新更新