2012-11-23 50 views
-1

可能重复:
Google maps: infowindow is not closing如何在点击标记时关闭所有打开的信息窗口?

我花了几个小时试图让我的周围如何做到这一点的头,但似乎并没有在任何地方接近的分辨率得到。请参阅我的代码如下:

function initialize() { 
var latlng = new google.maps.LatLng(50.71608,-1.993761); 
var settings = { 
     zoom: 14, 
     center: latlng, 
     mapTypeControl: true, 
     mapTypeControlOptions: {style: 
     google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
     navigationControl: true, 
     navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
var map = new google.maps.Map(document.getElementById("map_canvas"),  settings); 

var contentString = '<div>'+ 
       '<p><strong>name</strong></p>'+ 
       '</div>'; 
var infowindow = new google.maps.InfoWindow({ 
       content: contentString 
      }); 
var contentString2 = '<div>'+ 
       '<p><strong>name</strong></p>'+ 
       '</div>'; 
var infowindow2 = new google.maps.InfoWindow({ 
       content: contentString2 
      }); 
var contentString3 = '<div>'+ 
       '<p><strong>name</strong></p>'+ 
       '</div>'; 
var infowindow3 = new google.maps.InfoWindow({ 
       content: contentString3 
      }); 

var oldIcon = new google.maps.MarkerImage('images/maplogo.png', 
     new google.maps.Size(100,50), 
     new google.maps.Point(0,0), 
     new google.maps.Point(50,50) 
    ); 
    var oldShadow = new google.maps.MarkerImage('images/mapshadow.png', 
     new google.maps.Size(100,50), 
     new google.maps.Point(0,0), 
     new google.maps.Point(50, 50) 
    ); 
    var old = new google.maps.LatLng(50.714110196782485,-1.9864332675933838, 3); 
    var oldMarker = new google.maps.Marker({ 
     position: old, 
     map: map, 
     icon: oldIcon, 
     shadow: oldShadow, 
     title:"title", 
     animation: google.maps.Animation.DROP 
    }); 


    var hamIcon = new google.maps.MarkerImage('images/maplogo.png', 
     new google.maps.Size(100,50), 
     new google.maps.Point(0,0), 
     new google.maps.Point(50,50) 
    ); 
    var hamShadow = new google.maps.MarkerImage('images/mapshadow.png', 
     new google.maps.Size(100,50), 
     new google.maps.Point(0,0), 
     new google.maps.Point(50,50) 
    ); 
    var ham = new google.maps.LatLng(50.71584417870842,-2.006630301475525, 1); 

    var hamMarker = new google.maps.Marker({ 
     position: ham, 
     map: map, 
     icon: hamIcon, 
     shadow: hamShadow, 
     title:"title", 
     animation: google.maps.Animation.DROP 
    }); 

var centreIcon = new google.maps.MarkerImage('images/maplogo.png', 
     new google.maps.Size(100,50), 
     new google.maps.Point(0,0), 
     new google.maps.Point(50,50) 
    ); 
    var centreShadow = new google.maps.MarkerImage('images/mapshadow.png', 
     new google.maps.Size(100,50), 
     new google.maps.Point(0,0), 
     new google.maps.Point(50,50) 
    ); 
    var centre = new google.maps.LatLng(50.71712636698597,-1.9832682609558105, 2); 
    var centreMarker = new google.maps.Marker({ 
     position: centre, 
     map: map, 
     icon: centreIcon, 
     shadow: centreShadow, 
     title:"title", 
     animation: google.maps.Animation.DROP 
    }); 

      google.maps.event.addListener(oldMarker, 'click', function() { 
    infowindow.open(map,oldMarker); 
    }); 
      google.maps.event.addListener(hamMarker, 'click', function() { 
    infowindow2.open(map,hamMarker); 
    }); 
      google.maps.event.addListener(centreMarker, 'click', function() { 
    infowindow3.open(map,centreMarker); 
    }); 
    } 

任何帮助,这将非常感谢,因为我有一个截止日期,以满足和JavaScript的理解很低。

感谢

回答

0

呼叫infowindow.close()click回调。

你应该只能够用来替换你的听众:

google.maps.event.addListener(oldMarker, 'click', function() { 
    infowindow.open(map,oldMarker); 
    infowindow2.close(); 
    infowindow3.close(); 
}); 

google.maps.event.addListener(hamMarker, 'click', function() { 
    infowindow2.open(map,hamMarker); 
    infowindow.close(); 
    infowindow3.close(); 
}); 

google.maps.event.addListener(centreMarker, 'click', function() { 
    infowindow3.open(map,centreMarker); 
    infowindow.close(); 
    infowindow2.close(); 
}); 
+0

感谢Freejosh,这工作。 – user1848387

相关问题