You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cesium/ZGZU/index - 副本.html

532 lines
12 KiB
HTML

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>
<!-- Use correct character set. -->
<meta charset="utf-8" />
<!-- Tell IE to use the latest, best version. -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<title>广州飞行情报区ZGZU</title>
<script src="/Cesium/Cesium.js"></script>
<style>
@import url(/Cesium/Widgets/widgets.css);
html,
body,
#cesiumContainer {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
.cesium-viewer-geocoderContainer,
.cesium-home-button,
.cesium-sceneModePicker-wrapper,
.cesium-navigationHelpButton-wrapper{
display:none !important;
}
.cesium-viewer-bottom{
display:none
}
</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script>
const czml = [
{
id: "document",
name: "CZML Point",
version: "1.0",
},
{
id: "Point 1",
name: "各达山",
position: {
cartographicDegrees: [105.541667, 23.195833, 10],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
label: {
text: "各达山",
font: "24px Helvetica",
fillColor:Cesium.Color.BLACK, //字体颜色
showBackground:true, //是否显示背景颜色
backgroundColor:Cesium.Color.AQUA, //背景颜色
backgroundPadding: new Cesium.Cartesian2(25,75),
style: Cesium.LabelStyle.FILL_AND_OUTLINE , //label样式
verticalOrigin : Cesium.VerticalOrigin.TOP ,//垂直位置
horizontalOrigin :Cesium.HorizontalOrigin.LEFT,//水平位置
pixelOffset:new Cesium.Cartesian2(25,75), //偏移
},
},
{
id: "Point 2",
name: "旧州",
position: {
cartographicDegrees: [105.8, 24.65, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 3",
name: "基长",
position: {
cartographicDegrees: [107.65, 25.7, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 4",
name: "同古",
position: {
cartographicDegrees: [109.3166667, 26.58333333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 5",
name: "比耳",
position: {
cartographicDegrees: [109.3833333, 28.78333333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 6",
name: "来凤",
position: {
cartographicDegrees: [109.4, 29.51666667, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 7",
name: "岳阳",
position: {
cartographicDegrees: [113.12, 29.38333333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 8",
name: "修水",
position: {
cartographicDegrees: [114.5666667, 29.03333333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 9",
name: "宁冈",
position: {
cartographicDegrees: [113.95, 26.7, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 10",
name: "高坪",
position: {
cartographicDegrees: [114.1166667, 26.05, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 11",
name: "赣州",
position: {
cartographicDegrees: [114.8733333, 25.76666667, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 12",
name: "点",
position: {
cartographicDegrees: [115.4166667, 25.09166667, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 13",
name: "点",
position: {
cartographicDegrees: [115.4008333, 24.67333333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 14",
name: "大埔",
position: {
cartographicDegrees: [116.7, 24.36666667, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 15",
name: "诏安",
position: {
cartographicDegrees: [117.1833333, 23.7, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 16",
name: "点",
position: {
cartographicDegrees: [117.5, 23.5, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 17",
name: "点",
position: {
cartographicDegrees: [117.5, 23, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 18",
name: "点",
position: {
cartographicDegrees: [115.6666667, 22.40833333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 19",
name: "点",
position: {
cartographicDegrees: [114.5, 22.40833333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 20",
name: "点",
position: {
cartographicDegrees: [113.8666667, 22.35833333, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 21",
name: "点",
position: {
cartographicDegrees: [111.5, 19.5, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 22",
name: "点",
position: {
cartographicDegrees: [111.5, 20.5, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 23",
name: "点",
position: {
cartographicDegrees: [108.05, 20.5, 0],
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 24",
name: "点",
position: {
cartographicDegrees: [108.2086111, 21.20972222, 0],
},
label: {
text: "Point 24",
font: "24px Helvetica",
color: {
rgba: [0, 0, 0, 255],
},
fillColor: Cesium.Color.SKYBLUE,
outlineColor: Cesium.Color.BLACK,
outlineWidth: 2,
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
},
point: {
color: {
rgba: [0, 0, 0, 255],
},
pixelSize: 6,
},
},
{
id: "Point 25",
name: "漳州机场",
position: {
cartographicDegrees: [117.65469408873497,24.561665899584984, 0],
},
label: {
text: "漳州机场",
font: "24px Helvetica",
color: {
rgba: [0, 0, 0, 255],
},
fillColor: Cesium.Color.BLUE,
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
},
point: {
color: {
rgba: [0, 255, 255, 255],
},
pixelSize: 6,
},
},
{
id: "Point26",
name: "点",
position: {
cartographicDegrees: [117.5002778,24.13416667, 0],
},
point: {
// 点的大小(像素)
pixelSize: 5,
// 点位颜色fromCssColorString 可以直接使用CSS颜色
color: Cesium.Color.RED,
// 边框颜色
outlineColor: Cesium.Color.fromCssColorString('#fff'),
// 边框宽度(像素)
outlineWidth: 2,
// 显示在距相机的距离处的属性,多少区间内是可以显示的
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 1500),
// 是否显示
show: true
},
},
];
var viewer = new Cesium.Viewer("cesiumContainer");
// 假设已经有一个Cesium.Viewer实例叫做`viewer`
viewer.camera.setView({
destination:Cesium.Cartesian3.fromDegrees(116.46,39.92,10000000.0),
}); // 设置初始位置
// 创建一个Polyline实例
var polyline = viewer.entities.add({
name:"广州飞行情报区ZGZU",
polyline: {
positions: Cesium.Cartesian3.fromDegreesArray([
105.541667, 23.195833,
105.8, 24.65,
107.65, 25.7,
109.3166667, 26.58333333,
109.3833333, 28.78333333,
109.4, 29.51666667,
113.12, 29.38333333,
114.5666667, 29.03333333,
113.95, 26.7,
114.1166667, 26.05,
114.8733333, 25.76666667,
115.4166667, 25.09166667,
115.4008333, 24.67333333,
116.7, 24.36666667,
117.1833333, 23.7,
117.5, 23.5,
117.5, 23,
115.6666667, 22.40833333,
114.5, 22.40833333,
113.8666667, 22.35833333,
111.5, 19.5,
111.5, 20.5,
108.05, 20.5,
108.2086111, 21.20972222,
105.541667, 23.195833,
]),
width: 4,
material: Cesium.Color.fromCssColorString('#ccc')
}
});
viewer.zoomTo(viewer.entities);
const dataSourcePromise = Cesium.CzmlDataSource.load(czml);
viewer.dataSources.add(dataSourcePromise);
viewer.zoomTo(dataSourcePromise);
viewer.baseLayerPicker.viewModel.selectedImagery = viewer.baseLayerPicker.viewModel.imageryProviderViewModels[4];
</script>
<script>
/**
* @description: 获取当前鼠标点击位置坐标
* @return {*}
*/
function getClickPoint(viewer) {
// 屏幕点击事件
console.log(111)
var pointsCollection = []; // 标记点集合,方便后续将标记的点进行清除;
viewer.screenSpaceEventHandler.setInputAction((evt) => {
var ray = viewer.camera.getPickRay(evt.position);
var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
if(Cesium.defined(cartesian)){
var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
// console.log(cartesian, cartographic)
var lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度值
var lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度值
var height = cartographic.height;
var entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(lng, lat, height),
label: { //文字标签
text: 'Lon: '+lng.toFixed(5)+'\u00B0'+'\nLat: '+lat.toFixed(5)+'\u00B0'+'\nheight: '+height.toFixed(2)+'m',
font: '20px monospace', //15pt monospace
fillColor: Cesium.Color.BLACK, //文字颜色
scale: 1,
style: Cesium.LabelStyle.FILL,
pixelOffset: new Cesium.Cartesian2(-90, -30), //偏移量
showBackground: true,
backgroundColor: Cesium.Color.AQUA.withAlpha(1),
backgroundPadding: new Cesium.Cartesian2(17, 10),
horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
disableDepthTestDistance:Number.POSITIVE_INFINITY,
},
point:{
color:Cesium.Color.RED,
pixelSize:9,
outlineColor:Cesium.Color.ALICEBLUE,
outlineWidth:2,
disableDepthTestDistance:Number.POSITIVE_INFINITY,
},
})
pointsCollection.push(entity);
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
viewer.screenSpaceEventHandler.setInputAction(function(){
// 删除标记点
pointsCollection.forEach(function (item) {
if (item instanceof Cesium.Entity) {
viewer.entities.remove(item);
}
})
// 清除左键点击标记事件
viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
}
</script>
</body>
</html>