Javascript 关闭信息窗口-关闭onclick-谷歌地图

Javascript 关闭信息窗口-关闭onclick-谷歌地图,javascript,google-maps,Javascript,Google Maps,在API的V3中,我不能一次只显示一个信息窗口。我需要一个在下一个开幕前关闭。还希望在单击地图上的任何位置时关闭信息窗口。这是否在初始化函数中 以下是我的完整脚本: // defining vars var map = null; var markers = []; var adUnit; var center = new google.maps.LatLng(39.676502,-105.162101); // function that soley initializes the new

在API的V3中,我不能一次只显示一个信息窗口。我需要一个在下一个开幕前关闭。还希望在单击地图上的任何位置时关闭信息窗口。这是否在初始化函数中

以下是我的完整脚本:

// defining vars
var map = null;
var markers = [];
var adUnit;
var center = new google.maps.LatLng(39.676502,-105.162101);

// function that soley initializes the new map object
function initialize() {

    var mapOptions = {
        zoom: 10,
        center: center,
            mapTypeControl: true,
            mapTypeControlOptions: {
              style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
            },
            zoomControl: true,
                    zoomControlOptions: {
                      style: google.maps.ZoomControlStyle.SMALL,
                      position: google.maps.ControlPosition.LEFT_BOTTOM
                    },
            panControl: false,
        mapTypeId: google.maps.MapTypeId.TERRAIN
    }
    map = new google.maps.Map($('#map_canvas')[0], mapOptions);
    // call the loader function
    loadXML();

    // Adsense Options                                 
    var adUnitDiv = document.createElement('div');
    var adUnitOptions = {
      format: google.maps.adsense.AdFormat.BUTTON,
      position: google.maps.ControlPosition.RIGHT_BOTTOM,
      publisherId: 'ca-google-maps_apidocs',
      map: map,
      visible: true
    };
    adUnit = new google.maps.adsense.AdUnit(adUnitDiv, adUnitOptions);     

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


} //<-- Initialize

// load (and map) the markers from XML data
function loadXML() {
    $.get('data.xml', function(data) {
        // var bounds = new google.maps.LatLngBounds();   //<--- Size map to bounds of markers LatLng
        $(data).find('marker').each(function() {

            var lat = $(this).attr('lat')
            var lng = $(this).attr('lng')
            var name = $(this).attr('name')
            var type = $(this).attr('type')

            var LatLng   = new google.maps.LatLng(parseFloat($(this).attr('lat')),
                                    parseFloat($(this).attr('lng')));

            var myToggleData = {                    //<---- collecting data to be toggled on/off
                type      : $(this).attr('type'),
                skill         : $(this).attr('skill'),
                eta_whatever_that_means : parseFloat($(this).attr('eta'))
            }        

            var marker      = new google.maps.Marker({
                position : LatLng,
                map         : map,
                icon     : 'images/marker.png',
                title     : $(this).attr('name'),
                data     : myToggleData
            });

              var html ='<div id="winBackground">          <div class="winTitle">' + name + '</div>          <div class="winHead">Type: <div class="winData">' + type + '</div></div>   </div>';


              // create the infoWindow
              var infoWindow = new google.maps.InfoWindow();
              // add a listener to open the infoWindow when a user clicks on one of the markers
              google.maps.event.addListener(marker, 'click', function() {
                infoWindow.setContent(html);
                infoWindow.open(map, marker);
              });

            markers.push(marker);
            // bounds.extend(LatLng);
        });


        // map.fitBounds(bounds);
    });
}
// The toggleMarker function
function toggleMarkers(attr,val) {
    if (markers){
        for (i in markers) {
            if(markers[i].data[attr] == val){
                var visibility = (markers[i].getVisible() == true) ? false : true;
                markers[i].setVisible(visibility);
            }
        }
    }
}
//定义变量
var-map=null;
var标记=[];
var adUnit;
var center=newgoogle.maps.LatLng(39.676502,-105.162101);
//用于初始化新映射对象的函数
函数初始化(){
变量映射选项={
缩放:10,
中心:中心,,
mapTypeControl:true,
mapTypeControlOptions:{
样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单,
},
动物控制:对,
ZoomControl选项:{
样式:google.maps.ZoomControlStyle.SMALL,
位置:google.maps.ControlPosition.LEFT_底部
},
泛控制:错误,
mapTypeId:google.maps.mapTypeId.TERRAIN
}
map=new google.maps.map($('map#u canvas')[0],mapOptions);
//调用loader函数
loadXML();
//Adsense选项
var adUnitDiv=document.createElement('div');
var adUnitOptions={
格式:google.maps.adsense.AdFormat.BUTTON,
位置:google.maps.ControlPosition.RIGHT\u底部,
publisherId:“ca-google-maps_apidocs”,
地图:地图,
可见:正确
};
adUnit=new google.maps.adsense.adUnit(adUnitDiv,adUnitOptions);
google.maps.event.addListener(映射,'click',函数(){
infowindow.close();
});                       

}//不要为每个标记创建新的信息窗口。仅创建一个信息窗口,然后在更改它时,执行以下操作:

infowin.setContent("");
infowin.open(map, marker);

这将在地图单击时关闭所有信息窗口(无需引用信息窗口对象)


试着这样做:

if(popup) {
    popup.close();
}

popup = new google.maps.InfoWindow({
    content:'My New InfoWindow',
});

popup.open(map, marker);
试试这个,会有用的

if(popup) {
    popup.close();
}

popup = new google.maps.InfoWindow({
    content:'My New InfoWindow',
});

popup.open(map, marker);
   google.maps.event.addListener(marker, 'click', function() {
        if(!marker.open){
            infowindow.open(map,marker);
            marker.open = true;
        }
        else{
            infowindow.close();
            marker.open = false;
        }
        google.maps.event.addListener(map, 'click', function() {
            infowindow.close();
            marker.open = false;
        });
    });