我非常感谢这个论坛的帮助。所以我要在地图上带上不同的标记组,并使用切换功能,效果很好。
不再起作用的是我的事件监听器用于打开标记信息窗口。
当我运行以下代码并单击其中一个标记时,它总是会弹出数组最后一个标记的信息窗口。所以该机制有效,但似乎不再有迭代。
我想了很多关于这个问题,但我没有得出结论。感谢您的帮助。
这是代码
var deutschland = new google.maps.LatLng(51,9);
function initialize(){
var mapOptions = { zoom: 6,
center: deutschland,
streetViewControl: true,
scaleControl: true,
mapTypeControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP }
var map = new google.maps.Map(document.getElementById("map-container"),mapOptions);
lat_data = [
['mid',50.0010400,9.0730700,'company1','marker.png','infowindow text 1'],
['mid',50.2010057,8.2592738,'company2','marker.png','infowindow text 2'],
['West',50.7430120,7.1264100,'company3','marker_green.png','infowindow text 3'],
....
];
markers = [];
var i, newMarker;
for (i = 0; i < lat_data.length; i++) {
var infowindow = new google.maps.InfoWindow({
content: lat_data[i][5]
});
var shadow = new google.maps.MarkerImage('http://maps.google.com/mapfiles/shadow.png,
new google.maps.Size(37,32),
new google.maps.Point(0,0),
new google.maps.Point(0,32));
var image =
new google.maps.MarkerImage('http://maps.google.com/mapfiles/'+lat_data[i][4],
new google.maps.Size(20,32),
new google.maps.Point(0,0),
new google.maps.Point(0,32));
newMarker = new google.maps.Marker({
position: new google.maps.LatLng(lat_data[i][1], lat_data[i][2]),
map: map,
title: lat_data[i][3],
icon: image,
shadow: shadow
});
newMarker.category = lat_data[i][0];
newMarker.setVisible(true);
google.maps.event.addListener(newMarker,'click',function(){
infowindow.open(map,newMarker);
});
google.maps.event.addListener(map,'click',function(){
infowindow.close(map,newMarker);
});
markers.push(newMarker);
}
}
function displayMarkers(category) {
var i;
for (i = 0; i < markers.length; i++) {
if (markers[i].category == category) {
if (markers[i].getVisible()) {
markers[i].setVisible(false); }
else { markers[i].setVisible(true); } } }