GoogleMap 标记在移动设备上无法点击(触摸屏) 但是,在任何PC上都可以,所以我无法弄清楚有什么意义 这是我的代码:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(60.037760, -44.100494),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var locations = [
['4lvin', 60.074433, -44.011917],
['5irius', 60.037760, -44.100494]
];
for (var i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
var infowindow = new google.maps.InfoWindow();
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent('<h2>'+locations[i][0]+'</h2>\n<a>Read more..</a>');
infowindow.open(map, this);
}
})(marker, i));
}
但是,当我使用以下代码(谷歌的正式方式为“google.maps.event.addListener”)时, 标记 只显示相同的 信息窗口
var infowindow = new google.maps.InfoWindow({content: locations[i][0]});
new google.maps.event.addListener( marker, 'click', function() {
infowindow.open(map,this);
});
答案 0 :(得分:1)
问题是因为你正在做一个循环,你需要使用一个闭包,否则所有标记只会获得你想要与最后一个标记关联的内容。你的第一段代码是正确的。建议你改变再做同样的事情:
var infowindow = new google.maps.InfoWindow({content: locations[i][0]});
google.maps.event.addListener( marker, 'click', function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map,this);
}
})(marker, i));
答案 1 :(得分:1)