import * as mars3d from "mars3d"
|
|
export let map // mars3d.Map三维地图对象
|
|
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
|
export const mapOptions = {
|
scene: {
|
center: { lat: 31.823874, lng: 117.223976, alt: 3509, heading: 0, pitch: -90 }
|
},
|
control: {
|
baseLayerPicker: false
|
}
|
}
|
|
/**
|
* 构造bloom效果对象
|
* @type {mars3d.BloomEffect}
|
*/
|
let bloomEffect
|
|
// 事件对象,用于抛出事件给面板
|
export const eventTarget = new mars3d.BaseClass()
|
|
/**
|
* 初始化地图业务,生命周期钩子函数(必须)
|
* 框架在地图初始化完成后自动调用该函数
|
* @param {mars3d.Map} mapInstance 地图对象
|
* @returns {void} 无
|
*/
|
export function onMounted(mapInstance) {
|
map = mapInstance // 记录首次创建的map
|
|
// 构造bloom效果 用于滑动条测试
|
bloomEffect = new mars3d.effect.BloomEffect()
|
map.addEffect(bloomEffect)
|
|
eventTarget.fire("init", {
|
value: 10
|
})
|
queryTilesetData()
|
}
|
|
/**
|
* 释放当前地图业务的生命周期函数
|
* @returns {void} 无
|
*/
|
export function onUnmounted() {
|
map.graphicLayer.clear()
|
map.removeEffect(bloomEffect, true)
|
bloomEffect = null
|
map = null
|
}
|
|
// 绘制矩形(演示map.js与index.vue的交互)
|
export function drawExtent() {
|
map.graphicLayer.clear()
|
// 绘制矩形
|
map.graphicLayer.startDraw({
|
type: "rectangle",
|
style: {
|
fill: true,
|
color: "rgba(255,255,0,0.2)",
|
outline: true,
|
outlineWidth: 2,
|
outlineColor: "rgba(255,255,0,1)"
|
},
|
success: function (graphic) {
|
const rectangle = mars3d.PolyUtil.formatRectangle(graphic._rectangle_draw)
|
eventTarget.fire("drawExtent", { extent: JSON.stringify(rectangle) }) // 抛出事件,可以组件中去监听事件
|
}
|
})
|
}
|
|
// 是否运行地图鼠标交互
|
export function enableMapMouseController(value) {
|
map.setSceneOptions({
|
cameraController: {
|
enableZoom: value,
|
enableTranslate: value,
|
enableRotate: value,
|
enableTilt: value
|
}
|
})
|
}
|
|
// 调整亮度 (演示滑动条)
|
export function updateBrightness(val) {
|
bloomEffect.brightness = val
|
}
|
|
// 调整对比度 (演示滑动条)
|
export function updateContrast(val) {
|
bloomEffect.contrast = val
|
}
|
|
// 创建图层
|
export function createLayer(layer) {
|
return mars3d.LayerUtil.create(layer)
|
}
|
|
// 数据获取
|
function queryTilesetData() {
|
mars3d.Util.fetchJson({ url: "config/tileset.json" })
|
.then(function (arr) {
|
const modelData = arr.layers
|
eventTarget.fire("loadTypeList", { modelData })
|
})
|
.catch(function (error) {
|
console.log("加载JSON出错", error)
|
})
|
}
|