我正在尝试为Google地图创建自定义信息窗口。
我有一个例外成功!基本上,主信息窗口仍然可见,我不知道如何删除它或隐藏它。
这是一个有效的FIDDLE
这就是我所关注的:custom info window
我有上面链接中提到的代码:
// Reference to the DIV which receives the contents of the infowindow using jQuery
var iwOuter = $('.gm-style-iw');
/* The DIV we want to change is above the .gm-style-iw DIV.
* So, we use jQuery and create a iwBackground variable,
* and took advantage of the existing reference to .gm-style-iw for the previous DIV with .prev().
*/
var iwBackground = iwOuter.prev();
// Remove the background shadow DIV
iwBackground.children(':nth-child(2)').css({'display' : 'none'});
// Remove the white background DIV
iwBackground.children(':nth-child(4)').css({'display' : 'none'});
但是,这似乎没有做任何事情,你可以在我的小提琴中看到。
有人可以就此问题提出建议吗?
任何帮助都将不胜感激。
提前致谢。
修改
我想我到了某个地方。
我已经创建了一个自定义函数,并将所有代码放入其中以删除背景。然后我在html =''之后立即拨打customFunction();
东西。
但问题是它第一次点击不起作用,但它适用于第二次点击或第三次点击等...
我已更新FIDDLE here
有什么建议吗?
第二次编辑:
非常接近。
https://jsfiddle.net/8yL2vhoe/3/
如果您单击一个标记,然后单击第二个标记,您将看到我要查找的结果。 (没有主弹出的背景)。
我只是不明白为什么第一次点击不起作用!!
答案 0 :(得分:1)
请参阅更新后的Fiddle here。
只需将.person {
position: relative;
}
和var html = "...";
移到标记的点击监听器之外。
标记的点击监听器可以更简单,如下所示:
var iw = new google.maps.InfoWindow({...})
此外,您的var activeInfoWindow;
function infoWindow(marker, map, title, address, url) {
var html = "...";
var iw = new google.maps.InfoWindow({
content: html,
//maxWidth: 350
},customFunction());
google.maps.event.addListener(marker, 'click', function () {
if (activeInfoWindow != null) activeInfoWindow.close();
iw.open(map, marker);
activeInfoWindow = iw;
customFunction();
});
}
功能应该应用为
createMarker()