import * as mars3d from "mars3d" export let map // mars3d.Map三维地图对象 let drawLayer let measure // 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并) export const mapOptions = { control: { homeButton: true, sceneModePicker: true, navigationHelpButton: true, infoBox: false, vrButton: true, fullscreenButton: true, geocoder: true, baseLayerPicker: true, clockAnimate: true, // 时钟动画控制(左下角) timeline: true, // 是否显示时间线控件 contextmenu: { hasDefault: true }, // 涉及到多语言的模块:右键菜单 compass: { top: "10px", left: "5px" }, distanceLegend: { left: "180px", bottom: "30px" }, locationBar: { fps: true, template: "
lng:{lng}
lat:{lat}
alt:{alt} m
level:{level}
heading:{heading}°
pitch:{pitch}°
cameraHeight:{cameraHeight}m
" } }, lang: mars3d.LangType.EN // 使用英文 } export const eventTarget = new mars3d.BaseClass() /** * 初始化地图业务,生命周期钩子函数(必须) * 框架在地图初始化完成后自动调用该函数 * @param {mars3d.Map} mapInstance 地图对象 * @returns {void} 无 */ export function onMounted(mapInstance) { map = mapInstance map.toolbar.style.bottom = "55px" // 修改toolbar控件的样式 // 涉及到多语言的模块:标绘提示 drawLayer = new mars3d.layer.GraphicLayer({ hasEdit: true, isAutoEditing: true // 绘制完成后是否自动激活编辑 }) map.addLayer(drawLayer) drawLayer.bindContextMenu([ { text: map.getLangText("_删除"), icon: "fa fa-trash-o", show: (event) => { const graphic = event.graphic if (!graphic || graphic.isDestroy) { return false } else { return true } }, callback: function (e) { const graphic = e.graphic if (!graphic) { return } const parent = graphic._parent // 右击是编辑点时 drawLayer.removeGraphic(graphic) if (parent) { drawLayer.removeGraphic(parent) } } } ]) // 涉及到多语言的模块:图上量算 measure = new mars3d.thing.Measure({ // 可设置文本样式 label: { color: "#ffffff", font_family: "楷体", font_size: 20, background: false } }) map.addThing(measure) } /** * 释放当前地图业务的生命周期函数 * @returns {void} 无 */ export function onUnmounted() { map = null } export function distance() { drawLayer.stopDraw() measure.distance() } export function area() { drawLayer.stopDraw() measure.area() } export function height() { drawLayer.stopDraw() measure.heightTriangle() } export function coordinate() { drawLayer.stopDraw() measure.point() } export function angle() { drawLayer.stopDraw() measure.angle() } /** *开始标绘 * * @export startDraw * @param { string } type 矢量数据类型 * @returns {void} 无 */ export function startDraw(type) { measure.stopDraw() drawLayer.startDraw({ type: type, style: { color: "#00ffff", opacity: 0.6 } }) }