您遇到的问题是由于 Api 中的内容清理造成的。清理内容是防止恶意代码执行的安全措施。
当功能气球的描述内容被擦除时,以下代码将被删除:
- JavaScript
- CSS
-
<iframe>
tags
-
<embed>
tags
-
<object>
tags
如果您查看调试器中的标记,您会发现实际上得到如下内容:
<div style="font-family: Arial,sans-serif; font-size: small;">
<div id="iw_kml">
First Line Information<br>
California addresss<br>
Peak valley<br>
<div>Telephone<br>Office 9089YUHJT General: (2457TYGFR</div>
</div>
</div>
您没有说明如何打开信息窗口,但类似以下内容应该适合您。基本上,您可以抑制默认信息窗口,然后构建您自己的自定义窗口。
function initialize() {
var myLatlng = new google.maps.LatLng(0, 0);
var myOptions = {
zoom: 12,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(
document.getElementById("map_canvas"),
myOptions
);
var layer = new google.maps.KmlLayer(
'http://www.yourserver.com/some.kml', {
// prevent default behaviour
suppressInfoWindows: true,
map: map
}
);
// bind the event handler
google.maps.event.addListener(layer, 'click', function(kmlEvent) {
showInfoWindow(kmlEvent.featureData.description);
});
// show a custom info window
function showInfoWindow(text) {
// build your window using whatever, styles, embeds or scripts
// you like. Anything included here will bypass content scrubbing
var content = "<div style='margin-left:-20px;border:2px dotted #897823;'>" + text + "</div>";
var infowindow = new google.maps.InfoWindow({
content: content
})
}
}
显然你可以替换style='...'
with class='whatever'
然后您可以在外部文件中定义 CSS 样式。