/*
* 模型主类
* @Author: jianlei wang
* @Date: 2024-02-26 17:02:30
* @Last Modified by: jianlei wang
* @Last Modified time: 2024-08-27 10:35:48
*/
import {
load3Dtiles,
load3DtilesOnPos,
updatePos,
} from '../../utils/layers/3DTiles'
import { loadGltfEntity } from '../../utils/layers/Model'
/**
* 模型主类
* @class
*/
class Model {
/**
* 构造函数
* @param {Object} viewer - 地图场景对象
*/
constructor(viewer) {
this._viewer = viewer
}
/**
* 加载3Dtiles模型
* @param {String} url - 模型地址
* @param {Number} [height=0] - 可选:高度偏差,正数为向上偏,负数为向下偏,根据真实的模型位置不断进行调整
* @returns {Promise<Primitive>} 模型对象,Primitive类对象,参考Cesium
*/
async add3DTiles(url, height = 0) {
const model = await load3Dtiles(this._viewer, url, height)
return model
}
/**
* 加载3Dtiles模型到指定位置
* @param {String} url - 模型地址
* @param {DegreePosZ} position - 设置模型位置,WGS84经纬度格式
* @returns {Promise<Primitive>} 模型对象,Primitive类对象,参考Cesium
*/
async add3DTilesOnPos(url, position) {
const model = await load3DtilesOnPos(this._viewer, url, position)
return model
}
/**
* 调整模型位置
* @param {Primitive} model 待调整模型对象
* @param {DegreePosZ} position 设置模型位置,WGS84经纬度格式
* @returns {Primitive} 模型对象,Primitive类对象,参考Cesium
*/
update3DTiles(model, position) {
const { x, y, z } = position
updatePos(model, z, x, y)
return model
}
/**
* 加载gltf/glb模型
* @param {String} url GLTF/GLB模型地址URL
* @param {Cartesian3} position 加载位置坐标,笛卡尔坐标
* @param {GltfOption} options 模型参数设置
* @returns {Entity} 加载后的模型对象,Entity类对象,参考Cesium
*/
addGltf(url, position, options) {
const model = loadGltfEntity(this._viewer, url, position, options)
return model
}
}
export default Model