OpenLayers:调用GeoServer发布的WMS服务

OpenLayers:调用GeoServer发布的WMS服务

前言

本文记录如何通过WMS服务加载发布于GeoServer上的图层,所以环境的搭建就不再赘述,没有安装GeoServer的可以移步GeoServer的安装与初步使用

正文

安装好geoserver,进入首页,点击登录后可以进入如下页面:
在这里插入图片描述

通过以上方式可以打开如下页面:通过这个url我们可以看到很多有用的信息,发起的请求为wms请求(service=WMS),version=1.1.0表明使用的是1.1.0版本的wms请求,request=GetMap可以看出使用的是wms服务的GetMap方法,请求的图层是 topp:states…… 这个url可以获取到很多有用的信息
在这里插入图片描述

接下来,就可以准备通过WMS服务加载这个图层了,具体的代码实现如下:

/** 加载发布在geoserver上面的地图 */
loadGeoserverMap() {
    const geoserverLayer = new TileLayer({
        source: new TileWMS({
            url: 'http://localhost:8080/geoserver/topp/wms', // 请求地址
            params: { // 请求的参数设置,其余参数可以不设置,使用默认的参数
                LAYERS: 'topp:states', // 请求的图层名
                VERSION: '1.1.0', // wms请求的版本,也可用1.3.0
            }
        })
    });
    this.map.addLayer(geoserverLayer); // 加载图层到地图上
},

全部代码如下:(需搭建vue环境以及下载ol的依赖包)

<template>
  <div class="map-box" id="mapBox"></div>
</template>
<script>
import Map from 'ol/Map';
import View from 'ol/View';
import { Tile as TileLayer } from 'ol/layer';
import { defaults as defaultControl } from 'ol/control'
import XYZ from 'ol/source/XYZ';
import TileWMS from 'ol/source/TileWMS';
export default {
  data() {
    return {
      map: null,
    }
  },
  mounted() {
    this.initMap(); // 初始化地图
  },
  methods: {
    /** 初始化地图 */
    initMap() {
      this.map = new Map({
        controls: new defaultControl({ // 地图控件
          zoom: false, // 清除放大缩小控件
          rotate: false, // 清除旋转地图控件
        }),
        view: new View({
          center: [-99.58, 39.46], // 地图初始化后的中心点
          projection: 'EPSG:4326', // 默认是EPSG:3857
          zoom: 5,
        }),
        layers: [
          new TileLayer({
            source: new XYZ({
              url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}', // 高德地图
            }),
          }),
        ],
        target: 'mapBox',
      });
      this.loadGeoserverMap(); // 加载发布在geoserver上面的地图
    },
    /** 加载发布在geoserver上面的地图 */
    loadGeoserverMap() {
      const geoserverLayer = new TileLayer({
        source: new TileWMS({
          url: 'http://localhost:8080/geoserver/topp/wms', // 请求地址
          params: { // 请求的参数设置,其余参数可以不设置,使用默认的参数
            LAYERS: 'topp:states', // 请求的图层名
            VERSION: '1.1.0', // wms请求的版本,也可用1.3.0
          }
        })
      });
      this.map.addLayer(geoserverLayer); // 加载图层到地图上
    },
  },
}
</script>
<style lang="less" scoped>
.map-box {
  width: 100%;
  height: 100%;
}
</style>

最终呈现效果如下:
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值