目录
效果
通过左上角勾选框控件控制叠加或卸载GeoServer发布的多个shapefile,效果如下。
步骤
一、使用GeoServer发布shapefile
1. 在上一篇博客(【Cesium for Unreal】通过GeoServer加载铁路路网)中,已经在GeoServer中发布了四川的铁路路网,现在我们再在GeoServer中发布一个四川的公路路网。(注意:需要将铁路和公路的仓库放在同一个工作空间内)
先将工作空间“railways”改为“ways”

2. 下面开始创建公路仓库和图层
复制如下资源
2. 在“GeoServer/data”中新建一个文件夹,这里命名为“roads”
将复制的资源粘贴到“roads”文件夹中
3. 添加一个新的存储仓库
点击“shapefile”
设置工作空间为“ways”,数据名称为“roads”,Shapefile文件的位置选择“GeoServer/data/roads”中的.shp文件,设置完后点击保存。
点击发布
4. 在编辑图层页面中填写图层命名、图层标题和摘要
点击“从数据中计算”和“Compute from native bounds”
点击“发布”
这里样式使用默认的样式line
设置后点击保存
5. 在图层列表中可以看到此时我们拥有了“railways”和“roads”两个图层,这两个图层的工作空间相同(:之前的),存储仓库可以不同。
6. 在图层预览中可以分别打开“railways”和“roads”图层的“OpenLayers”
可以看到他们的“OpenLayers map preview”中的BaseUrl是相同的,都是“http://localhost:8082/geoserver/ways/wms”
二、在UE中实现多个shapefile的叠加和卸载
1. 选中“Cesium World Terrain”,添加一个“CesiumWebMapServiceRasterOverlay”组件,在该组件中设置“Base Url”为“OpenLayers map preview”中的 “http://localhost:8082/geoserver/ways/wms”,“Layers”设置为“ways:roads”,“Material Layer Key”设置为“Overlay1”。此时可以看到地图上已经显示了公路路网。
如果我们想同时叠加公路和铁路路网,只需要将“Layers”修改为“ways:roads,railways”即可(这里railways图层在roads图层之上,如果改为“ways:railways,roads”则roads图层在railways图层之上)
如果没有生效可以尝试刷新一下
如果要卸载shapefile只需将组件的“Base Url”和“Layer”参数设置为空即可。
三、通过UI界面控制图层显隐
1. 新建一个控件蓝图,添加如下两个勾选框用于控制公路和铁路路网的显隐
设置两个勾选框为变量
在事件图表中,先获取CesiumWorldTerrain和CesiumWebMapServiceRasterOverlay组件的引用
勾选框状态变化时执行如下逻辑
2. 在HUD中创建并显示控件蓝图
运行效果如文章开头所示。