--- title: 加载WFS服务 date: 2020-03-21 author: ac tags: - WFS - Openlayers categories: - GIS --- ## 1. WFS 详见查看服务标准中的[WFS简述](./wfs.md)。 在`Openlayers`中,加载`WFS`服务使用到的是矢量数据源`ol.source.Vector`来加载数据和矢量图层`ol.layer.Vector`进行渲染。在加载矢量数据时有两种方式(加载服务端的服务): 1. 在初始化矢量数据源`ol.source.Vector`时,使用`url`参数设置服务地址或返回服务地址的函数; 2. 使用`loader`参数的加载函数。 两种方式都是请求`WFS`服务的`GetFeature`接口,将接口的返回的要素集使用对应的解析器`format`解析要素添加到数据源中,最后使用`ol.layer.Vector`渲染矢量要素。 在设置数据源的时候,需要主要一个叫`strategy`的参数。该参数用于配置`WFS`服务的加载策略,可选值有: - `all`(默认值),一次性加载服务中所有的要素; - `bbox`,加载地图当前视图范围内的要素; ## 2. 图层加载 ![olwfsimage1](./images/olwfsimage1.png) ```html OpenLayers example

OGC WFS服务:加载GeoServer的WFS服务

``` ```html OpenLayers example

OGC WFS服务:加载GeoServer的WFS服务

``` ## 3.Tips 在请求WFS服务时,可能会出现跨域问题。 ![image-20201202170444662](./images/image-20201202170444662.png) 解决方式可以在GeoServer中配置跨域支持。 将geoserver-2.18.1\lib中的jetty-servlets-9.4.12.v20180830.jar和jetty-util-9.4.12.v20180830.jar拷贝到geoserver-2.18.1\webapps\geoserver\WEB-INF\lib目录中,再修改geoserver-2.18.1\webapps\geoserver\WEB-INF目录下web.xml文件,将下列的注释取消,重启GeoServer。 ```xml cross-origin org.eclipse.jetty.servlets.CrossOriginFilter chainPreflight false allowedOrigins * allowedMethods GET,POST,PUT,DELETE,HEAD,OPTIONS allowedHeaders * cross-origin /* ```