Проблема с GoogleMap offsetWidth

У меня проблема с отображением GoogleMap.

Вот исходный код веб-сайта: http://pastebin.com/LjhVbEF7

Когда я пытаюсь запустить этот сайт, карта не отображается. Консоль Firebug сообщает Uncaught TypeError: Cannot read property 'offsetWidth' of null

Вы знаете, что я делаю неправильно? Я знаю, что в сети много рабочих примеров, но этот код генерируется специальным script, и я не могу сильно его помешать. Может быть, я забыл установить некоторые переменные?

спасибо, Mike

=================

EDIT: Этот код работает только тогда, когда я положу JS в определение функции и вызову его в body onload param. У вас есть идея, как я могу заставить его работать без использования такой функции и параметра onload?

Ответы

Ответ 1

Я понимаю, что это, вероятно, немного поздно, но, надеюсь, он сможет помочь кому-то другому:

В вашем случае функция инициализации не запускается, хотя она также может быть вызвана атрибутами ширины и высоты, которые не задаются в контейнере div. Если вы не хотите просто добавлять событие загрузки в тег body, вы можете использовать следующий jQuery:

//Add onload to body
$(window).load(function(){
    initialize()
});

Ответ 2

Возможно, вы работаете в AngularJS? Я был, и эта проблема сохранялась за всеми вышеперечисленными решениями. Причина заключалась в том, что частичное, где я находил свой div div карты, не завершалось вовремя, поэтому div был нулевым, поэтому полученная вами ошибка.

См. способ Angular для вызова GoogleMaps:

Инициализировать карту Google в AngularJS

Ответ 3

Это связано с тем, что ваш script выполняется перед загрузкой элемента DOM. Простое решение состоит в том, чтобы поместить его в функцию и вызвать ее при завершении загрузки. Пожалуйста, обратитесь к вопросу ниже:

API Google MAP Uncaught TypeError: Невозможно прочитать свойство offsetWidth нулевого

Ответ 4

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

Ответ 5

Не уверен, но это может быть строка

map_4e60b1f9c94ae.setCenter(new google.maps.LatLng(0, 0, 1));

Я думаю, что new google.maps.LatLng принимает только два атрибута, широту и долготу.

Попробуйте этот бит с сайта карты

var latlng = new google.maps.LatLng(-34.397, 150.644);

http://code.google.com/apis/maps/documentation/javascript/tutorial.html

Ответ 6

Попробуйте поместить код JavaScript в тело и ПОСЛЕ div id="map_canvas"

Что-то вроде этого:

<body>
    <div id="map_canvas"></div>

    <script type="text/javascript">
        var map_4e60b1f9c94ae = new google.maps.Map(document.getElementById("map_canvas"), {"mapTypeId":"roadmap","zoom":10});
        map_4e60b1f9c94ae.setCenter(new google.maps.LatLng(0, 0, 1));
    </script>
</body>