openlayers - 如何将 WMS 添加到 OpenLayers 5.3.0?
问题描述
我正在尝试将 WMS 叠加层集成到我的默认 OpenLayers 地图上。仅使用ol.source.OSM({})
图层可以很好地呈现地图,但是当我将 WMS 图层添加到layers: []
数组时,它只会给我一个空白地图。我正在使用以下代码,但它不起作用,我需要更改什么?
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" type="text/css">
<style>
.map {
height: 100%;
width: 100%;
}
</style>
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js"></script>
<title>OpenLayers example</title>
</head>
<body>
<h2>WMS Map</h2>
<div id="map" class="map"></div>
<script type="text/javascript">
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile(
{
source: new ol.source.OSM({})
}),
new ol.layer.ImageWMS(
{
source: new ol.source.ImageWMS(
{
url: 'http://www.igeo.pt/WMS/Geologia/CGP1M'
})
})
],
view: new ol.View(
{
center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4
})
});
</script>
</body>
</html>
解决方案
您可以查看该 URL 的 GetCapabilities http://www.igeo.pt/WMS/Geologia/CGP1M?SERVICE=WMS&REQUEST=GetCapabilities
有 17 个层,名称为 1 到 20(缺少 3、13 和 18),带有葡萄牙语描述. 万一您希望所有设置如下所示(注意图层构造函数很简单ol.layer.Image
,Lon/Lat 顺序,我已将其设为半透明,因此背景仍然可见)
new ol.layer.Tile(
{
source: new ol.source.OSM({})
}),
new ol.layer.Image(
{
source: new ol.source.ImageWMS(
{
url: 'http://www.igeo.pt/WMS/Geologia/CGP1M',
params: { LAYERS: '1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,19,20'}
}),
opacity: 0.5
})
],
view: new ol.View(
{
center: ol.proj.fromLonLat([-8.82, 37.41]),
zoom: 4
})
在全屏地图上,在平铺区域请求 WMS 通常更有效,以避免在平移时不断请求整个区域
new ol.layer.Tile(
{
source: new ol.source.TileWMS(
{
url: 'http://www.igeo.pt/WMS/Geologia/CGP1M',
params: { LAYERS: '1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,19,20'}
}),
opacity: 0.5
})
推荐阅读
- javascript - 正确设置扩展运算符的 babel 插件
- jquery - 无法在 select2 打开事件上禁用键盘弹出
- java - 我的代码中出现运行时错误。当我输入字母时,只有布尔有效值变为真
- c# - 使用 Collider2D.IsTouchingLayers 检测运动学刚体与静态刚体的碰撞
- ubuntu - Perforce安装,客户端未知
- python - 在python 3中结合while和if else
- excel - 无法识别的数据库格式(opendatabase 错误)
- mysql - mysql 5.7(percona)上的慢速删除表
- dart - Dart 的 HttpRequest 中的“进度事件”错误是什么?
- ios - 我的 Alembic 文件 (.abc) 中的模型具有扁平的节点层次结构,并且在 iOS 中缺少面孔