Files
sdk4_demo/example/二三维.html
2025-07-03 15:12:58 +08:00

427 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- <script src="https://cesium.com/downloads/cesiumjs/releases/1.125/Build/Cesium/Cesium.js"></script> -->
<script src="../sdk/YJEarth.min.js"></script>
<script src="vue.js"></script>
<style>
body {
width: 100%;
height: 100%;
margin: 0;
}
#app {
display: flex;
width: 100%;
height: 100vh;
}
.btns {
position: absolute;
left: 10px;
top: 10px;
z-index: 9;
}
</style>
</head>
<body>
<div id="app" class="fullSize">
<div class="btns">
<button class="button" @Click="open">二三维</button>
<button class="button" @Click="PointObject"></button>
<button class="button" @Click="PolylineObject">线</button>
<button class="button" @Click="PolygonObject"></button>
<button class="button" @Click="AttackArrowObject">箭头面</button>
<button class="button" @Click="AssembleObject">集结地</button>
<button class="button" @Click="CircleObject"></button>
<button class="button" @Click="SectorObject">扇形</button>
<button class="button" @Click="PolyhedronObject">多边体</button>
<button class="button" @Click="StraightArrowObject">直线箭头面</button>
<button class="button" @Click="PincerArrowObject">双箭头面</button>
<button class="button" @Click="WallStereoscopic">围墙</button>
<button class="button" @Click="WaterSurface">水面</button>
<button class="button" @Click="RadarScan">扫描</button>
<button class="button" @Click="Explosion">爆炸</button>
<!-- <button class="button" @Click="Graffiti">涂鸦</button> -->
<button class="button" @Click="GroundSvg">军标</button>
<button class="button" @Click="Flame">火焰</button>
<button class="button" @Click="GroundText">贴地文字</button>
<button class="button" @Click="TrajectoryMotion">轨迹运动</button>
<button class="button" @Click="Layer">底图</button>
<button class="button" @Click="Tileset">倾斜摄影</button>
<button class="button" @Click="test">2D</button>
</div>
</div>
</body>
</html>
<script>
new Vue({
el: "#app",
data: {
},
async mounted() {
await YJ.on()
this.createEarth()
setTimeout(async () => {
let shp = await new YJ.Obj.Vector(this.sdk1, {
id: '1111111',
host: 'http://127.0.0.1:8891',
path: 'Z:/000测试格式/shp多级.kml',
field: 'id',
// opacity: 0.2,
// color: '#00c8ff'
})
await shp.on()
window.shp = shp
}, 3000);
},
methods: {
test() {
this.sdk1.viewer.scene.mode = Cesium.SceneMode.SCENE2D
},
open() {
// this.sdk2 = new YJ.YJEarth("app")
// this.sdk1.viewer.scene.mode = Cesium.SceneMode.SCENE2D
if (this.view2D) {
new YJ.Global.multiViewportMode.off(this.sdk1)
}
else {
new YJ.Global.multiViewportMode.on(this.sdk1)
}
this.view2D = !this.view2D
},
async createEarth() {
this.sdk1 = await new YJ.YJEarth("app")
let openLeftClick = await new YJ.Global.openLeftClick(this.sdk1)
let openRightClick = await new YJ.Global.openRightClick(this.sdk1)
window.sdk1 = this.sdk1
YJ.Global.CesiumContainer(this.sdk1, {
compass: true, // 罗盘
legend: true, // 比例尺
info: true, // 信息栏
frame: true // 刷新率
})
// let terrain = await new YJ.Obj.Terrain(sdk1, {
// url: "http://127.0.0.1:8891/yjearth4.0/data/pak/1aa55c41643a44e079c4a6af03fd301c"
// })
// setTimeout(() => {
// let layer = new YJ.Obj.ArcgisWXImagery(this.sdk1, {
// id: 123,
// show: true,
// layer_index: 1
// })
// // setTimeout(() => {
// // layer.show = false
// // }, 4000);
// }, 4000);
console.log(this.sdk1)
setTimeout(() => {
let switchCluster = new YJ.Global.switchCluster(this.sdk1, true)
}, 1000);
},
PointObject() {
let Draw = new YJ.Draw.DrawPoint(this.sdk1)
Draw.start((a, positions) => {
let PointObject = new YJ.Obj.BillboardObject(this.sdk1, {
positions: { ...positions },
label: {
text: '标注点',
},
})
PointObject.onClick = (v) => {
console.log(v)
}
PointObject.edit(true)
PointObject.Dialog.removeCallBack = (v) => {
PointObject.remove()
}
window.PointObject = PointObject
})
},
PolylineObject() {
let Draw = new YJ.Draw.DrawPolyline(this.sdk1)
Draw.start((a, positions) => {
let PolylineObject = new YJ.Obj.PolylineObject(this.sdk1, { type: 1, positions: positions })
PolylineObject.edit(true)
PolylineObject.flyTo()
PolylineObject.Dialog.removeCallBack = (v) => {
PolylineObject.remove()
}
})
},
PolygonObject() {
let Draw = new YJ.Draw.DrawPolygon(this.sdk1)
Draw.start((a, positions) => {
let PolygonObject = new YJ.Obj.PolygonObject(this.sdk1, { show: true, positions: positions })
PolygonObject.edit(true)
PolygonObject.onClick = (v) => {
console.log(v)
}
window.PolygonObject = PolygonObject
})
},
AttackArrowObject() {
let Draw = new YJ.Draw.DrawAttackArrow(this.sdk1)
Draw.start((a, positions) => {
let AttackArrowObject = new YJ.Obj.AttackArrowObject(this.sdk1, { positions: positions })
AttackArrowObject.edit(true)
AttackArrowObject.flyTo()
AttackArrowObject.Dialog.removeCallBack = (v) => {
AttackArrowObject.remove()
}
})
},
AssembleObject() {
let Draw = new YJ.Draw.DrawAssemble(this.sdk1)
Draw.start((a, positions) => {
let AssembleObject = new YJ.Obj.AssembleObject(this.sdk1, {
label: {
show: true
}, positions: positions
})
AssembleObject.edit(true)
AssembleObject.flyTo()
AssembleObject.Dialog.removeCallBack = (v) => {
AssembleObject.remove()
}
})
},
SectorObject() {
let Draw = new YJ.Draw.DrawSector(this.sdk1)
Draw.start((a, options) => {
let SectorObject = new YJ.Obj.SectorObject(this.sdk1, {
center: options.center, //中心坐标
radius: options.radius, //半径
startAngle: options.startAngle, //起始角度
endAngle: options.endAngle, //结束角度
})
SectorObject.Dialog.removeCallBack = () => {
SectorObject.remove()
}
SectorObject.edit(true)
SectorObject.flyTo()
})
},
CircleObject() {
let Draw = new YJ.Draw.DrawCircle(this.sdk1)
Draw.start((a, options) => {
let CircleObject = new YJ.Obj.CircleObject(this.sdk1, { center: options.center, radius: options.radius })
CircleObject.Dialog.removeCallBack = () => {
CircleObject.remove()
}
CircleObject.edit(true)
CircleObject.flyTo()
})
},
PolyhedronObject() {
let Draw = new YJ.Draw.DrawPolygon(this.sdk1)
Draw.start((a, positions) => {
let PolyhedronObject = new YJ.Obj.PolyhedronObject(this.sdk1, { positions })
PolyhedronObject.edit(true)
PolyhedronObject.Dialog.removeCallBack = (v) => {
PolyhedronObject.remove()
}
PolyhedronObject.flyTo()
})
},
StraightArrowObject() {
let Draw = new YJ.Draw.DrawStraightArrow(this.sdk1)
Draw.start((a, positions) => {
console.log(positions)
let StraightArrowObject = new YJ.Obj.StraightArrowObject(this.sdk1, { positions })
StraightArrowObject.edit(true)
StraightArrowObject.Dialog.removeCallBack = (v) => {
StraightArrowObject.remove()
}
StraightArrowObject.flyTo()
})
},
PincerArrowObject() {
let Draw = new YJ.Draw.DrawPincerArrow(this.sdk1)
Draw.start((a, positions) => {
let PincerArrowObject = new YJ.Obj.PincerArrowObject(this.sdk1, { positions })
PincerArrowObject.edit(true)
PincerArrowObject.Dialog.removeCallBack = (v) => {
PincerArrowObject.remove()
}
PincerArrowObject.flyTo()
})
},
WallStereoscopic() {
let Draw = new YJ.Draw.DrawPolyline(this.sdk1)
Draw.start((a, positions) => {
let WallStereoscopic = new YJ.Obj.WallStereoscopic(this.sdk1, { color: "#00d9ff", width: 10000, height: 100000, extrudedHeight: 0, cornerType: "ROUNDED", positions: positions })
WallStereoscopic.edit(true)
WallStereoscopic.Dialog.removeCallBack = (v) => {
WallStereoscopic.remove()
}
})
},
WaterSurface() {
let Draw = new YJ.Draw.DrawPolygon(this.sdk1)
Draw.start((a, positions) => {
let WaterSurface = new YJ.Obj.WaterSurface(this.sdk1, {
name: '水面',
positions: positions,
color: "#214387",
frequency: 10,
animationSpeed: 1,
amplitude: 100
},
{
removeCallBack: () => {
WaterSurface.remove()
}
}
)
WaterSurface.edit(true)
WaterSurface.flyTo()
})
},
RadarScan() {
let Draw = new YJ.Draw.DrawPoint(this.sdk1)
Draw.start((a, position) => {
let RadarScan = new YJ.Obj.RadarScan(this.sdk1, { show: true, lng: position.lng, lat: position.lat, color: "#ff0000", radius: 150, duration: 2000 })
RadarScan.flyTo()
RadarScan.edit(true)
})
},
Explosion() {
let Draw = new YJ.Draw.DrawPoint(this.sdk1)
Draw.start((a, positions) => {
//爆炸效果
let explosion = new YJ.Obj.Explosion(this.sdk1, {
position: positions
})
explosion.Dialog.removeCallBack = () => {
explosion.remove()
}
explosion.edit(true)
explosion.flyTo()
})
},
Graffiti() {
let Graffiti = new YJ.Obj.Graffiti(this.sdk1)
},
GroundSvg() {
let Draw = new YJ.Draw.DrawPoint(this.sdk1)
Draw.start((a, positions) => {
let GroundSvg = new YJ.Obj.GroundSvg(this.sdk1, {
url: './image/军标完整svg/2、装备与设施/6、航空器svg/预警机.svg',
position: positions,
})
GroundSvg.load(() => {
// GroundSvg.edit(true)
GroundSvg.drag(true)
// GroundSvg.flyTo()
// GroundSvg.Dialog.removeCallBack = () => {
// GroundSvg.remove()
// }
})
window.GroundSvg = GroundSvg
})
},
Flame() {
let Draw = new YJ.Draw.DrawPoint(this.sdk1)
Draw.start((a, positions) => {
let Flame = new YJ.Obj.Flame(this.sdk1, {
url: "./image/smoke.png",
...positions
})
Flame.flyTo()
Flame.edit(true)
Flame.Dialog.removeCallBack = () => {
Flame.remove()
}
})
},
GroundText() {
let Draw = new YJ.Draw.DrawPoint(this.sdk1)
Draw.start((a, positions) => {
let GroundText = new YJ.Obj.GroundText(this.sdk1, {
position: positions,
text: '他说她的绿色玻璃雨衣像一只瓶\n又注了一句“药瓶。”\n她以为他在那里讽嘲她的孱弱\n然而他又附耳加了一句\n“你就是医我的药。”\n她红了脸白了他一眼'
})
GroundText.flyTo()
window.GroundText = GroundText
})
},
TrajectoryMotion() {
let Draw = new YJ.Draw.DrawPolyline(this.sdk1)
Draw.start((a, positions) => {
let TrajectoryMotion = new YJ.Obj.TrajectoryMotion(this.sdk1, {
name: '轨迹运动',
loop: true,
show: true,
id: 1111,
state: false,
model: {
show: true,
url: "model/tank.glb",
pixelSize: 70,
scale: 1,
},
line: {
show: false,
positions: positions,
noseToTail: true,
smooth: true
}
},
{
changeModelCallBack: () => {
TrajectoryMotion.changeModelUrl('model/tank2.glb')
}
}
)
console.log(TrajectoryMotion)
TrajectoryMotion.flyTo()
TrajectoryMotion.edit(true)
TrajectoryMotion.onClick = () => {
// alert(1)
TrajectoryMotion.edit(true)
}
window.TrajectoryMotion = TrajectoryMotion
})
},
async Layer() {
let layer = new YJ.Obj.ArcgisWXImagery(this.sdk1, {
id: 111,
show: true,
layer_index: 1
})
window.layer = layer
},
async Tileset() {
let tileset = new YJ.Obj.Tileset(this.sdk1, {
show: true,
name: 'xxx',
url: "http://localhost:8891/yjearth4.0/data/tileset/24b9be7e2cdfa679b3a77c6c51b47bdc/tileset.json",
position: { lng: 100, lat: 40, alt: 50 },
})
await tileset.on()
tileset.flyTo()
// setTimeout(() => {
// tileset.show = false
// }, 5000);
}
}
})
</script>