我创建了几个 Gmarker(从 JQuery“加载”函数加载的 JSON 数据),在所有这些上我添加了一个事件监听器以打开我之前在标记上创建的信息窗口对象,然后我将它们全部添加到 map .
问题是信息窗口总是在同一个标记上打开。 我以前都做过这个,我看不出问题出在哪里……变量的范围?某处愚蠢的错误?
我上传了一个 example , 这是一个 shortcut to the javascript file
代码:
var map;
var infowindow;
$(document).ready(function() {
var myLatlng = new google.maps.LatLng(47.15984,2.329102);
var myOptions = {
zoom: 6,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.HYBRID,
scrollwheel: false
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
infowindow = new google.maps.InfoWindow({content:'<p>Test</p>'});
$.getJSON("data.json", function(data) {
var markers = [];
for (var i = data.length - 1; i >= 0; i--){
var latLng = new google.maps.LatLng(data[i].lat, data[i].lng);
var marker = new google.maps.Marker({position: latLng});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
markers.push(marker);
};
for (var j = markers.length - 1; j >= 0; j--){
markers[j].setMap(map);
};
});
});
最佳答案
改变
infowindow.open(map,marker);
到
infowindow.open(map,this);
关于javascript - 谷歌地图(v3)信息窗口一直在同一个标记上打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4010732/