Javascript Infowindow仅在Google地图上的一个pin和多个pin上打开

Javascript Infowindow仅在Google地图上的一个pin和多个pin上打开,javascript,google-maps,Javascript,Google Maps,我搜索了类似的问题,但没有发现,如果我漏掉了一个,我道歉 我正在尝试学习创建信息窗口的功能,该窗口显示在最近单击的pin上,并浏览相关信息 问题是,无论我点击哪个pin,infowindow总是出现在同一个pin上(“下面代码中的酷事件5”) 我猜这是标记代码的问题: marker.addListener('click', function() { infowindow.open(map, marker); }); var marker = new google.maps.Marker

我搜索了类似的问题,但没有发现,如果我漏掉了一个,我道歉

我正在尝试学习创建信息窗口的功能,该窗口显示在最近单击的pin上,并浏览相关信息

问题是,无论我点击哪个pin,infowindow总是出现在同一个pin上(“下面代码中的酷事件5”)

我猜这是标记代码的问题:

marker.addListener('click', function() {
  infowindow.open(map, marker);
  });

var marker = new google.maps.Marker({
  position: latlngset,
  map: map,
  title: event
  });
完整代码可在中找到

助教

编辑:我上传了错误版本的JSFIDLE,现在已经修复了编辑:如下:


在onClick函数中,必须指定(客户端)单击了哪个标记

这里有一个方法:

<script>
var markers = [];  // put this global, or at least make sure the variable is accessible to the rest of your code
...
var marker = new google.maps.Marker({
...
});
// now push this marker on the array
markers.push(marker);
... 
marker.addListener('click', function(e) {
  var index = markers.indexOf(this);  // if index = 0 => first marker; ...
  // set content
  infowindow.setContent = locations[index][0] ; // this adds the name of the location, feel free to add more stuff 
  infowindow.open(map, markers[index]);
})
</script>     

变量标记=[];//将此变量设置为全局变量,或者至少确保代码的其余部分可以访问该变量
...
var marker=new google.maps.marker({
...
});
//现在将此标记按到阵列上
标记器。推(标记器);
... 
marker.addListener('click',函数(e){
var index=markers.indexOf(this);//如果index=0=>first marker。。。
//设置内容
infowindow.setContent=locations[index][0];//这会添加位置的名称,请随意添加更多内容
打开(地图,标记[索引]);
})

让我知道它是否有效

伊曼纽尔干杯。我做了你建议的更改,但我仍然有相同的问题:很可能我没有正确地实现它们,因为我是JS新手-将继续修补
<script>
var markers = [];  // put this global, or at least make sure the variable is accessible to the rest of your code
...
var marker = new google.maps.Marker({
...
});
// now push this marker on the array
markers.push(marker);
... 
marker.addListener('click', function(e) {
  var index = markers.indexOf(this);  // if index = 0 => first marker; ...
  // set content
  infowindow.setContent = locations[index][0] ; // this adds the name of the location, feel free to add more stuff 
  infowindow.open(map, markers[index]);
})
</script>