2011-01-06 3 views
3

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

<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> 

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

Вместо этого, внизу MyMapScript.js Я добавил строку ниже.

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

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

Эта страница рассказывает о подобной проблеме, но я не уверен, как применить ее к моей ситуации, так как для меня фактически вызывается 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, есть ли лучший способ сделать это?

ответ

5

Я сам исправил проблему. Мой первоначальный код работал отлично, не считая двух вещей. Мне не хватало ширины и высоты на теге 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> 
+1

Отметьте как ответ, хотя вам кажется странным делать свой вопрос. Чтобы помочь другим найти решение. –

+0

Ницца Том - ударил головой об этом в течение 2 дней! просто нужен тот встроенный тег стиля, и я уезжаю! – ErichBSchulz

+0

ой, и я также использовал отложенный рендеринг в этом примере, а не переименование myscripts http://openlayers.org/dev/examples/late-render.html – ErichBSchulz