Fx构造函数
# new M3DTileDataInfo()
M3D-图层类型枚举,该枚举是针对的G3DLayerType.g3dCacheLayer的二级分类
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;
}