import * as mars3d from "mars3d" export let map // mars3d.Map三维地图对象 // 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并) export const mapOptions = { scene: { center: { lat: 31.752136, lng: 117.269021, alt: 3782, heading: 338, pitch: -23 } }, terrain: { show: false } } /** * 初始化地图业务,生命周期钩子函数(必须) * 框架在地图初始化完成后自动调用该函数 * @param {mars3d.Map} mapInstance 地图对象 * @returns {void} 无 */ export function onMounted(mapInstance) { map = mapInstance // 记录首次创建的map map.basemap = 2017 // 蓝色底图 globalMsg("文件数据较大,正在加载数据,请稍等片刻……") showLoading() const colorHash = { 10: "#FFEDA0", 15: "#FED976", 20: "#FEB24C", 25: "#FD8D3C", 30: "#FC4E2A", 35: "#E31A1C", 40: "#BD0026", 450000: "#800026" } const geoJsonLayer = new mars3d.layer.GeoJsonLayer({ name: "建筑物面", url: "//data.mars3d.cn/file/geojson/buildings-hf.json", symbol: { type: "polygonCombine", // 大数据面类型,效率高 styleOptions: { color: "#0d3685", opacity: 1.0, outline: false }, callback: function (attr, styleOpt) { const floor = Number(attr.floor || 1) const diffHeight = floor * 5 for (const key in colorHash) { if (floor <= parseInt(key)) { return { height: 0, diffHeight: diffHeight, color: colorHash[key] } } } return { height: 0, diffHeight: diffHeight } } }, popup: "all" }) map.addLayer(geoJsonLayer) // 绑定事件 geoJsonLayer.on(mars3d.EventType.load, function (event) { console.log("数据加载完成", event) hideLoading() // 关闭 }) // 在layer上绑定监听事件 geoJsonLayer.on(mars3d.EventType.click, function (event) { const pickedItem = event.graphic.attr console.log("单击了合并对象中的单个值为", pickedItem) }) } /** * 释放当前地图业务的生命周期函数 * @returns {void} 无 */ export function onUnmounted() { map = null }