Google maps markers event listener click
本问题已经有最佳答案,请猛点这里访问。
我有谷歌地图标记的问题。 实际上,在我的地图上,我添加了几个带有事件监听器的标记,以便在点击时触发事件,但它们都会缝合以触发相同的功能。
1 2 3 4 5 6 7 8 9 10 11 12 | for(var j = 0; j < lat_long.length; j ++) { markers[j] = new google.maps.Marker({ position: latitudeAndLongitudeOne, icon: self.icon, scaledSize: new google.maps.Size(50, 50), map: self.map, title: lat_long[i].name }); google.maps.event.addListener(markers[j], 'click', function() { alert(j); }); |
}
我有警告(x),x是插入的最后一项的id。 无论我点击什么标记。
任何的想法?
谢谢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var markers= []; for(var i = 0; i < lat_long.length; i ++) { var marker = new google.maps.Marker({ position: latitudeAndLongitudeOne, icon: self.icon, scaledSize: new google.maps.Size(50, 50), map: self.map, title: lat_long[i].name }); marker.addListener('click', function() { alert(marker.title); }); markers.push(marker); } |
我不确定,但你可以试试
这是因为您无法像您一样定义标记。 创建一个全局数组,并在该数组中插入每个创建的标记的实例。
所以:
对于所有标记,定义一个数组以保留每个已创建标记的引用:
1 2 3 4 5 6 7 8 9 | var markers = []; //Global Marker Array function printMarker(lat, lng){ var marker = new google.maps.Marker({ position: {lat: lat, lng: lng}, icon: icon, map: map }); markers.push(marker); } |
现在,您只需将clickListener添加到循环中标记的当前引用即可。