Javascript 在信息窗口关闭后重新打开它';在谷歌地图中关闭

Javascript 在信息窗口关闭后重新打开它';在谷歌地图中关闭,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我有一张街景全景地图,一个信息窗口和一个可拖动的标记。拖动标记后,函数会请求getPanoramaByLocation查看视图服务是否可用。如果不是,则关闭信息窗口。这很好,但当我再次单击标记时,信息窗口不再打开。你知道怎么了吗? 德克萨斯州 var sv=new google.maps.StreetViewService(); 函数初始化(){ var optionMap={ 缩放:13, 中心:新google.maps.LatLng(47.390251,0.68882), mapTypeId

我有一张街景全景地图,一个信息窗口和一个可拖动的标记。拖动标记后,函数会请求getPanoramaByLocation查看视图服务是否可用。如果不是,则关闭信息窗口。这很好,但当我再次单击标记时,信息窗口不再打开。你知道怎么了吗? 德克萨斯州

var sv=new google.maps.StreetViewService();
函数初始化(){
var optionMap={
缩放:13,
中心:新google.maps.LatLng(47.390251,0.68882),
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var myMap=new google.maps.Map(document.getElementById(“mapDiv”),optionMap);
变量选项标记={
位置:新google.maps.LatLng(47.390251,0.68882),
地图:我的地图,
真的,
标题:“我的马克笔”
}
var marker=new google.maps.marker(optionMarker);

var infowindowDiv='来自GMaps API文档:

close() None    Closes this InfoWindow by removing it from the DOM structure.

所以…如果你关闭infowindow,它就消失了。永远。如果你真的通过说“infowindow=null;”来确保它消失,那就更糟了你必须创建一个新的。我的建议是重构你的代码,让它有一个单独的函数根据需要创建infowindow并返回它。在你的click事件定义中,检查infowindow是否为null,如果是,则获取一个新的


HTH

正如另一个答案所解释的,当用户单击关闭按钮时,infobox html将从DOM中删除,但JS对象仍然存在

创建信息窗口时,必须调用open方法才能在地图上看到它

myInfoWindow.open(mymap);
因此,如果您收听“closeclick”事件并保持infowindow状态

var infoWindowClosed = false;
google.maps.event.addListener(myInfoBox, "closeclick", function () {
    infoWindowClosed = true;
});
您可以根据需要重新打开myInfoWindow

if(infoWindowClosed){
    myInfoWindow.open(mymap);
}

谢谢你,dda。我已经尝试创建按需infowindow,但它不起作用,方法是检查(!infowindow)和(infowindow)还有很多,但我做不到。既然你设置了infowindow=null,就把它作为一个测试。首先,把变量放在函数之外,使它成为一个全局变量,这样它就成为一个永久引用。然后你就可以测试infowindow==null,并据此决定是否(重新)创建它。我写了一个谷歌地图助手,让我在与通用汽车打交道时的生活更轻松。虽然它还远未完成,但它可以帮助您在这种情况下跟踪标记和信息窗口。我将把它放在GCode.:-)merci;ça doitêtre super HK!
if(infoWindowClosed){
    myInfoWindow.open(mymap);
}