1

可能重复:
使用 Google Maps API v3 循环标记问题

我有一个循环,我从数组元素中提取一些数据,然后为每次迭代添加一个事件侦听器。但是我需要将这些值传递给每个关联的侦听器,但我最终在侦听器中只有最后一个数组项值。我试图从“这个”中理解,但该解决方案似乎不适合我的情况,我很困惑。这是我拥有的代码:

for(var i=0;i<route.length;i++)
{
  var input= route[i];
  var sdata= input.split("@",19)
  //Some code
  google.maps.event.addListener(marker,'click',showiwindow);
}

function showiwindow(event)
{
  var input= event.latLng;
  //some code 
  ...
  document.getElementById('<%= lbl1.ClientID %>').innerHTML = sdata[1];
  document.getElementById('<%= lbl2.ClientID %>').innerHTML = sdata[2];
  document.getElementById('<%= lbl3.ClientID %>').innerHTML = sdata[3];
  document.getElementById('<%= lbl4.ClientID %>').innerHTML = sdata[4];     
  ......
}    

当我点击一个标记时,我只会得到最后一次迭代的值。回到那个链接中的解决方案,我如何将数组与迭代值一起传递给i. 请参考我的意思的链接。

4

2 回答 2

4

这样的事情怎么样?

for(var i=0;i<route.length;i++)
{
  var input= route[i];
  var sdata= input.split("@",19)
  //Some code
  showiwindow(sdata);
}

function showiwindow(sdata)
{
  google.maps.event.addListener(marker,'click', function(event) {
    var input= event.latLng;
    //some code 
    ...
    document.getElementById('<%= lbl1.ClientID %>').innerHTML = sdata[1];
    document.getElementById('<%= lbl2.ClientID %>').innerHTML = sdata[2];
    document.getElementById('<%= lbl3.ClientID %>').innerHTML = sdata[3];
    document.getElementById('<%= lbl4.ClientID %>').innerHTML = sdata[4];     
    ......
  });
}    
于 2012-09-24T11:58:13.000 回答
0

感谢大家提供的各种链接。终于对如何处理有了清晰的认识:

for(var i=0;i<route.length;i++)
{
  var input= route[i];
  var sdata= input.split("@",19)
  //Some code
  google.maps.event.addListener(marker,'click',showiwindow(sdata));
}

function showiwindow(rdata)
{
  return function(){
  .....//some code
  document.getElementById('<%= lbl4.ClientID %>').innerHTML =rdata[4];
  .....
  };
}
于 2012-09-24T12:02:54.953 回答