当我在脚本标记中加载http://maps.google.com/maps/api/js?sensor=false时,Chrome,Safari,Firefox和IE9中的所有内容都能正常工作。IE8中的Google地图API加载失败(“google”未定义)
然而,当我看到在IE9 在兼容模式(或者,有人告诉我,在IE8)地图不加载和“‘谷歌’是未定义的”被记录在控制台中。
下面是相关的代码,与被触发带有注释标识错误的行:
<html>
<head>
<title>Test Map</title>
<script type="application/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
</head>
<body>
<div id="map_canvas"></div>
<script type="text/javascript">
var lat=37.763154;
var lon=-122.457941;
var initialZoom=17;
var mapTypeId = 'Custom Map';
var mapStyle = [{featureType:"landscape", elementType:"all", stylers:[{hue:"#dae6c3"},{saturation:16},{lightness:-7}]},
{featureType:"road", elementType:"geometry", stylers:[{hue:"#ffffff"},{saturation:-100},{lightness:100}]}];
//**The error is tripped in this next line, again only in IE9 compatibility mode or IE8*
var styledMap = new google.maps.StyledMapType(mapStyle);
var mapType = new google.maps.ImageMapType({
tileSize: new google.maps.Size(256,256),
getTileUrl: function(coord,zoom) {
return "img/tiles/"+zoom+"/"+coord.x+"/"+coord.y+".png";
}
});
var map = new google.maps.Map(document.getElementById("map_canvas"),
{center:new google.maps.LatLng(lat,lon),
mapTypeId:google.maps.MapTypeId.ROADMAP,
zoom:initialZoom,
mapTypeControl:false});
map.overlayMapTypes.insertAt(0, mapType);
map.mapTypes.set(mapTypeId, styledMap);
map.setMapTypeId(mapTypeId);
</script>
</body>
</html>
所以,出于某种原因,只有在IE9 +兼容模式和IE8,脚本标记,用于指定http://maps.google.com/maps/api/js?sensor=false未在正文中的后续嵌入脚本之前加载和/或执行。
其他人能够复制吗?我该如何纠正这个问题?
你在菲德勒看到什么? – SLaks 2011-06-13 19:10:18
我不认为它是你的错。它只是IE的兼容模式,它阻止了活动脚本。 (可能...) – 2011-06-13 19:51:55