我正在使用谷歌地图 V3 API。我在地图上添加了一个自定义控件。它的宽度为 350 像素,高度为 300 像素。当我在地图上打开 infoWindow 时,自定义控件将与 infoWindow 重叠。
有没有办法将 infoWindow 放在自定义控件之上?
我正在使用谷歌地图 V3 API。我在地图上添加了一个自定义控件。它的宽度为 350 像素,高度为 300 像素。当我在地图上打开 infoWindow 时,自定义控件将与 infoWindow 重叠。
有没有办法将 infoWindow 放在自定义控件之上?
如果您的问题中没有一些代码可以证明您的问题,我们或多或少只是在猜测您的问题是什么。
查看参考文档google.maps.MapPanes
告诉我们 InfoWindow 位于最顶层,但不清楚它们 google.maps.Map.controls
属于哪个窗格。
根据设计,您尝试做的事情可能是不可能的。我想说这是谷歌地图团队的一个有目的的决定,以确保地图控件永远不会被遮挡。
我遇到了类似的问题。如上所述 - 尽管有使用自定义叠加的解决方案,但无法使用自定义控件来做到这一点。
SO的这个答案应该提供足够的信息来解决这个问题。那里的解决方案在标记上方显示叠加,但以相同的方式显示在InfoWindow
图层下方。
将地图(包括信息窗口)推到信息窗口打开的控件前面,并在关闭时将其拉回。
CSS:
.infoopen div[aria-label="Map"]{
z-index:1!important;
}
js:
google.maps.event.addListener(marker, 'click', function(event) {
if(!infowindows[marker.myOwnTarget].anchor) var openme=true;
$.each(markers,function(){
infowindows[this.myOwnTarget].close();
// show controls and legend on infowindow closing by clicking any marker
$(".map").removeClass("infoopen");
});
if(openme){
infowindows[marker.myOwnTarget].open(thamap, marker);
// hide controls and legend on info open
$(".map").addClass("infoopen");
google.maps.event.addListener(infowindows[marker.myOwnTarget], 'closeclick', function () {
// show controls and legend on close click
$(".map").removeClass("infoopen");
});
}
});
您问过“有什么方法可以将 infoWindow 放在自定义控件之上?”,如果我正确理解了您的问题,那么您需要将 z-index 添加到您的 infowindow 属性中,以将其显示在客户控件的上方/顶部。
您可以添加以下代码来实现此目的。
var infowindow = new google.maps.InfoWindow({
zIndex: 1000
});