为了获得自定义信息窗口,我第一次使用谷歌地图API V3的InfoBox插件。我点击了谷歌地方API内容的信息框。但是当我点击一个新标记时,前一个信息框不会关闭。我只希望一次打开一个信息框。我试图遵循这些问题中的指导:Google Map V3 - Allow only one infobox to be displayed at a time在我自己的代码中。这是我的代码的相关部分:
var boxText = document.createElement("div");
boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
var myOptions = {
content: boxText
,disableAutoPan: false
,maxWidth: 0
,pixelOffset: new google.maps.Size(-140, 0)
,zIndex: null
,boxStyle: {
background: "url('') no-repeat"
,opacity: 0.75
,width: "280px"
}
,closeBoxMargin: "10px 2px 2px 2px"
,closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif"
,infoBoxClearance: new google.maps.Size(1, 1)
,isHidden: false
,pane: "floatPane"
,enableEventPropagation: false
};
var ib = new InfoBox(myOptions);
var request = {
reference: place.reference
};
google.maps.event.addListener(marker,'click',function(e){
service.getDetails(request, function(place, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
boxText.innerHTML = '<br><div><div style="font-size: 18px; vertical-align:top; border:2px solid; background-color:; color: #555555;"><b> '+place.name+'</b>';
if (!!place.website) contentStr += ' <a target="_blank" href="'+place.website+'"><img src="img/arrow.png" style="position:absolute; bottom:0px: right:0px; height:22px; width:22px;"></img></a></div></div>';
ib.close();
ib.open(map, marker);
} else {
var contentStr = "<h5>No Result, status="+status+"</h5>";
ib.close();
ib.open(map, marker);
}
});
});
gmarkers.push(marker);
不幸的是,我一次只有一个以上的信息窗口。还有另一个选项来设置谷歌API信息窗口的样式,不需要加载另一个脚本?这将在移动网站上运行,如果有办法只使用最好的CSS3。
答案 0 :(得分:1)
我使用此论坛http://www.geocodezip.com/fredagsmat_se_infoboxA.html中提到的此示例https://groups.google.com/forum/?fromgroups=#!topic/google-maps-js-api-v3/gLHyTaKlJ2c解决了问题。
如果我理解正确,您需要将信息框变量置于初始化函数之外,使其变为全局变量。在我的情况下,var ib = null;。然后你放置ib = new InfoBox({});就在初始化函数结束之前。如何调用该函数将取决于您的特定JavaScript,但只需参考示例以获得一些指导。