CesiumJS
-
CesiumJS API:https://cesium.com/learn/cesiumjs/ref-doc/index.html
-
CesiumJS 是一个开源的 JavaScript 库,它用于在网页中创建和控制 3D 地球仪(地图)
一、添加加指定长宽的图片图层并居中显示(原点为图片图层的中心点)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ImageryProvider - 添加指定长宽的图片图层并居中显示(原点为图片图层的中心点)</title>
<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
.container {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
<script>
const viewer = new Cesium.Viewer("container");
// 图片图层的长宽
const imageWidth = 200; // 单位为米
const imageHeight = 100; // 单位为米
// 图片图层的原点
const originLongitude = 0; // 原点经度
const originLatitude = 0; // 原点纬度
// 在赤道上,每度大约对应 111,320 米
const degreesPerMeterAtEquator = 111320;
const longitudeRange = imageWidth / degreesPerMeterAtEquator;
const latitudeRange = imageHeight / degreesPerMeterAtEquator;
const west = originLongitude - longitudeRange / 2; // 西经(西经为负)
const south = originLatitude - latitudeRange / 2; // 南纬(南纬为负)
const east = originLongitude + longitudeRange / 2; // 东经(东经为正)
const north = originLatitude + latitudeRange / 2; // 北纬(北纬为正)
// 创建图片图层
const imageryProvider = new Cesium.SingleTileImageryProvider({
url: "../img/test.jpg",
rectangle: Cesium.Rectangle.fromDegrees(west, south, east, north),
});
viewer.imageryLayers.addImageryProvider(imageryProvider);
// 添加一个点表示原点
const entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(originLongitude, originLatitude),
point: {
pixelSize: 5,
color: new Cesium.Color(0, 1, 0, 1),
},
});
// ----------------------------------------------------------------------------------------------------
// 调整相机视角以查看图片
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(originLongitude, originLatitude, 500),
duration: 2.0,
});
</script>
</html>
二、添加指定长宽的图片图层并居中显示(原点为图片图层的左上角顶点)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ImageryProvider - 添加指定长宽的图片图层并居中显示(原点为图片图层的左上角顶点)</title>
<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
.container {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
<script>
const viewer = new Cesium.Viewer("container");
// 图片图层的长宽
const imageWidth = 200; // 单位为米
const imageHeight = 100; // 单位为米
// 图片图层的原点
const originLongitude = 0; // 原点经度
const originLatitude = 0; // 原点纬度
// 在赤道上,每度大约对应 111,320 米
const degreesPerMeterAtEquator = 111320;
const longitudeRange = imageWidth / degreesPerMeterAtEquator;
const latitudeRange = imageHeight / degreesPerMeterAtEquator;
const west = originLongitude; // 西经(西经为负)
const south = originLatitude - latitudeRange; // 南纬(南纬为负)
const east = originLongitude + longitudeRange; // 东经(东经为正)
const north = originLatitude; // 北纬(北纬为正)
// 创建图片图层
const imageryProvider = new Cesium.SingleTileImageryProvider({
url: "../img/test.jpg",
rectangle: Cesium.Rectangle.fromDegrees(west, south, east, north),
});
viewer.imageryLayers.addImageryProvider(imageryProvider);
// 添加一个点表示原点
const entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(originLongitude, originLatitude),
point: {
pixelSize: 5,
color: new Cesium.Color(0, 1, 0, 1),
},
});
// ----------------------------------------------------------------------------------------------------
const halfImageWidth = imageWidth / 2;
const halfImageHeight = imageHeight / 2;
const halfLongitudeRange = halfImageWidth / degreesPerMeterAtEquator;
const halfLatitudeRange = halfImageHeight / degreesPerMeterAtEquator;
const halfLongitude = originLongitude + halfLongitudeRange;
const halfLatitude = originLatitude - halfLatitudeRange;
// 调整相机视角以查看图片
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(halfLongitude, halfLatitude, 500),
duration: 2.0,
});
</script>
</html>
三、添加指定长宽的图片图层并居中显示(原点为图片图层的右上角顶点)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ImageryProvider - 添加指定长宽的图片图层并居中显示(原点为图片图层的右上角顶点)</title>
<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
.container {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
<script>
const viewer = new Cesium.Viewer("container");
// 图片图层的长宽
const imageWidth = 200; // 单位为米
const imageHeight = 100; // 单位为米
// 图片图层的原点
const originLongitude = 0; // 原点经度
const originLatitude = 0; // 原点纬度
// 在赤道上,每度大约对应 111,320 米
const degreesPerMeterAtEquator = 111320;
const longitudeRange = imageWidth / degreesPerMeterAtEquator;
const latitudeRange = imageHeight / degreesPerMeterAtEquator;
const west = originLongitude - longitudeRange; // 西经(西经为负)
const south = originLatitude - latitudeRange; // 南纬(南纬为负)
const east = originLongitude; // 东经(东经为正)
const north = originLatitude; // 北纬(北纬为正)
// 创建图片图层
const imageryProvider = new Cesium.SingleTileImageryProvider({
url: "../img/test.jpg",
rectangle: Cesium.Rectangle.fromDegrees(west, south, east, north),
});
viewer.imageryLayers.addImageryProvider(imageryProvider);
// 添加一个点表示原点
const entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(originLongitude, originLatitude),
point: {
pixelSize: 5,
color: new Cesium.Color(0, 1, 0, 1),
},
});
// ----------------------------------------------------------------------------------------------------
const halfImageWidth = imageWidth / 2;
const halfImageHeight = imageHeight / 2;
const halfLongitudeRange = halfImageWidth / degreesPerMeterAtEquator;
const halfLatitudeRange = halfImageHeight / degreesPerMeterAtEquator;
const halfLongitude = originLongitude - halfLongitudeRange;
const halfLatitude = originLatitude - halfLatitudeRange;
// 调整相机视角以查看图片
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(halfLongitude, halfLatitude, 500),
duration: 2.0,
});
</script>
</html>
四、添加指定长宽的图片图层并居中显示(原点为图片图层的左下角顶点)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ImageryProvider - 添加指定长宽的图片图层并居中显示(原点为图片图层的左下角顶点)</title>
<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
.container {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
<script>
const viewer = new Cesium.Viewer("container");
// 图片图层的长宽
const imageWidth = 200; // 单位为米
const imageHeight = 100; // 单位为米
// 图片图层的原点
const originLongitude = 0; // 原点经度
const originLatitude = 0; // 原点纬度
// 在赤道上,每度大约对应 111,320 米
const degreesPerMeterAtEquator = 111320;
const longitudeRange = imageWidth / degreesPerMeterAtEquator;
const latitudeRange = imageHeight / degreesPerMeterAtEquator;
const west = originLongitude; // 西经(西经为负)
const south = originLatitude; // 南纬(南纬为负)
const east = originLongitude + longitudeRange; // 东经(东经为正)
const north = originLatitude + latitudeRange; // 北纬(北纬为正)
// 创建图片图层
const imageryProvider = new Cesium.SingleTileImageryProvider({
url: "../img/test.jpg",
rectangle: Cesium.Rectangle.fromDegrees(west, south, east, north),
});
viewer.imageryLayers.addImageryProvider(imageryProvider);
// 添加一个点表示原点
const entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(originLongitude, originLatitude),
point: {
pixelSize: 5,
color: new Cesium.Color(0, 1, 0, 1),
},
});
// ----------------------------------------------------------------------------------------------------
const halfImageWidth = imageWidth / 2;
const halfImageHeight = imageHeight / 2;
const halfLongitudeRange = halfImageWidth / degreesPerMeterAtEquator;
const halfLatitudeRange = halfImageHeight / degreesPerMeterAtEquator;
const halfLongitude = originLongitude + halfLongitudeRange;
const halfLatitude = originLatitude + halfLatitudeRange;
// 调整相机视角以查看图片
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(halfLongitude, halfLatitude, 500),
duration: 2.0,
});
</script>
</html>
五、添加指定长宽的图片图层并居中显示(原点为图片图层的右下角顶点)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ImageryProvider - 添加指定长宽的图片图层并居中显示(原点为图片图层的右下角顶点)</title>
<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
.container {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
<script>
const viewer = new Cesium.Viewer("container");
// 图片图层的长宽
const imageWidth = 200; // 单位为米
const imageHeight = 100; // 单位为米
// 图片图层的原点
const originLongitude = 0; // 原点经度
const originLatitude = 0; // 原点纬度
// 在赤道上,每度大约对应 111,320 米
const degreesPerMeterAtEquator = 111320;
const longitudeRange = imageWidth / degreesPerMeterAtEquator;
const latitudeRange = imageHeight / degreesPerMeterAtEquator;
const west = originLongitude - longitudeRange; // 西经(西经为负)
const south = originLatitude; // 南纬(南纬为负)
const east = originLongitude; // 东经(东经为正)
const north = originLatitude + latitudeRange; // 北纬(北纬为正)
// 创建图片图层
const imageryProvider = new Cesium.SingleTileImageryProvider({
url: "../img/test.jpg",
rectangle: Cesium.Rectangle.fromDegrees(west, south, east, north),
});
viewer.imageryLayers.addImageryProvider(imageryProvider);
// 添加一个点表示原点
const entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(originLongitude, originLatitude),
point: {
pixelSize: 5,
color: new Cesium.Color(0, 1, 0, 1),
},
});
// ----------------------------------------------------------------------------------------------------
const halfImageWidth = imageWidth / 2;
const halfImageHeight = imageHeight / 2;
const halfLongitudeRange = halfImageWidth / degreesPerMeterAtEquator;
const halfLatitudeRange = halfImageHeight / degreesPerMeterAtEquator;
const halfLongitude = originLongitude - halfLongitudeRange;
const halfLatitude = originLatitude + halfLatitudeRange;
// 调整相机视角以查看图片
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(halfLongitude, halfLatitude, 500),
duration: 2.0,
});
</script>
</html>
标签:originLongitude,const,原点,originLatitude,Cesium,顶点,图层,图片
From: https://blog.csdn.net/weixin_52173250/article/details/143371699