关于javascript:Google地图标记事件监听器点击

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添加到循环中标记的当前引用即可。