谷歌地图标记事件监听器点击

时间:2016-07-18 13:48:58

标签: javascript google-maps

我的谷歌地图标记存在问题。实际上,在我的地图上,我添加了几个带有事件监听器的标记,以便在点击时触发事件,但它们都会缝合以触发相同的功能。

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);
});

}

我有 alert(x),其中x是插入的最后一项的ID。无论我点击什么标记。

有什么想法吗? 谢谢

2 个答案:

答案 0 :(得分:4)

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 :(得分:1)

这是因为你无法像你那样定义标记。创建一个全局数组,并在该数组中插入每个创建标记的实例。

所以: 对于所有标记,定义一个数组以保留每个已创建标记的引用:

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