import * as mars3d from "mars3d" export let map // mars3d.Map三维地图对象 // 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并) export const mapOptions = { scene: { center: { lat: 31.466724, lng: 119.306582, alt: 182294, heading: 359, pitch: -68 } } } /** * 初始化地图业务,生命周期钩子函数(必须) * 框架在地图初始化完成后自动调用该函数 * @param {mars3d.Map} mapInstance 地图对象 * @returns {void} 无 */ export function onMounted(mapInstance) { map = mapInstance // 记录map mars3d.Util.fetchJson({ url: "//data.mars3d.cn/file/apidemo/heat.json" }) .then(function (data) { const arrPoints = [] for (let i = 0; i < data.Data.length; i++) { const item = data.Data[i] arrPoints.push({ lng: item.X, lat: item.Y, value: item.Count }) } showHeatMap(arrPoints) }) .catch(function (error) { console.log("加载JSON出错", error) }) } /** * 释放当前地图业务的生命周期函数 * @returns {void} 无 */ export function onUnmounted() { map = null } function showHeatMap(arrPoints) { // 热力图 图层 const heatLayer = new mars3d.layer.HeatLayer({ positions: arrPoints, // 以下为热力图本身的样式参数,可参阅api:https://www.patrick-wied.at/static/heatmapjs/docs.html heatStyle: { radius: 120, blur: 0.85 }, // 以下为矩形矢量对象的样式参数 style: { opacity: 1.0 // clampToGround: true, }, flyTo: true }) map.addLayer(heatLayer) map.on(mars3d.EventType.mouseMove, (e) => { const point = mars3d.LngLatPoint.fromCartesian(e.cartesian) const data = heatLayer.getPointData(point) const inhtml = ` 经度: ${point.lng}
纬度: ${point.lat}
X值: ${data.x}
Y值: ${data.y}
value值: ${data.value}
颜色:${data.color} ` map.openSmallTooltip(e.windowPosition, inhtml) }) }