Cesium 加載geoserver發(fā)布的WFS點(diǎn)要素服務(wù)

   if (!window.my_labels) {
        window.my_labels = new Cesium.CustomDataSource('my_labels');
        viewer.dataSources.add(window.my_labels);
      }

      let props = {
        wfs_url: "http://IP:PORT/geoserver/sanwei/wfs",//geoserver wfs服務(wù)地址
        wfs_layer: "sanwei:layerName"http://圖層
      }

      let cameraExtent = viewer.camera.computeViewRectangle();//視窗范圍
      let picks = [];
      if (cameraExtent) {
        let west = parseFloat(Cesium.Math.toDegrees(cameraExtent.west).toFixed(8));
        let south = parseFloat(Cesium.Math.toDegrees(cameraExtent.south).toFixed(8));
        let east = parseFloat(Cesium.Math.toDegrees(cameraExtent.east).toFixed(8));
        let north = parseFloat(Cesium.Math.toDegrees(cameraExtent.north).toFixed(8));
        picks = [
          [west, south],
          [east, north]
        ];
      }
      let wfsurl = props.wfs_url + "?service=WFS&version=1.1.0&request=GetFeature&typename=" +
        props.wfs_layer + "&maxFeatures=200&outputFormat=application/json&srsname=EPSG:4326";
      if (picks.length > 0) {
        wfsurl += `&BBOX=${picks[0][0]},${picks[0][1]},${picks[1][0]},${picks[1][1]},EPSG:4326`
      } else {
        //如果沒有獲取到視窗范圍就不繼續(xù)執(zhí)行
        return
      }
      fetch(wfsurl).then(result => {
        if (!result.ok) {
          throw new Error(
            `couldn't load "${result.url}". Request failed with status ${result.status} : ${result.statusText}`
          );
        }
        result.json().then((json) => {
          let { features } = json;
          if (window.my_labels && features && features.length > 0) {
            window.my_labels.entities.removeAll()
            for (let i = 0; i < features.length; i++) {
              let { geometry, properties } = features[i];
              let { coordinates } = geometry;
              window.my_labels.entities.add({
                position: Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]),
                label: {
                  text: properties.areaname || "未知地名",
                  showBackground: true,
                  heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND,
                }
              });
            }
          }
        });
      }).catch(error => {
        return Promise.reject(error);
      }).finally(() => {
      });

1698716806492.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容