谷歌地图InfoWindow显示不需要的滚动条(但只有一次)

时间:2014-03-19 10:29:57

标签: jquery css google-maps google-maps-api-3 google-maps-markers

我的InfoWindows显示不正确有问题 - 虽然它不应该显示滚动条(但只是第一次)!

在我的页面上,我有很多折线路线,我为每条路线添加了一个标记/ InfoWindow。添加了很多标记(在Ajax调用中循环)。

这是我对InfoWindow的定义(循环前的单个实例):

// Define an info window
var infowindow = new google.maps.InfoWindow( { content: "" } );

这是在我的循环中我添加标记:

// Set a marker on the last known position
var marker = new google.maps.Marker({
    position: lastLatLng,
    title: "My text",
    map: map,
    icon: iconCar
});

// Click on a marker to open an info window
google.maps.event.addListener(marker,"click",function() {
    infowindow.open(map,this);
    infowindow.setContent(this.title);
});

当我第一次打开地图时(在每个新浏览器实例中)我注意到InfoWindow的标记/显示有一个滚动条 - 我没有把它放在那里也不应该在那里作为文本没过那么久。

错误(使用滚动条):

InfoWindow with scrollbar - this is wrong

下次(以及所有以下内容)我点击它,它会在没有滚动条的情况下正确显示。

更正(不使用滚动条):

InfoWindow without scrollbar - this is correct

我没有为Google地图条目指定任何CSS,即便如此,它应该每次都显示错误,而不仅仅是第一次。

我已尝试过这个问题的所有技巧Google Maps API v3: InfoWindow not sizing correctly,但似乎没有解决我的问题。

请参阅显示我的问题的Fiddle demo。如果我关闭所有(Chrome)浏览器,转到小提琴并单击路线(第一次点击),我每次都可以重现错误。然后它会第一次显示滚动条,但只是第一次显示。

1 个答案:

答案 0 :(得分:7)

将以下内容添加到CSS中:

div.gm-style-iw{
  overflow:hidden!important;
}

您正在看滚动条,因为带滚动条的包含元素的默认设置为overflow:auto且内容超出了容器的高度。

您需要使用!important运算符,因为地图样式是内联定义的,而替代方法是使用Javascript进行编辑,但这可能是过度的。

<强> More on !important from MDN

  

当样式声明使用!important规则时,这个   声明覆盖CSS中的任何其他声明,无论在何处   它在声明列表中。虽然,!重要无关   具有特异性。使用!important是不好的做法,因为它使   你努力调试,因为你打破了你的自然级联   样式表。