“保存”OpenLayers会话,以便可以恢复它

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

本文关键字:恢复 保存 OpenLayers 会话      更新时间:2023-09-26

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

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

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

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

谢谢!

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

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

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

您可以使用extjs CookieProvider来存储状态,也可以创建一个将其保存到数据库或其他任何内容的提供程序。

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

请参阅 CookieProvider 和 stateful 的 extjs 文档,了解如何实现它。