cesium地图中加载KML数据文件

绘制自定义样式

    // 加载Kml数据
    setKmlData() {
      // let kmlUrl = "../../assets/kml/111.kml";
      let kmlUrl = "鄯乌线.kml";
      let kmlDataPromise = Cesium.KmlDataSource.load(kmlUrl, {
        camera: window.cesiumViewer.scene.camera,
        canvas: window.cesiumViewer.scene.canvas,
        clampToGround: true, // 默认贴地
        screenOverlayContainer: window.cesiumViewer.container,
      });
      kmlDataPromise.then((dataSource) => {
        window.cesiumViewer.dataSources.add(dataSource);
        var entities = dataSource.entities.values;
        for (let i = 0; i < entities.length; i++) {
          var entity = entities[i];
          entity.polyline.show = true;
          entity.polyline.width = 3;
          //1、发光线性
          entity.polyline.material = new Cesium.PolylineGlowMaterialProperty({
            glowPower: 0.5,
            color: Cesium.Color.BLUE,
          })
          // 2、箭头线
          entity.polyline.material = new Cesium.PolylineArrowMaterialProperty(Cesium.Color.RED)
          // 3、轮廓线
          entity.polyline.material = new Cesium.PolylineOutlineMaterialProperty({
            color: Cesium.Color.BLUE,
            outlineWidth: 20,
            outlineColor: Cesium.Color.RED
          })
        }
      });
    },

纯文件数据

// 创建加载Kml数据
    setKmlData(kmlUrl) {
      if (kmlUrl) {
        let option = {
          camera: window.cesiumViewer.scene.camera,
          canvas: window.cesiumViewer.scene.canvas,
          clampToGround: true, //默认贴地
          screenOverlayContainer: window.cesiumViewer.container,
        }
        // 检查相应KML文件是否已加载
        const kmlFileIndex = this.kmlFiles.findIndex(file => file.url === kmlUrl);
        this.$nextTick(() => {
          let kmlDataPromise = Cesium.KmlDataSource.load(kmlUrl, option);
          kmlDataPromise.then((dataSource) => {
            if (kmlFileIndex === -1) {
              // KML文件未加载,执行加载操作
              window.cesiumViewer.dataSources.add(dataSource);
              // 将加载的KML文件标记为已加载
              this.kmlFiles.push({ url: kmlUrl, dataSource: dataSource });
            }
            var entities = dataSource.entities.values;
            for (let i = 0; i < entities.length; i++) {
              var entity = entities[i];
              if (entity.position) {
                var cartographicPosition = Cesium.Cartographic.fromCartesian(entity.position.getValue(Cesium.JulianDate.now()));
                var latitude = Cesium.Math.toDegrees(cartographicPosition.latitude);
                var longitude = Cesium.Math.toDegrees(cartographicPosition.longitude);
                let params = { longitude: longitude, latitude: latitude }
                this.setMapCenter(params) //定位到kml数据所在位置
              }
            }
          });
        })
      }
    },
    
  • 23
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值