M3DTileDataInfo Class

M3DTileDataInfo()

Fx构造函数

# new M3DTileDataInfo()

M3D-图层类型枚举,该枚举是针对的G3DLayerType.g3dCacheLayer的二级分类

作者:
  • 基础平台-潘卓然

查看源代码 service/Igserver/G3D/G3dEnum.js, line 67

Example
let tilset = scene.primitives.add(new Cesium.MapGISM3DSet({
     url : 'http://localhost:6163/M3D/layer/文件格式.mcj'
    }));
let type = tileset._content._dataType;
   // 如果是树形结构,并且只在后面的节点又对应的数据,则需要遍历节点才能获取对应的的类型
   export function loopM3ds(m3ds, callback) {
        const vm = this;
        let dataCallback = cbtype => {
            if (loop) {
            window.clearInterval(loop);
            loop = undefined;
            let types = [];
            m3ds.forEach(m3d => {
                let type = checkType(m3d);
                m3d.type = type || cbtype;
                types.push(m3d.type);
                if (callback) {
                callback(types);
                }
            });
            }
        };
        let loop = window.setInterval(() => {
            m3ds.forEach(m3d => {
            checkType(m3d, dataCallback);
            });
        }, 100);
    }

    export function checkType(tileset, callback) {
        const vm = this;
        let m3dType = M3dType.UnKnow;
        const { root } = tileset;
        if (!root) return m3dType;
        const version = root.tileset._version;
        let { children } = root;
        if (version == "0.0" || version == "1.0") {
            // m3d 0.x  1.x版本逻辑判断 type =0是模型 =1是示例化数据 =2是点云
            if (!children || children.length <= 0) return m3dType;
            children.forEach(child => {
            let tempType = checkTypeNode(child, version, callback);
            m3dType = tempType || m3dType;
            });
        } else if (version == "2.0") {
            if (!children || children.length <= 0) return m3dType;
            children.forEach(child => {
            let tempType = checkTypeNode(child, version, callback);
            m3dType = tempType ? tempType : m3dType;
            });
        }

        return m3dType;
    }
    export function checkTypeNode(tileset, version, callback) {
        let m3dType;
        const vm = this;
        if (!tileset) return m3dType;
        if (tileset._content) {
            m3dType = tileset._content._dataType;
        }
        if (callback) {
        callback(m3dType);
      }
      return m3dType;
    }