只是在Google地图javascript API的新版本3.12中尝试新的选项google.maps.visualRefresh = true
。虽然地图的新外观很棒,但现在我的InfoWindows中的文本使用的字体大小是Roboto。
新的InfoWindow内容div CSS为:
font-family: Roboto, Arial, sans-serif;
font-size: 13px;
font-weight: 300;
这不是以前的情况,它不工作与我的网站的设计。任何想法我可以删除它使用默认字体定义在我的body
?
您仍然可以在InfoWindow中使用自己的字体。只需提供HTML内容而不是纯文本,您可以使用内联CSS或样式表以任何您想要的方式对其进行样式化。本例:
var infowindow = new google.maps.InfoWindow({
map: map,
position: center,
content: '<div class="myinfo">Computer History!</div>'
});
使用这个CSS:
.myinfo { font-family:Georgia,serif; font-size:18px; }
使用HTML内容,并按照这个答案的建议设置样式。
但是,您需要一个具有更高特异性的CSS规则。请看这个小提琴(从Michael Gearys的小提琴衍生而来):
#mapbox .myinfo { font-family:Georgia,serif; font-size:18px; }
如果你像我一样很懒,你可以比他们更具体。只需重新定义自己的邪恶风格附加到您的body定义。
~我在这个例子中使用的是SASS,但你可以通过将def放到root并添加body来滚动你自己的香草CSS。这里和那里~
html, body {
font-family: Helvetica, Arial, sans-serif;
# steal/borrow their own styles to be used against them.
# in this example I have set the font to 'comical' size.
.gm-style div,
.gm-style span,
.gm-style label,
.gm-style a { font-family:Helvetica,Arial,sans-serif;font-size:200px;font-weight:2000}.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}
}
这种方法是适当的脆弱,但肯定会修补你的不稳定的字体快速拼接。这个答案可能不值得被标记为hackshop 3.1。
当你使用javascript时,你可以使用javascript侦听器来解决这个问题。将此代码片段粘贴在<script>
标签中的某个地方,在 MAP html内容的输出之前(例如在 <head>
部分中,就像我所做的那样):
var head = document.getElementsByTagName('head')[0];
var insertBefore = head.insertBefore;
head.insertBefore = function (newElement, referenceElement){
if(newElement.href && newElement.href.indexOf('//fonts.googleapis.com/css?family=Roboto') > -1) {
console.info('Prevented Roboto font from loading!');
return;
}
// intercept style elements for modern browsers
if(newElement.tagName.toLowerCase() === 'style' && newElement.innerHTML.indexOf('.gm-style') > -1){
console.info('Prevented .gm-style from loading!');
return;
}
insertBefore.call(head, newElement, referenceElement);
};
它不会"咬"所有的动态加载调用到标题,因为谷歌使用的方法在不同的视图更新不同。这只包括head.insertBefore
方法。
/仅在现代浏览器如2017,而不是ie8(但与mods将)。适用于我们的情况,但我不知道这个方法是否与和其他东西相互作用