Javascript Infowindow赢得';单击时不会弹出

Javascript Infowindow赢得';单击时不会弹出,javascript,google-maps,Javascript,Google Maps,我正在尝试获取标记的信息窗口,我已设置为具有动态内容,但我一直遇到的问题是,单击时信息窗口将根本无法打开 我相信我可能以错误的方式实现了代码信息窗口 代码 var mosqueMarker, count; for (count = 0; count < mosqueLocations.length; count++){ mosqueMarker = new google.maps.Marker({ position: new google.maps.LatLng

我正在尝试获取标记的信息窗口,我已设置为具有动态内容,但我一直遇到的问题是,单击时信息窗口将根本无法打开

我相信我可能以错误的方式实现了代码信息窗口

代码


var mosqueMarker, count;

for (count = 0; count < mosqueLocations.length; count++){
      mosqueMarker = new google.maps.Marker({
      position: new google.maps.LatLng(mosqueLocations[count][1], mosqueLocations[count][2]),
      title: mosqueLocations[count][0],
      map: map
   })
}

 var mosqueInfowindow = new google.maps.InfoWindow({})

     mosqueMarker.addListener('click', function(count) {
           mosqueInfowindow.setContent(mosqueLocations[count][0]),
           console.log(mosqueLocations)
           mosqueInfowindow.open(map, mosqueMarker)


     })

var mosqueMarker,计数;
对于(计数=0;计数
您需要(至少)改变三件事:

  • mosqueMarker
    事件侦听器移动到循环中
  • 获取循环中
    count
    变量的函数闭包
  • 使用
    this
    引用侦听器函数中的标记(否则它将始终打开循环中最后一个标记的信息窗口)

  • 您仅将单击事件处理程序添加到最后一个标记。可能的副本:
      for (var count = 0; count < mosqueLocations.length; count++) {
        var mosqueMarker = new google.maps.Marker({
          position: new google.maps.LatLng(mosqueLocations[count][1], mosqueLocations[count][2]),
          title: mosqueLocations[count][0],
          map: map
        });
        mosqueMarker.addListener('click', (function(count) {
        return function(evt) {
          mosqueInfowindow.setContent(mosqueLocations[count][0]),
            console.log(mosqueLocations)
          mosqueInfowindow.open(map, this)
          }})(count))
      }