10. 多种地图服务(WMS、WMTS、WFS、VectorTi

2023-08-12  本文已影响0人  xueyueshuai

WMS(TileWMS)

import TileLayer from "ol/layer/Tile";
import {TileWMS} from "ol/source";

let getA = ()=>{
  return new TileLayer({
    source: new TileWMS({
      url: 'http://43.143.xxx.xxx:8080/geoserver/one/wms?',
      params: {LAYERS: 'one:base-new', TILED: true},
      projectName: 'EPSG:4326',
    }),
  });
}
export default getA

WMTS

// 天地图,本段代码有错误
  return  new TileLayer({
    source: new WMTS({
      url: 'http://t0.tianditu.gov.cn/img_w/wmts?tk=6d6732d7f432d1a70b3c0c9fc0e4d8fd',
      layer: 'img',
      matrixSet: 'w',
      format: 'tiles',
      tileGrid:new WMTSTileGrid({
        origin: origin,
        resolutions: resolutions,
        matrixIds: matrixIds,
      }),
      version: '1.0.0',
      style: 'default',
      wrapX: true,
      projection
    }),
  });

加载WFS

import VectorLayer from "ol/layer/Vector";
import VectorSource from "ol/source/Vector";
import GeoJSON from "ol/format/GeoJSON";

let xysGetVectorLayer = () => {
  return new VectorLayer({
    name: 'oldBaseLayer',
    visible: true,
    source: new VectorSource({
      url: 'http://43.143.xxx.xxx:8083/geoserver/one/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=one%3Abase-old&maxFeatures=500&outputFormat=application%2Fjson',
      format: new GeoJSON(),
      resultFormat: 'json',
    }),
  })
}

export default xysGetVectorLayer

wfs + cql_filter

&cql_filter="name"='钱塘区'

cql_filter

<template>
  <div>
  </div>
</template>

<script>

export default {
  name: 'xys-study-cql_filter',
  data() {
    return {}
  },
  mounted() {
    let str2Unicode = (str) => {
      let unicodeStr = '';
      for (let i = 0; i < str.length; i++) {
        const char = str.charAt(i);
        const codePoint = char.charCodeAt(0);
        if (codePoint >= 0x4e00 && codePoint <= 0x9fa5) {
          // 仅处理中文字符,其他字符保持不变
          unicodeStr += `\\u${codePoint.toString(16).toUpperCase().padStart(4, '0')}`;
        } else {
          // 非中文字符保持不变
          unicodeStr += char;
        }
      }
      return unicodeStr;
    }

    let test = (str) => {
      // 处理str
      str = encodeURIComponent(str2Unicode(str))

      // 发起请求
      let url = 'http://localhost:8899/geoserver/one/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=one:province&maxFeatures=1000000&outputFormat=application%2Fjson&cql_filter=' + str
      fetch(url).then(res => res.json()).then(jsonData => {
        jsonData.features.forEach(v => {
          console.log(v.properties)
        })
      })
    }

    test(`"CODE"='110000000'`)
    test(`"NAME" like '%河北%'`)
    test(`"省份名" like '%新疆%'`)
  }
}
</script>

<style lang="scss" scoped>
</style>
上一篇下一篇

猜你喜欢

热点阅读