Google将api,addListener映射到外部悬停事件

时间:2011-04-08 22:42:12

标签: javascript jquery google-maps

我正在尝试添加使用Google Map打开infowindows的mouseenter / mouseleave事件处理程序。

我有十个元素,每个元素都有一个关联的Google Maps infowindow。我已经为我的元素添加了数据标记属性,以确定哪个元素与相应的标记/ infowindows相对应。

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

 ....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'传递给数组索引 谢谢, 布伦丹

1 个答案:

答案 0 :(得分:1)

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

只需像使用infowindows一样构建一系列标记并使用infowindow[num].open(map,markers[num]);