Javascript 映射未将单击事件处理程序添加到标记

Javascript 映射未将单击事件处理程序添加到标记,javascript,google-maps,google-maps-api-2,Javascript,Google Maps,Google Maps Api 2,下面的代码将为我的地图添加标记。但是addlistener事件从未添加到每个标记中 var mapDiv = document.getElementById("google-map"); var infowindow = new google.maps.InfoWindow({ content: 'test' }); var map = new google.maps.Map(mapDiv); map.setCenter(new GLat

下面的代码将为我的地图添加标记。但是addlistener事件从未添加到每个标记中

    var mapDiv = document.getElementById("google-map");
    var infowindow = new google.maps.InfoWindow({
        content: 'test'
    });

    var map = new google.maps.Map(mapDiv);
    map.setCenter(new GLatLng(53.635784, 6.943359));
    map.setZoom(5);

    for (var i = 0; i < data.length; i++) {
        var dataMarker = data[i];
        var marker = new GLatLng(dataMarker.Latitude, dataMarker.Longitude);
        map.addOverlay(new google.maps.Marker(marker, {
            title: dataMarker.Name,
            html: dataMarker.HtmlAttributes[0]
        }));
        google.maps.event.addListener(marker, 'click', function () {                
            infoWindow.setContent(this.html);
            infoWindow.open(map, this);
        });            
    }
var-mapDiv=document.getElementById(“谷歌地图”);
var infowindow=new google.maps.infowindow({
内容:“测试”
});
var map=newgoogle.maps.map(mapDiv);
地图设置中心(新格拉特林(53.635784,6.943359));
map.setZoom(5);
对于(变量i=0;i
我做错了什么


哦,我正在使用Maps v2。

您创建的事件侦听器很可能与最后一个标记相连接

您必须在单独的功能中将信息窗口与标记链接。代码的最后一部分应编写为:

    addEventListener(marker, infoWindow, map);
}

function addEventListener(marker, infoWindow, map) {
    google.maps.event.addListener(marker, 'click', function () {                
        infoWindow.setContent(marker.html);
        infoWindow.open(map, marker);
    });            
}

另请参见并链接有关闭包的说明。

该代码段中似乎混合了v2和v3代码,因此整个过程不太可能成功

例如,您正在与
GLatLng
相同的位置使用
new google.maps.Infowindow
(v3)

我的建议是将页面上的引导更改为v3,并删除对v2对象的任何引用(如
GLatLng
)。请确保加载的API如下所示:

<script src="//maps.googleapis.com/maps/api/js?…"></script>

您没有向
标记添加任何侦听器

var marker = new GLatLng(dataMarker.Latitude, dataMarker.Longitude);

marker
不是一个
google.maps.marker
,它是一个
google.maps.LatLng
,它不会响应鼠标事件,因为它不是一个UI元素,它只是一个javascript对象

为什么你要在不推荐和关闭的环境中开发新代码?不,这里不是这样。只有在从闭包中引用循环(
标记
)中的变量时,才会发生这种情况。在这个代码段中,标记被直接传递到
addListener
,而不是从闭包中直接引用。