首页 / 浏览问题 / 三维GIS / 问题详情
加载本地kml文件
72EXP 2022年07月11日

加载一个本地kml文件,如果地球只加载在线底图加载本地kml文件是正常的;如果地球加载在线地图在加载上在线地形在加载本地kml文件后图形就不见了,只剩下数据了

不加载 在线地形时的图片:红线显示正常...

图片右下角的红线和数据都加载正常。。。

加载 在线地形时的图片:红线不见了...

为什么kml图形红线不见了。。。。

代码:

 <input className="sm-input" type="file" name="file" accept=".kml" id="inputfile" style={{ height: '33px', paddingTop: '1px' }}  

let f = document.getElementById("inputfile");
    f.addEventListener("change", function (evt) {
      let target = evt.target;
      let file = target.files[0];
      console.log(file,'target');
      if (!file) return;

      Winviewer.dataSources.add(
        Cesium.KmlDataSource.importFile(file, {
          camera: Winviewer.scene.camera,
          canvas: Winviewer.scene.canvas,
          // clampToGround: true //开启贴地
          // clampToS3M: false
        })
      )
        .then(function (dataSource) {
          console.log(dataSource, 'dataSource');
          Winviewer.flyTo(dataSource);
          Winviewer.scene.layer = dataSource;
        });

    });

1个回答

您好,

添加地形后,KML不显示,是由于地形遮挡了KML,建议开启KML贴地,即可解决KML被遮盖不显示的问题。建议参考WebGL示例“四姑娘山登山路线”,设置参数 clampToGround属性设置线是否贴地,默认为flase,不贴地。

建议开启地形深度检测,viewer.scene.globe.depthTestAgainstTerrain = true; //默认为false
开启地形检测后,会计算其他地理要素和地形之间的遮挡关系。未开启时,将会出现场景变化时,地物位置显示不正确。

希望能够帮助到您!

2,169EXP 2022年07月11日
您看我上面代码,我设置过没有用

这两个都加上了也没有用呀;

原生cesium中importFiles也是不支持贴地的,但是load支持贴地,如有importFiles贴地此需求可以私信这边公司信息+联系人联系方式。或者您可采取绘制entity的方式绘制KML。
...