Инициализация карты openlayers из внешнего файла Javascript - PullRequest
3 голосов
/ 06 января 2011

Моя цель - загрузить карту OpenLayers, используя внешний файл JS. В голове у меня есть библиотека jQuery, а в теле у меня есть библиотека OpenLayers, мой код Openlayers и тег div.

<script type="text/javascript" src="http://example.com/OpenLayers.js"></script>
<script type="text/javascript" src="http://example.com/MyMapScript.js"></script>
<div id="map"></div>

Однако у меня нет доступа к тегу body, поэтому я не могу запустить onload="init()", как работает большинство примеров.

Вместо этого в нижней части MyMapScript.js я добавил строку ниже.

jQuery(window).load(init());

Это где-то немного странно. Используя Firebug, я вижу, что этот код вызывается и что он инициализирует объект карты со всеми его свойствами. Я также вижу, что он вызывает сервер WMS и успешно получает все фрагменты карты. Однако на самом деле он ничего не рисует на странице, и никакие дополнительные элементы div не добавляются в HTML.

На этой странице рассказывается о похожей проблеме, но я не уверен, как применить ее к моей ситуации, поскольку для меня на самом деле вызывается init() http://bytes.com/topic/javascript/answers/855670-unusual-behavior-function-calls-java-script

Решение, которое я нашел в конце, состоит в том, чтобы сделать это.

<script type="text/javascript" src="http://example.com/OpenLayers.js"></script>
<script type="text/javascript" src="http://example.com/MyMapScript.js"></script>
<script type="text/javascript"> window.onload=init; </script>
<div id="map"></div>

Что работает, но похоже на выдумку.

Есть ли способ инициализировать карту OpenLayers из внешнего файла javascript? Что-то не так с моим решением window.onload=init;? Если я должен сделать это в соответствии с HTML, есть ли лучший способ сделать это?

1 Ответ

5 голосов
/ 06 января 2011

Я сам исправил проблему.Мой исходный код работал отлично, кроме двух вещей.Мне не хватало ширины и высоты тега div, и я упорядочил операторы так, чтобы div шел после файлов javascript, а не раньше.

Это должно было выглядеть так.

<div id="map" style="width:400px; height:400px;"></div>    
<script type="text/javascript" src="http://example.com/OpenLayers.js"></script>
<script type="text/javascript" src="http://example.com/MyMapScript.js"></script>
...