export let map
let tiles3dLayer
export const eventTarget = new mars3d.BaseClass()
export function onMounted(mapInstance) {
map = mapInstance
map.fixedLight = true
Cesium.Resource.ReplaceUrl = function (url) {
if (url.endsWith(".json") || url.endsWith(".b3dm")) {
return url.replace(/\+/gm, "%2B")
} else {
return url
}
}
}
export function onUnmounted() {
map = null
removeLayer()
}
function removeLayer() {
if (tiles3dLayer) {
map.basemap = 2021
map.removeLayer(tiles3dLayer, true)
tiles3dLayer = null
}
}
export function chkHasTerrain(isStkTerrain) {
map.hasTerrain = isStkTerrain
}
export function chkTestTerrain(val) {
map.scene.globe.depthTestAgainstTerrain = val
}
export function showModel(modelUrl) {
removeLayer()
if (!modelUrl) {
return
}
tiles3dLayer = new mars3d.layer.TilesetLayer({
url: modelUrl,
maximumScreenSpaceError: 1,
highlight: {
type: mars3d.EventType.click,
color: "#00FF00"
},
popup: "all",
flyTo: true
})
map.addLayer(tiles3dLayer)
tiles3dLayer.on(mars3d.EventType.load, function (event) {
console.log("模型加载完成", event)
})
}
export function setTranslation(x, y, z) {
const translation = Cesium.Cartesian3.fromArray([x, y, z])
const modelMatrix = Cesium.Matrix4.fromTranslation(translation)
tiles3dLayer.tileset.modelMatrix = modelMatrix
const position = mars3d.PointUtil.getPositionByHprAndOffset(tiles3dLayer.position, new Cesium.Cartesian3(x, y, z))
const point = mars3d.LngLatPoint.parse(position)
console.log("新坐标为", point)
}
console