Javascript 在Google maps中获取单击的标记并将其发送到函数
我试着为约旦的城市制作谷歌地图,当标记点击时,它会向用户显示该城市的信息 我的问题是,当我试图获取用户单击的标记时,它总是发送For循环中的最后一个标记来实例化标记并提供信息 for循环将为每个标记提供自己的标题、标签,并为每个标记提供一个事件侦听器 我怎样才能得到点击标记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
地理信息系统地图
.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