Javascript 在Google maps中获取单击的标记并将其发送到函数

Javascript 在Google maps中获取单击的标记并将其发送到函数,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我试着为约旦的城市制作谷歌地图,当标记点击时,它会向用户显示该城市的信息 我的问题是,当我试图获取用户单击的标记时,它总是发送For循环中的最后一个标记来实例化标记并提供信息 for循环将为每个标记提供自己的标题、标签,并为每个标记提供一个事件侦听器 我怎样才能得到点击标记 地理信息系统地图 .background{}p{ 背景色:白色; } 跨度{ 颜色:蓝色; } #页脚{ 宽度:100%; 高度:30px; 位置:相对位置; 左:0px; 底部:0px; } #页脚文字{ 填充:10p

我试着为约旦的城市制作谷歌地图,当标记点击时,它会向用户显示该城市的信息

我的问题是,当我试图获取用户单击的标记时,它总是发送For循环中的最后一个标记来实例化标记并提供信息

for循环将为每个标记提供自己的标题、标签,并为每个标记提供一个事件侦听器

我怎样才能得到点击标记


地理信息系统地图
.background{}p{
背景色:白色;
}
跨度{
颜色:蓝色;
}
#页脚{
宽度:100%;
高度:30px;
位置:相对位置;
左:0px;
底部:0px;
}
#页脚文字{
填充:10px;
颜色:黑色;
背景色:#5B1B14;
}
#固定的{
位置:固定;
顶部:0px;
左:0px;
高度:70像素;
宽度:100%;
z指数:3;
背景色:#5B1B14;
}
#固定的{
宽度:20%;
身高:100%;
保证金:0自动;
}
#固定的{
身高:100%;
}
.段落{
文本对齐:居中;
z指数:1;
字体大小:20px;
宽度:100%;
颜色:红色;
}
/*************************菜单*****************************/
.侧导航{
身高:100%;
宽度:0;
位置:固定;
z指数:1;
排名:0;
左:0px;
背景色:#111;
溢出x:隐藏;
过渡:0.5s;
填充顶部:60px;
}
.侧导航a{
填充:8px 8px 8px 32px;
文字装饰:无;
字体大小:25px;
颜色:#818181;
显示:块;
过渡:0.3s
}
.侧导航a:悬停,
.a:焦点{
颜色:#f1f1;
}
.sidenav.closebtn{
位置:绝对位置;
排名:0;
右:25px;
字体大小:36px;
左边距:50像素;
}
函数openNav(){
document.getElementById(“mySidenav”).style.width=“250px”;
}
函数closeNav(){
document.getElementById(“mySidenav”).style.width=“0”;
}
var映射;
函数initMap(){
map=新建google.maps.map(
document.getElementById('map'){
缩放:7,
中心:新google.maps.LatLng(31.9,35.8),
mapTypeId:'地形'
});
//约旦城市地点
变量位置=[
[31.8354533, 35.9674337],
[31.186446, 35.6248844],
[30.8071736, 35.5228078],
[32.0522945, 35.9935951],
[31.7157524, 35.7633807],
[32.0321557, 35.655972],
[32.3402518, 36.1527321],
[32.2699656, 35.824437],
[32.3415654, 35.7322292],
[32.5525113, 35.81239],
[30.2200923, 35.5467541],
[29.5909744, 35.1750487]
]
变量信息=[
[“安曼”,4.007256],
[“Al_Karak”,316.629],
[“塔菲拉”,96.291],
[“Zarqa”,1.364878],
[“马达巴”,189.192],
[“巴尔卡”,491.709],
[“Mafraq”,549.948],
[“Jerash”,237.059],
[“Ajloun”,176.080],
[“Irbid”,1.770158],
[“马鞍”,144.083],
[“亚喀巴”,188.160]
]
var markers=新数组();
对于(变量i=0;idufault


尝试将侦听器放在函数中,并传递所需的值

  var myFunctinForListener = function(aMarker, aInfoWindow) {
      google.maps.event.addListener(aMarker, 'click', function() {
          openNav();
          //changeText();
          aInfoWindow.open(map, aMarker);
        });
  }



  ....


      for (var i = 0; i < locations.length; i++) {
        var coords = locations[i];
        var latLng = new google.maps.LatLng(coords[0], coords[1]);
        var marker = new google.maps.Marker({
          position: latLng,
          map: map,
          label: info[i][0],
          title: info[i][0]
        });

        var infowindow = new google.maps.InfoWindow({
          content: info[i][1] + ""
        });


        myFunctinForListener(marker, inforwinodow);


    ..... 
var myFunctinForListener=函数(aMarker,aInfoWindow){
google.maps.event.addListener(aMarker,'click',function(){
openNav();
//changeText();
打开(地图,aMarker);
});
}
....
对于(变量i=0;i
您需要将信息窗口与正确的标记相关联。解决方法之一是函数关闭,如类似问题所示:。对于您的代码:

google.maps.event.addListener(marker, 'click', function(marker,i) {
 return function() {
  openNav();
  //changeText();
  // set the infowindow content for this marker (the function has closure on i)
  infowindow.setContent(info[i][1]+"");
  // open the infowindow on this marker (the function has closure on marker)
  infowindow.open(map, marker);
}}(marker,i));

代码片段:

函数openNav(){ document.getElementById(“mySidenav”).style.width=“250px”; } 函数closeNav(){ document.getElementById(“mySidenav”).style.width=“0”; } var映射; 函数initMap(){ map=新建google.maps.map( document.getElementById('map'){ 缩放:7, 中心:新google.maps.LatLng(31.9,35.8), mapTypeId:'地形' }); //约旦城市地点 变量位置=[ [31.8354533, 35.9674337], [31.186446, 35.6248844], [30.8071736, 35.5228078], [32.0522945, 35.9935951], [31.7157524, 35.7633807], [32.0321557, 35.655972], [32.3402518, 36.1527321], [32.2699656, 35.824437], [32.3415654, 35.7322292], [3