在Google地图中禁用CSS样式(3.14)Infowindow

Phi*_*ühn 28 javascript css google-maps

在谷歌地图版本3.14中,为自定义信息窗口添加了一些新的CSS规则.我使用信息块插件,现在我的许多元素样式都被覆盖了.

例如:

.gm-style div,.gm-style span,.gm-style label,.gm-style a {
    font-family: Roboto,Arial,sans-serif; 
    font-size:11px;
    font-weight:400
}

.gm-style div,.gm-style span,.gm-style label {
    text-decoration:none
}

.gm-style a,.gm-style label {
    display:inline
}

.gm-style div {
    display:block
}

.gm-style img {
    border: 0; 
    padding: 0;
    margin: 0
}
Run Code Online (Sandbox Code Playgroud)

有没有办法改变它,除了我必须通过"!important"覆盖这个谷歌样式?

编辑:

字体"Roboto"也将被加载.如果你关心性能,那就不是很好.

EDIT2:

好的,重要的是没有必要.通过增加CSS选择器的特异性,也可以覆盖谷歌样式.但这并没有改变我必须覆盖所有谷歌风格.而且roboto字体也会被加载.

小智 11

从我可以看到的新css规则保证打破所有标记,控件和网络范围内的信息窗口的样式,所以也许这将不会保留在3.exp版本足够长的时间成为正式版本的一部分.同时保护自己免受这种变化的影响.你应该做两件事:

1在链接上设置地图api的版本.就像是

<script src="http://maps.googleapis.com/maps/api/js?v=3&libraries=geometry&sensor=true" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

将确保您始终访问Maps API的当前发行版本.如果你想更保守,你也可以指定主要和次要版本.如果您指定主要版本和次要版本,那么您可以测试对映射API的更新,作为常规发布计划的一部分.如果您作为包装的移动应用程序的一部分访问maps API,那么您无法控制用户何时更新您的应用程序,因此您可能只想设置v = 3然后尝试将您的应用程序与地图css中的更改隔离(见下文2.)

2为您的标记,控件或信息窗口设置样式,以便更好地控制样式.例如,如果你有一个像html的标记

<div class="my-marker">...</div>
Run Code Online (Sandbox Code Playgroud)

您可以阻止maps API按照css规则设置字体大小

div.my-marker {
  font-size: 18px;
  ...
}
Run Code Online (Sandbox Code Playgroud)

注意,给出地图API样式之类的

.gm-style div {
  font-size: 11px;
  ...
}
Run Code Online (Sandbox Code Playgroud)

您必须指定元素的绝对大小,相对测量值,例如,它们不会保护您免受可能的更改,例如,font-size:11px;


dor*_*ume 6

在我加入一个事件监听器之后,我遇到了同样的问题并且Emads的答案对我很有用.

google.maps.event.addListener(map, 'idle', function()
{
    jQuery('.gm-style').removeClass('gm-style');
});
Run Code Online (Sandbox Code Playgroud)

问题是我仍然看不到任何方法来阻止谷歌加载Roboto字体.

编辑:嗯...有一个非常简单的方法,以阻止它.只需使用GET加载旧版本的谷歌API,如下所示:

<script src="http://maps.google.com/maps/api/js?v=3.13&sensor=false"></script>
Run Code Online (Sandbox Code Playgroud)

在这个API版本中,谷歌根本不会改变gm风格.所以你不需要覆盖任何类或样式.


Ema*_*jar 2

jQuery('.gm-style').removeClass('gm-style');
Run Code Online (Sandbox Code Playgroud)

或者

在文件/wp-content/themes/rentbuy/js/scripts.js中找到它

<div class="overlay-simple-marker"
Run Code Online (Sandbox Code Playgroud)

并将其替换为

<span class="overlay-simple-marker"
Run Code Online (Sandbox Code Playgroud)