Ошибка загрузки API Карт Google ("google" не определен ") в IE8 - PullRequest
7 голосов
/ 13 июня 2011

Когда я загружаю http://maps.google.com/maps/api/js?sensor=false в тег скрипта, у меня все отлично работает в Chrome, Safari, Firefox и IE9.

Однако, когда я смотрю в IE9 в совместимостиmode (или, как мне сказали, в IE8 ) карта не загружается, и в консоли регистрируется "google" is undefined ".

Вот соответствующий кодсо строкой, которая вызывает ошибку, указанную в комментарии:

<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, тег script указывает http://maps.google.com/maps/api/js?sensor=falseне загружается и / или не выполняется до следующего встроенного сценария в теле.

Могут ли другие реплицироваться?Как мне исправить эту проблему?

Ответы [ 5 ]

3 голосов
/ 14 июня 2011

Проблема, по-видимому, в том, что IE 8 не использует "application / javascript". Я изменил его на «text / javascript» в теге <script> в разделе <head>, и теперь мой код работает. И, конечно, если я верну его обратно в «application / javascript», он перестанет работать.

2 голосов
/ 25 марта 2012

Можно предположить, что ваша страница работает по протоколу https, а запрос от Google - http.преобразуйте запрос Google в https, и ошибка исчезнет.это сработало для меня.

См .: Возможное решение

2 голосов
/ 22 февраля 2012

Мой сайт Google Maps v3 перестал работать в режиме просмотра совместимости с IE 9, IE 8 и IE7.

Причина: ошибка в java-скрипте при использовании jQuery обнаружена только при использовании инструментов разработчика IE F12 для проверки скрипта,Вот оскорбительная строка.В ошибке отсутствовали одинарные кавычки из токена, класс.

$('<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 на наличие проблем.

1 голос
/ 13 июня 2011

Убедитесь, что IE не в автономном режиме. Похоже, браузер не подключается к Интернету.

1 голос
/ 13 июня 2011

IE загружает, а затем пытается запустить JS на вашем локальном компьютере, в то время как другие браузеры просто открывают его в виде текстового файла. Вы можете найти загруженный JS из IE в том месте, куда загружается материал по умолчанию.

РЕДАКТИРОВАТЬ: В свете обновлений см. Эту скрипку, чтобы увидеть своего рода исправление. http://jsfiddle.net/h6rc3/

...