0

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

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

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

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

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

任何帮助将不胜感激。

4

1 回答 1

0

OpenLayers 需要一个 dom 元素(div)来创建地图,因此没有 div 元素就无法创建地图。

我能想到的唯一优化是您加载 OpenLayers 库和在页面底部创建地图的代码,在页面上的所有其他 html 下方。这样,在页面的其余部分加载之前,脚本不会开始执行。这是一个非常普遍的 JavaScript 最佳实践,不仅仅是 OpenLayers。

如果您使用 WebParts 来打包地图并且绝对不能在页面底部有地图,那么您可能必须创建 2 个 WebParts - 一个在要呈现地图的位置呈现 div-elemnt,另一个在导入 OpenLayers 库并运行呈现地图的 javascript。

于 2012-08-20T08:48:31.193 回答