google maps api如何在addListener中获取标记的[i]

时间:2014-01-30 23:51:18

标签: javascript google-maps-api-3

我想在标记点击

上突出显示侧边栏
google.maps.event.addListener(markers[i], "click", function() {  
    var viewListLink="trID"+i;
    document.getElementById(viewListLink).style.background="#ff0099";
}

TR的id =“trID”+ i

控制台总是给我最后一个trID20。

如何为每个标记获取i?

类似的东西:

this.get

但是如何?

修改

打开InfoWindow的标记点击不起作用:getDetails(placesArr [i],i);

places.search(search,function(placesArr,status,pagination){
    (function(i) {
        google.maps.event.addListener(markers[i],"click",function(){
        getDetails(placesArr[i],i);
            var viewListLink = "trID"+i;
            document.getElementById(viewListLink).style.background = "#ff0099";
        });
    })(i);
});

我试图将placesArr [i]传回匿名函数

(function(placesArr,i) {

但它不起作用,

(function(placesArr,i) {

这两个

这是getDetails函数:

  function getDetails(place,i){
    return function(){
      places.getDetails({
          reference:place.reference
      },showInfoWindow(i));
    }
  }

这里是showInfoWindow函数:

function showInfoWindow(i){
    return function(place,status){
      if(!!iw && iw._iwId == i){
        iw.close();
        iw = null;
      }else{
        if(iw){
          iw.close();
          iw = null;
        }
      if (status == google.maps.places.PlacesServiceStatus.OK){
        iw=new google.maps.InfoWindow({
          content:getIWContent(place),
          _iwId:i
        });

        if (place.reviews && place['reviews'].length){
            showReviews(place.reviews);
        }else{
            document.getElementById('theReviews').innerHTML = 'no reviews';
            toggle_off('reviewsPanel');
            toggle_off('theReviews');
    }
        iw.open(map,markers[i]);
        // showReviews(place.reviews);
      }
    }
  }
}

2 个答案:

答案 0 :(得分:1)

我假设您遇到变量范围问题,为了解决这个问题,您可能需要用以下代码替换代码:

( function( i ) {
    google.maps.event.addListener(markers[i], "click", function() {  
        var viewListLink="trID"+i;
        document.getElementById(viewListLink).style.background="#ff0099";
    });
})( i );

答案 1 :(得分:1)

一切都与范围有关。

(function(i) {
    google.maps.event.addListener(markers[i],"click",function() {
        var viewListLink = "trID"+i;
        document.getElementById(viewListLink).style.background = "#f09";
    });
})(i);