Cesium-Examples/examples/cesiumEx/1.14、倾斜摄影单体.html
2025-05-20 14:52:40 +08:00

99 lines
4.5 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.

<!--********************************************************************
* by jiawanlong
*********************************************************************-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="./../../libs/cesium/Cesium1.98/Widgets/widgets.css">
<script type="text/javascript" src="./../../libs/cesium/Cesium1.98/Cesium.js"></script>
</head>
<body style="margin: 0; overflow: hidden; background: #fff; width: 100%; height: 100%; position: absolute; top: 0">
<div id="map" style="margin: 0 auto; width: 100%; height: 100%"></div>
<script type="text/javascript">
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjM2EzNGJmNy02N2RmLTQ0MDMtYjI2MS1hZTJiMTIwZGYwMTYiLCJpZCI6MzA0MzEyLCJpYXQiOjE3NDc3MjM3MTV9.ePQNhuoVuDsi_z00lTm5W26wyW1Adcr1AWetGM6WSXI'
const viewer = new Cesium.Viewer('map', {});
// 开启帧率
viewer.scene.debugShowFramesPerSecond = true;
const tileset = new Cesium.Cesium3DTileset({
url: "./data/tileset.json",
});
tileset.readyPromise
.then(function (tileset) {
viewer.scene.primitives.add(tileset);
viewer.zoomTo(tileset)
})
.catch(function (error) {
console.log(error);
});
// 0、取消默认的单击和双击事件右上角弹窗很丑
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
// handler.setInputAction(function (clickEvent) {
// // 经纬度坐标
// var position = viewer.scene.camera.pickEllipsoid(clickEvent.position, viewer.scene.globe.ellipsoid);
// var cartesian3 = new Cesium.Cartesian3(position.x, position.y, position.z)
// var cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian3);
// var lat = Cesium.Math.toDegrees(cartographic.latitude);
// var lng = Cesium.Math.toDegrees(cartographic.longitude);
// // 获取被点击的实体
// var ray1 = viewer.camera.getPickRay(clickEvent.position);
// var cartesian = viewer.scene.globe.pick(ray1, viewer.scene);
// var pick = viewer.scene.pickPosition(clickEvent.position);
// var pickEd = viewer.scene.pick(clickEvent.position);
// if (pickEd && pick) {
// // console.log(pickEd)
// var r = 255;
// var g = 255;
// var b = 255;
// var a = 0.99;
// tileset.style = new Cesium.Cesium3DTileStyle({ color: "color('rgba(" + r + "," + g + "," + b + ", " + a + ")')" })
// }
// }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
/*鼠标移动选择开始*/
var silhouetteBlue = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();
silhouetteBlue.uniforms.color = Cesium.Color.BLUE;
silhouetteBlue.uniforms.length = 0.01;
silhouetteBlue.selected = [];
var silhouetteGreen = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();
silhouetteGreen.uniforms.color = Cesium.Color.LIME;
silhouetteGreen.uniforms.length = 0.01;
silhouetteGreen.selected = [];
viewer.scene.postProcessStages.add(Cesium.PostProcessStageLibrary.createSilhouetteStage([silhouetteBlue, silhouetteGreen]));
viewer.screenSpaceEventHandler.setInputAction(function onMouseMove(movement) {
var pickedFeature = viewer.scene.pick(movement.endPosition);
if (Cesium.defined(pickedFeature)) {
if (pickedFeature == silhouetteGreen.selected[0]) {
silhouetteBlue.selected = [];
} else {
silhouetteBlue.selected = [pickedFeature];
}
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
viewer.screenSpaceEventHandler.setInputAction(function leftClick(movement) {
var pickedFeature = viewer.scene.pick(movement.position);
if (Cesium.defined(pickedFeature)) {
silhouetteGreen.selected = [pickedFeature];
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
/*鼠标移动选择结束*/
</script>
</body>
</html>