IE8中的Google Maps API加载失败(“'google'未定义”)

时间:2011-06-13 19:08:38

标签: javascript google-maps internet-explorer-8 google-maps-api-3 google-api

当我在脚本代码中加载http://maps.google.com/maps/api/js?sensor=false时,Chrome,Safari,Firefox和IE9中的所有功能都可以正常使用。

然而,当我在IE9中查看兼容模式(或者,我被告知,在 IE8 )时,地图无法加载并且“'google'未定义“在控制台中记录。

以下是相关代码,其中的行触发了通过注释标识的错误:

<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的脚本标记未在正文中的后续嵌入脚本之前加载和/或执行。

其他人是否可以复制?我该如何解决这个问题?

5 个答案:

答案 0 :(得分:3)

问题显然是IE 8没有“应用程序/ javascript”。我在<script>部分的<head>标记中将其更改为“text / javascript”,现在我的代码正常运行。当然,如果我将其更改回“application / javascript”,那么它就会停止工作。

答案 1 :(得分:2)

我的谷歌地图v3网站在IE 9兼容性视图模式,IE 8和IE7中停止工作。

原因:在使用IE F12 Developer工具检查脚本时,仅使用jQuery的java脚本出错。这是违规行。该错误缺少令牌,类的单引号。

$('<tr>', { 'class': country }).appendTo(tableSelector).append(h1).append(h2);

起初我追求假领导,认为这是一个关键= http://maps.googleapis.com/maps/api/js?key=MY_KEY_FROM_API_CONSOLE&sensor=false

课程是:使用工具,Firebug或IE工具或其他工具来检查您的javascript以了解引入的问题。

答案 2 :(得分:2)

有一种猜测是,当Google的请求为http时,您的网页可以使用https。 将Google请求转换为https,错误就会消失。 这对我有用。

请参阅:Possible solution

答案 3 :(得分:1)

IE正在下载然后尝试在本地计算机上执行JS,而其他浏览器只是将其作为文本文件打开。默认情况下,您可以在IE下载的地方找到下载的JS。

编辑:根据更新,请看这个小提琴,看看有多种工作方法。 http://jsfiddle.net/h6rc3/

答案 4 :(得分:1)

确保IE未处于离线模式。听起来好像浏览器没有连接到互联网。