qa-prevention-gwj-vue/static/map/index.html

131 lines
4.8 KiB
HTML
Raw Normal View History

2023-12-17 15:30:40 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- Include the CesiumJS JavaScript and CSS files -->
<!--Cesium js文件引入 -->
<!-- <script src="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Cesium.js"></script>-->
<!-- <link href="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Widgets/widgets.css" rel="stylesheet">-->
<script src="./cesium/Cesium.js"></script>
<script src="http://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js" ></script>
<link href="./cesium/widgets.css" rel="stylesheet"/>
</head>
<style>
*{
margin: 0;
padding: 0;
}
#cesiumContainer{
width: 100vw;
height: 100vh;
}
</style>
<body>
<!-- 视图显示容器 -->
<div id="cesiumContainer"></div>
<script>
var tiandituTk='e8a16137fd226a62a23cc7ba5c9c78ce';
var subdomains=['0','1','2','3','4','5','6','7'];
// 注册密钥: https://cesium.com/ion/tokens.
// 账号密钥
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkOWQ0MGYwMy0yODUwLTQ1YzktOGM4OC02MTMwY2UyZjNlMzQiLCJpZCI6MTY0NTUwLCJpYXQiOjE2OTM4OTU1Mjd9.1cC0sSzyj79LZv0ILNCcl0Mabw6hl8TNngFNFr7H8f4';
// 初始化容器 (容器:`cesiumContainer`
const viewer = new Cesium.Viewer('cesiumContainer', {
// terrainProvider: Cesium.createWorldTerrain()
animation:false, //动画
homeButton:true, //home键
geocoder:true, //地址编码
baseLayerPicker:false, //图层选择控件
timeline:false, //时间轴
fullscreenButton:true, //全屏显示
infoBox:true, //点击要素之后浮窗
sceneModePicker:true, //投影方式 三维/二维
navigationInstructionsInitiallyVisible:false, //导航指令
navigationHelpButton:false, //帮助信息
selectionIndicator:false, // 选择
imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
//影像底图
url: "http://t{s}.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk="+tiandituTk,
subdomains: subdomains,
layer: "tdtImgLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",//使用谷歌的瓦片切片方式
show: true
})
});
viewer._cesiumWidget._creditContainer.style.display = "none"; // 隐藏cesium ion
viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
//影像注记
url: "http://t{s}.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk="+tiandituTk,
subdomains: subdomains,
layer: "tdtCiaLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
show: true
}));
// 添加资源
const buildingTileset = viewer.scene.primitives.add(Cesium.createOsmBuildings());
// 视图缩放至加载资源位置
viewer.camera.flyTo({
//设置中心点,x,y,缩放等级
destination: Cesium.Cartesian3.fromDegrees(119.60, 39.94, 178500),
orientation: {
heading : Cesium.Math.toRadians(348.4202942851978),
pitch : Cesium.Math.toRadians(-89.74026687972041),
roll : Cesium.Math.toRadians(0)
},
complete:function callback() {
// 定位完成之后的回调函数
}
});
// 添加图标
viewer.entities.add({
id: 'id',
position: Cesium.Cartesian3.fromDegrees(119.60, 39.94),
billboard: {
image: './operation-icon.png',
height: 50,
width: 50,
}
})
const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
handler.setInputAction(function (movement) {
let pick = viewer.scene.pick(movement.position);
if (Cesium.defined(pick) && (pick.id.id)) {
const div=document.createElement("div")
div.id = pick.id.id;
div.style.position = "absolute";
div.style.width = "300px";
div.style.height = "30px";
div.style.background = "#00ffef66";
div.style.border = "1px solid #08f8a7";
div.innerText = `${pick.id.id}弹出`;
viewer.cesiumWidget.container.appendChild(div);
viewer.scene.postRender.addEventListener(() => {
const canvasHeight = viewer.scene.canvas.height;
const windowPosition = new Cesium.Cartesian2();
Cesium.SceneTransforms.wgs84ToWindowCoordinates(
viewer.scene,
Cesium.Cartesian3.fromDegrees(119.60, 39.94),
windowPosition
);
div.style.bottom = canvasHeight - windowPosition.y + 20 + "px";
const elWidth = div.offsetWidth;
div.style.left = windowPosition.x - elWidth / 2 + "px";
});
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
</script>
</body>
</html>