import * as mars3d from "mars3d"
|
|
export let map // mars3d.Map三维地图对象
|
let tilesetLayer
|
let tilesetBoxClip
|
|
const Cesium = mars3d.Cesium
|
export const mapOptions = {
|
scene: {
|
center: { lat: 31.842844, lng: 117.251112, alt: 125, heading: 6, pitch: -36 }
|
}
|
}
|
|
export const eventTarget = new mars3d.BaseClass() // 事件对象,用于抛出事件到面板中
|
|
/**
|
* 初始化地图业务,生命周期钩子函数(必须)
|
* 框架在地图初始化完成后自动调用该函数
|
* @param {mars3d.Map} mapInstance 地图对象
|
* @returns {void} 无
|
*/
|
export function onMounted(mapInstance) {
|
map = mapInstance // 记录map
|
|
// 模型
|
tilesetLayer = new mars3d.layer.TilesetLayer({
|
name: "教学楼",
|
url: "//data.mars3d.cn/3dtiles/bim-daxue/tileset.json",
|
position: { lng: 117.251229, lat: 31.844015, alt: 31.2 },
|
maximumScreenSpaceError: 16,
|
maximumMemoryUsage: 1024,
|
flyTo: true
|
})
|
map.addLayer(tilesetLayer)
|
}
|
|
/**
|
* 释放当前地图业务的生命周期函数
|
* @returns {void} 无
|
*/
|
export function onUnmounted() {
|
map = null
|
}
|
|
export function drawExtent() {
|
tilesetBoxClip.clear()
|
map.graphicLayer.clear()
|
|
map.graphicLayer.startDraw({
|
type: "box",
|
style: {
|
color: "#ffffff",
|
opacity: 0.2,
|
dimensions: new Cesium.Cartesian3(10, 10, 10)
|
},
|
success: function (graphic) {
|
map.graphicLayer.clear()
|
const point = graphic.point
|
tilesetBoxClip.position = point
|
eventTarget.fire("hasDraw", { point })
|
}
|
})
|
}
|
|
// 演示数据
|
export function tilesetBoxClipDemo(point) {
|
tilesetBoxClip = new mars3d.thing.TilesetBoxClip({
|
layer: tilesetLayer,
|
position: point,
|
dimensions: new Cesium.Cartesian3(20, 10, 15),
|
showBox: true,
|
edgeColor: Cesium.Color.GREY,
|
edgeWidth: 2.0,
|
clipOutSide: false
|
})
|
map.addThing(tilesetBoxClip)
|
}
|
|
// 是否显示盒子
|
export function showModelMatrix(val) {
|
tilesetBoxClip.showBox = val
|
}
|
|
// X长度改变
|
export function onChangeDimensionsX(newValue) {
|
tilesetBoxClip.dimensions.x = newValue
|
tilesetBoxClip.redraw()
|
}
|
|
// Y长度改变
|
export function onChangeDimensionsY(newValue) {
|
tilesetBoxClip.dimensions.y = newValue
|
tilesetBoxClip.redraw()
|
}
|
|
// Z长度改变
|
export function onChangeDimensionsZ(newValue) {
|
tilesetBoxClip.dimensions.z = newValue
|
tilesetBoxClip.redraw()
|
}
|
|
// 坐标发生改变
|
export function onChangePosition(point) {
|
tilesetBoxClip.position = point
|
}
|
|
// 清除
|
export function clear() {
|
tilesetBoxClip.clear()
|
}
|