将OpenLayers Map异步加载到SharePoint页面上

时间:2012-08-18 08:12:15

标签: jquery sharepoint asynchronous openlayers

我有一个在SharePoint页面上构建的OpenLayers地图。一切正常,但地图需要一段时间才能加载,因此冻结页面的其余部分直到完成。此地图适用于我们的主页,在我解决此问题之前无法添加。

我已经尝试使用JQuery .load和.ajax来加载带有所有标记的html文件,但是当尝试加载OpenLayers.js时,这两个文件都会出现“拒绝访问”错误。解决此问题的方法是首先包含正在进行.load或.ajax调用的SharePoint页面中的所有.js文件。使用.done()方法,我会将检索到的源代码添加到页面上的占位符DIV。运行.done()方法后,页面加载将冻结,直到完成。

我知道一旦ajax调用返回响应,它仍然必须将对象添加到占位符DIV并将标记和图层构建到OpenLayers地图上,从而导致冻结。

我尝试使用OpenLayers地图加载iframe,但它会冻结页面,直到它完全加载。

在将openlayers地图及其所有组件加载到页面之前,有没有办法完全加载它?可能在另一个窗口?使用网络服务?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

OpenLayers需要一个dom元素(div)来创建地图,所以你无法创建没有div元素的地图。

我能想到的唯一优化是你加载OpenLayers库和在页面底部创建地图的代码,在页面上的所有其他html下面。这样,在加载页面的其余部分之前,脚本不会开始执行。对于一般的javascript,这是一种非常常见的最佳做法,不仅仅是OpenLayers。

如果您正在使用WebParts打包地图并且绝对不能在页面底部放置地图,那么您可能需要创建2个WebParts - 一个可以渲染div-elemnt的地方另一个导入OpenLayers库并运行渲染地图的javascript。