import * as mars3d from "mars3d"
|
|
export let map // mars3d.Map三维地图对象
|
|
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
|
export const mapOptions = {
|
scene: {
|
center: { lat: 31.817534, lng: 117.219389, alt: 308, heading: 110, pitch: -24 }
|
}
|
}
|
|
/**
|
* 初始化地图业务,生命周期钩子函数(必须)
|
* 框架在地图初始化完成后自动调用该函数
|
* @param {mars3d.Map} mapInstance 地图对象
|
* @returns {void} 无
|
*/
|
export function onMounted(mapInstance) {
|
map = mapInstance // 记录map
|
|
// 创建Graphic图层
|
const graphicLayer = new mars3d.layer.GraphicLayer()
|
map.addLayer(graphicLayer)
|
|
// 加一些演示数据
|
addDemoGraphic1(graphicLayer)
|
addDemoGraphic2(graphicLayer)
|
addDemoGraphic3(graphicLayer)
|
}
|
|
/**
|
* 释放当前地图业务的生命周期函数
|
* @returns {void} 无
|
*/
|
export function onUnmounted() {
|
map = null
|
}
|
|
// 喷泉效果
|
function addDemoGraphic1(graphicLayer) {
|
const particleSystem = new mars3d.graphic.ParticleSystem({
|
position: Cesium.Cartesian3.fromDegrees(117.224855, 31.815135, 28.05), // 位置
|
style: {
|
image: "./img/particle/penquan.png",
|
startColor: new Cesium.Color(1, 1, 1, 0.6), // 粒子出生时的颜色
|
endColor: new Cesium.Color(0.8, 0.86, 1, 0.4), // 当粒子死亡时的颜色
|
|
particleSize: 4, // 粒子图片的Size大小(单位:像素)
|
startScale: 1.0, // 粒子在出生时的比例(单位:相对于imageSize大小的倍数)
|
endScale: 4.0, // 粒子在死亡时的比例(单位:相对于imageSize大小的倍数)
|
|
minimumParticleLife: 6, // 粒子可能存在的最短寿命时间,实际寿命将随机生成(单位:秒)
|
maximumParticleLife: 7, // 粒子可能存在的最长寿命时间,实际寿命将随机生成(单位:秒)
|
|
minimumSpeed: 9.0, // 粒子初速度的最小界限,超过该最小界限,随机选择粒子的实际速度。(单位:米/秒) ???
|
maximumSpeed: 9.5, // 粒子初速度的最大界限,超过该最大界限,随机选择粒子的实际速度。(单位:米/秒)
|
|
emissionRate: 40 // 粒子发射器的发射速率 (单位:次/秒)
|
// lifetime: 16, //粒子的一个生命周期长度(单位:秒) ???
|
},
|
transZ: 5, // 离地高度
|
gravity: -3.5, // 重力因子,会修改速度矢量以改变方向或速度(基于物理的效果)
|
maxHeight: 5000, // 超出该高度后不显示粒子效果
|
attr: { remark: "示例1" }
|
})
|
|
graphicLayer.addGraphic(particleSystem)
|
}
|
|
// 火炬效果
|
function addDemoGraphic2(graphicLayer) {
|
const particleSystem = new mars3d.graphic.ParticleSystem({
|
position: Cesium.Cartesian3.fromDegrees(117.225518, 31.815549, 28.28), // 位置
|
style: {
|
image: "./img/particle/fire2.png",
|
startColor: new Cesium.Color(1, 1, 1, 1), // 粒子出生时的颜色
|
endColor: new Cesium.Color(0.5, 0, 0, 0), // 当粒子死亡时的颜色
|
// sizeInMeters: true,
|
|
particleSize: 5, // 粒子图片的Size大小(单位:像素)
|
startScale: 3.0, // 粒子在出生时的比例(单位:相对于imageSize大小的倍数)
|
endScale: 1.5, // 粒子在死亡时的比例(单位:相对于imageSize大小的倍数)
|
|
minimumParticleLife: 1.5, // 粒子可能存在的最短寿命时间,实际寿命将随机生成(单位:秒)
|
maximumParticleLife: 1.8, // 粒子可能存在的最长寿命时间,实际寿命将随机生成(单位:秒)
|
|
minimumSpeed: 7.0, // 粒子初速度的最小界限,超过该最小界限,随机选择粒子的实际速度。(单位:米/秒) ???
|
maximumSpeed: 9.0, // 粒子初速度的最大界限,超过该最大界限,随机选择粒子的实际速度。(单位:米/秒)
|
|
emissionRate: 200 // 粒子发射器的发射速率 (单位:次/秒)
|
// lifetime: 16, //粒子的一个生命周期长度(单位:秒) ???
|
},
|
transZ: 5, // 离地高度
|
gravity: 0.0, // 重力因子,会修改速度矢量以改变方向或速度(基于物理的效果)
|
maxHeight: 5000, // 超出该高度后不显示粒子效果
|
attr: { remark: "示例2" }
|
})
|
graphicLayer.addGraphic(particleSystem)
|
}
|
|
// 动态运行车辆的尾气粒子效果
|
function addDemoGraphic3(graphicLayer) {
|
const roamLine = new mars3d.graphic.RoamLine({
|
positions: [
|
[117.226585, 31.818437, 32.41],
|
[117.226838, 31.811681, 28.23]
|
],
|
speed: 120,
|
model: {
|
show: true,
|
url: "//data.mars3d.cn/gltf/mars/qiche.gltf",
|
scale: 0.2
|
},
|
clockLoop: true // 是否循环播放
|
})
|
graphicLayer.addGraphic(roamLine)
|
|
// 启动漫游
|
roamLine.start()
|
|
const particleSystem = new mars3d.graphic.ParticleSystem({
|
modelMatrix: (time) => {
|
return roamLine.modelMatrix
|
},
|
style: {
|
image: "./img/particle/smoke.png",
|
startColor: Cesium.Color.GREY.withAlpha(0.7), // 粒子出生时的颜色
|
endColor: Cesium.Color.WHITE.withAlpha(0.0), // 当粒子死亡时的颜色
|
startScale: 1.0, // 粒子出生时的比例,相对于原始大小
|
endScale: 5.0, // 粒子在死亡时的比例
|
minimumParticleLife: 1.2, // 设置粒子寿命的可能持续时间的最小界限(以秒为单位),粒子的实际寿命将随机生成
|
maximumParticleLife: 1.2, // 设置粒子寿命的可能持续时间的最大界限(以秒为单位),粒子的实际寿命将随机生成
|
minimumSpeed: 1.0, // 设置以米/秒为单位的最小界限,超过该最小界限,随机选择粒子的实际速度。
|
maximumSpeed: 4.0, // 设置以米/秒为单位的最大界限,超过该最大界限,随机选择粒子的实际速度。
|
emissionRate: 20.0, // 每秒要发射的粒子数。
|
lifetime: 16.0 // 粒子的生命周期为(以秒为单位)。
|
},
|
transX: -4.0,
|
transZ: 1.4,
|
maxHeight: 1000, // 超出该高度后不显示粒子效果
|
attr: { remark: "示例3" }
|
})
|
map.graphicLayer.addGraphic(particleSystem)
|
}
|