Javascript 映射未将单击事件处理程序添加到标记
下面的代码将为我的地图添加标记。但是addlistener事件从未添加到每个标记中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
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
,而不是从闭包中直接引用。