Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击标记时如何关闭所有打开的信息窗口?_Javascript_Google Maps_Google Maps Api 3_Infowindow - Fatal编程技术网

Javascript 单击标记时如何关闭所有打开的信息窗口?

Javascript 单击标记时如何关闭所有打开的信息窗口?,javascript,google-maps,google-maps-api-3,infowindow,Javascript,Google Maps,Google Maps Api 3,Infowindow,可能重复: 我花了好几个小时想弄清楚怎么做,但似乎还没有接近一个解决方案。请参阅下面我的代码: function initialize() { var latlng = new google.maps.LatLng(50.71608,-1.993761); var settings = { zoom: 14, center: latlng, mapTypeControl: true, mapTypeControlOptions:

可能重复:

我花了好几个小时想弄清楚怎么做,但似乎还没有接近一个解决方案。请参阅下面我的代码:

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);
    });
    }   
函数初始化(){
var latlng=新的google.maps.latlng(50.71608,-1.993761);
变量设置={
缩放:14,
中心:拉特林,
mapTypeControl:true,
mapTypeControlOptions:{样式:
google.maps.MapTypeControlStyle.DROPDOWN_MENU},
导航控制:对,
navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL},
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“map_canvas”),设置);
var contentString=''+
“名称

”+ ''; var infowindow=new google.maps.infowindow({ 内容:contentString }); var contentString2=''+ “名称

”+ ''; var infowindow2=新建google.maps.InfoWindow({ 内容:contentString2 }); var contentString3=''+ “名称

”+ ''; var infowindow3=新建google.maps.InfoWindow({ 内容:contentString3 }); var oldIcon=new google.maps.MarkerImage('images/maplogo.png', 新谷歌地图大小(100,50), 新google.maps.Point(0,0), 新谷歌地图点(50,50) ); var oldShadow=new google.maps.MarkerImage('images/mapshadow.png', 新谷歌地图大小(100,50), 新google.maps.Point(0,0), 新google.maps.Point(50,50) ); var old=new google.maps.LatLng(50.714110196782485,-1.9864332675933838,3); var oldMarker=new google.maps.Marker({ 职位:老, 地图:地图, 图标:oldIcon, 影子:老影子, 标题:“标题”, 动画:google.maps.animation.DROP }); var hamIcon=new google.maps.MarkerImage('images/maplogo.png', 新谷歌地图大小(100,50), 新google.maps.Point(0,0), 新谷歌地图点(50,50) ); var hamShadow=new google.maps.MarkerImage('images/mapshadow.png', 新谷歌地图大小(100,50), 新google.maps.Point(0,0), 新谷歌地图点(50,50) ); var ham=new google.maps.LatLng(50.71584417870842,-2.006630301475525,1); var hamMarker=新的google.maps.Marker({ 位置:火腿, 地图:地图, 图标:哈米孔, 影子:哈姆影子, 标题:“标题”, 动画:google.maps.animation.DROP }); var centreIcon=new google.maps.MarkerImage('images/maplogo.png', 新谷歌地图大小(100,50), 新google.maps.Point(0,0), 新谷歌地图点(50,50) ); var centreShadow=new google.maps.MarkerImage('images/mapshadow.png', 新谷歌地图大小(100,50), 新google.maps.Point(0,0), 新谷歌地图点(50,50) ); var center=new google.maps.LatLng(50.71712636698597,-1.9832682609558105,2); var centreMarker=new google.maps.Marker({ 职位:中, 地图:地图, 图标:centreIcon, 影子:森特沙多, 标题:“标题”, 动画:google.maps.animation.DROP }); google.maps.event.addListener(oldmark,'click',function(){ 信息窗口。打开(地图、旧标记); }); google.maps.event.addListener(hamMarker,'click',function(){ 信息窗口2.打开(地图,哈马克); }); google.maps.event.addListener(centreMarker,'click',function(){ 信息窗口3.打开(地图、中心标记器); }); }
如果有任何帮助,我将不胜感激,因为我还有一个最后期限要赶,而且对javascript的理解也很低


谢谢

调用
infowindow.close()
中单击
回调

您应该能够将您的侦听器替换为:

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();
});

谢谢你,乔希,成功了。