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

131 lines
4.8 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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>