GoogleMap offsetWidth проблема - PullRequest
       1

GoogleMap offsetWidth проблема

16 голосов
/ 02 сентября 2011

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

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

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

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

спасибо, Mike

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

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

Ответы [ 6 ]

21 голосов
/ 30 октября 2011

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

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

//Add onload to body
$(window).load(function(){
    initialize()
});
2 голосов
/ 19 ноября 2013

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

2 голосов
/ 09 января 2013

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

Ошибка Google MAP API: ошибка типа: невозможно прочитать свойство 'offsetWidth', равное нулю

2 голосов
/ 23 октября 2012

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

См. Угловой способ вызова GoogleMaps здесь:

Инициализация карты Google в AngularJS

1 голос
/ 21 сентября 2012

Попробуйте вставить код 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>
1 голос
/ 02 сентября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...