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
    评论
### 回答1: 要使用OpenLayers调用GeoServer,您需要遵循以下步骤: 1. 在GeoServer中创建图层并发布它们。 2. 在OpenLayers中创建地图并添加GeoServer图层。 3. 配置OpenLayers以连接到GeoServer。 4. 在OpenLayers中设置样式和交互。 5. 运行OpenLayers应用程序并查看GeoServer图层。 这些步骤需要一些编程知识和经验,但是OpenLayersGeoServer都有详细的文档和示例可供参考。 ### 回答2: OpenLayers是一个用于展示地理空间数据的JavaScript库,而Geoserver则是一个开源的地理空间数据服务器,可以实现地图切片、WMS图层等功能。将二者结合起来,可以实现在OpenLayers中展示Geoserver发布的地理空间数据。 下面是调用Geoserver的基本步骤: 1. 在Geoserver发布地理空间数据,例如发布一个Shapefile文件。 2. 在OpenLayers中定义WMS图层,连接到GeoserverWMS服务WMS(Web Map Service)是一种标准的协议,可以实现将地图以图片形式返回给客户端。 下面是一个简单的代码示例,展示如何在OpenLayers调用Geoserver: ``` var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }), new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'http://localhost:8080/geoserver/wms', params: {'LAYERS': 'workspace:layername'}, serverType: 'geoserver' }) }) ], view: new ol.View({ center: ol.proj.fromLonLat([116.3974, 39.9087]), zoom: 13 }) }); ``` 在这个代码示例中,先创建一个OpenLayers地图对象,并使用OSM作为底图。然后创建一个WMS图层,并使用GeoserverWMS服务作为数据源。其中,url参数是GeoserverWMS服务地址,params参数是WMS服务需要的参数,serverType参数指定了数据源是Geoserver。 需要注意的是,其中的workspace和layername应该替换成实际发布的地理空间数据的工作空间名和图层名。 总的来说,使用OpenLayers调用Geoserver可以方便地将地理空间数据展示在网页中,并且在OpenLayers的基础上可以添加更多交互功能,例如绘制、查询等。 ### 回答3: OpenLayers 是一种基于 JavaScript 的开源地图库,可以用来显示并操作地图。而 GeoServer 则是一种基于 Java 的开源地理信息服务器,用于共享空间数据。通过将 OpenLayersGeoServer 结合起来,可以实现动态的地图服务,包括添加、编辑、查询地图数据等。 调用 GeoServerOpenLayers 中的一个常见方式是使用 WMS(Web Map Service)。WMS 是一种用于发布地图数据的标准接口,可以让客户端应用程序按需请求地图图像。在 OpenLayers 中,可以使用 WMS 层从 GeoServer 获取地图图像,并将其显示在地图上。 首先,在 OpenLayers 中创建一个 WMS 图层,需要提供 GeoServerWMS 服务地址以及所需的地图图层。如果 GeoServer 中已经有一些地图图层可用,则可以使用以下代码在 OpenLayers调用对应的图层: ```javascript var wmsLayer = new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'http://localhost:8080/geoserver/wms', params: {'LAYERS': 'workspace:layername'}, serverType: 'geoserver', }) }); ``` 其中,url 参数指定了 GeoServerWMS 地址,params 参数则指定需要显示的地图图层。此外,serverType 参数也必须设置为 geoserver,以便使用 GeoServer 特有的样式编译参数。 除了 WMS 图层外,还可以使用 WFS(Web Feature Service)从 GeoServer 中获取矢量数据。WFS 可以让客户端应用程序通过 Web 接口获取矢量数据,而不仅仅是地图图像。在 OpenLayers 中,可以使用以下代码获取 GeoServer 中的矢量数据: ```javascript var vectorLayer = new ol.layer.Vector({ source: new ol.source.Vector({ format: new ol.format.WFS(), url: function(extent) { return 'http://localhost:8080/geoserver/wfs?' + 'service=WFS&' + 'version=1.1.0&' + 'request=GetFeature&' + 'typename=workspace:layername&' + 'outputFormat=application/json&' + 'srsname=EPSG:3857&' + 'bbox=' + extent.join(',') + ',EPSG:3857'; }, strategy: ol.loadingstrategy.bbox }) }); ``` 上述代码中,url 参数指定了 GeoServer 的 WFS 地址和请求参数,typename 参数则指定所需的矢量图层。此外,格式参数也必须设置为 ol.format.WFS(),以便正确解析矢量数据。此外,可以使用 ol.loadingstrategy.bbox 策略指定在地图可视区域发生变化时获取数据的范围。 综上所述,通过结合 OpenLayersGeoServer,可以实现灵活的地图服务,包括获取并显示地图图像、获取和编辑矢量数据等。这为开发 Web 地图应用程序提供了很大的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值