添加点击谷歌地图api v3

时间:2013-09-11 21:48:05

标签: javascript jquery google-maps

我有一个包含7个标记点的数组,我想为每个标记添加一个点击处理程序。我想这样做

for (var i = 0; i <= 7; i++) {
     google.maps.event.addListener(googleMarkerPoints[i], 'click', function () {
     var selector = "div[data-num='" + i + "']";
     $(selector).css({ "background-color": "#999" });
  });
}

googleMarkerPoints就像这样填充:

for (var i = 0; i < data.length; i++) {
      var obj = data[i];
      var latitude = obj.Latitude;
      var longitude = obj.Longitude;
      var title = obj.Title;
      var thisLatlng = new google.maps.LatLng(latitude, longitude);
      var thismarker = new google.maps.Marker({
            position: thisLatlng,
            map: map,
            title: title
          });
      googleMarkerPoints.push(thismarker);
}

我的问题是每次点击处理程序selector中的任何标记都会被填充   "div[data-num='7']"

我希望每个标记1到7的data-num会有所不同,为什么这些点击处理程序不能正常工作?

1 个答案:

答案 0 :(得分:1)

您正在关闭i,因此您只能获得所有活动的一个值。尝试将i值传递给您的匿名函数,如下所示:

for (var i = 0; i <= 7; i++) {
 (function(i){
  google.maps.event.addListener(googleMarkerPoints[i], 'click', function () {
   var selector = "div[data-num='" + i + "']";
   $(selector).css({ "background-color": "#999" });
  });
 })(i)
}