我的目标是使用外部JS文件加载OpenLayers地图。在头部我有一个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我可以看到这个代码被调用,并且它使用它的所有属性初始化map对象。我还可以看到它正在调用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>
哪个有效,但感觉就像一个软糖。
有没有办法从外部javascript文件初始化OpenLayers地图?
我的window.onload=init;
解决方案有什么问题吗?
如果我必须与HTML内联,那么还有更好的方法吗?
答案 0 :(得分:5)