"Saving" 一个 OpenLayers 会话,以便可以恢复

"Saving" an OpenLayers session so that it can be restored

我正在构建一个 Web 界面,允许用户从 GeoServer 上传图层并对数据执行空间操作。因此,该地图由预加载的底图和用户加载的数据组成。

我希望用户能够 "save" 他的会话,以便他稍后可以回来恢复它。我计划在用户进入界面时添加一个登录菜单。

我的界面完全是用 ExtJS 6 和 OpenLayers3 构建的。

任何人都已经做过类似的事情并且可以给我一个关于如何保存会话并在以后恢复它的线索吗?

谢谢!

我用 ExtJS6 和 OL2 做了类似的事情。

我定义了一个包含 OpenLayers 地图 (MapPanel) 的 Ext.panel.Panel。 MapPanel 有 stateful:true,有一个 stateId 和一些自定义状态事件(中心、缩放和图层可见性)。

然后只需覆盖 MapPanel 的 getState 和 setState 函数即可保存和恢复地图状态。

您可以使用 extjs CookieProvider 来存储状态,或者您可以创建一个提供程序将其保存到数据库或其他任何地方..

在 OL 尺寸上,注册地图事件(图层添加、地图移动、缩放更改)并将这些更改反映到 MapPanel。

请参阅 CookieProvider 和有状态的 extjs 文档以了解如何实现它。