我的关闭技巧并不是很好,我试图保留每个InfoWindows的引用供以后使用,但似乎无法从此位置移动。所发生的只是无论我点击哪个标记,相同的InfoWindow都会打开。不用担心{{}} Django模板代码很好。具有个人信息窗口的多个地图标记
$(document).ready(function() {
var map;
var myLatlng;
var marker = [];
var infowindow = [];
var map_markers = [];
{% for map_marker in map_markers %}
map_markers.push({
'lat':{{map_marker.latitude}},
'lng':{{map_marker.longitude}},
'icon':{% if map_marker.icon %}'{{map_marker.icon.url}}'{% else %}''{% endif %},
'info':{% if map_marker.info %}'{{map_marker.info.strip|safe|escapejs}}'{% else %}''{% endif %},
});
{% endfor %}
var mapOptions = {
zoom: {{map_settings.zoom}},
center: new google.maps.LatLng({{map_settings.latitude}}, {{map_settings.longitude}})
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
for (i in map_markers){
myLatlng = new google.maps.LatLng(map_markers[i].lat , map_markers[i].lng);
marker[i] = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Marker',
icon: map_markers[i].icon
});
if (map_markers[i].info){
infowindow[i] = new google.maps.InfoWindow({
content: map_markers[i].info
});
google.maps.event.addListener(marker[i], 'click', function() {
infowindow[i].open(map,marker[i]);
});
}
}
});
因为我一直在围绕着这个问题前进,所以从这个问题中继续前进会很好。任何帮助赞赏。
你能否附上一个使用JSFiddle/Plnkr的工作示例? – cs1193
你不需要使用闭包。您可以将infowindow内容存储在标记的(自定义)成员中。在发布的代码中,我没有看到任何关闭的尝试。 – geocodezip
我试图关闭,但并没有做太多的工作。我假设infowindow [i] .open(map,marker [i])的元素;正在被重写。前面的JSFiddle不会用到,请看看。 –