cesium 量测

 先上效果图

完整代码 用到的资源文件下载

<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Hello World!</title>
		<script src="../Build/Cesium/Cesium.js"></script>
		<script src="js/cesium-measure.js"></script>
		<script src="js/jquery.min.js"></script>
		<style>
			@import url(../Build/Cesium/Widgets/widgets.css);
			html,
			body,
			#cesiumContainer {
				width: 100%;
				height: 100%;
				margin: 0;
				padding: 0;
				overflow: hidden;
			}
			.layui-card {
			  position: absolute;
			  top: 10px;
			  left: 5px;
			  background-color: #ffffff6b;
			  box-shadow: inset 1px 2px 2px 0 #f2f6fc;
			  color: white
			}
		</style>
	</head>
	<body>
		<div id="viewer-container"></div>
		<div class="layui-card">
			<div class="layui-card-header" style="color:white">量测面板</div>
			<div class="layui-card-body">
				<div>量测:
					<button type="button" class="layui-btn layui-btn-sm">不贴地</button>
					<button type="button" class="layui-btn layui-btn-sm">空间距离</button>
					<button type="button" class="layui-btn layui-btn-sm">空间面积</button>
					<button type="button" class="layui-btn layui-btn-sm">三角量测</button>
					<button type="button" class="layui-btn layui-btn-sm">加载模型</button>
				</div>
				<br>
				<div>清除:
					<button type="button" class="layui-btn layui-btn-primary layui-btn-sm">清除量测</button>
				</div>
			</div>
		</div>
		<script>
			let viewer = new Cesium.Viewer("viewer-container", {
				infoBox: false,
				shouldAnimate: true,
				vrButton: false,
				geocoder: false,
				homeButton: false,
				sceneModePicker: false,
				baseLayerPicker: true,
				navigationHelpButton: false,
				animation: false,
				timeline: false,
				fullscreenButton: false,
			});
			let measure = new Cesium.Measure(viewer)
			let clampToGround = true
			var tilesets = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
				url: 'data/tileset.json'
			}));

			function loadModel() {
				viewer.flyTo(viewer.entities.add({
					position: Cesium.Cartesian3.fromDegrees(116.32878855240442, 39.95208707482746, 0.0),
					model: {
						uri: 'data/qiche.gltf'
					}
				}))
			}
			tilesets.readyPromise.then(function(tileset) {
				viewer.flyTo(tileset)
				$('.layui-btn').on('click', function() {
					let text = $(this).text()
					if (text) {
						switch (text) {
							case '不贴地':
								clampToGround = false;
								break;
							case '空间距离':
								measure.drawLineMeasureGraphics({
									clampToGround: clampToGround,
									callback: () => {}
								});
								break;
							case '空间面积':
								measure.drawAreaMeasureGraphics({
									clampToGround: clampToGround,
									callback: () => {}
								});
								break;
							case '三角量测':
								measure.drawTrianglesMeasureGraphics({
									callback: () => {}
								});
								break;
							case '清除量测':
								measure._drawLayer.entities.removeAll();
								break;
							case '加载模型':
								loadModel();
								break;
						}
					}
				})
			})
		</script>
	</body>
</html>

参考https://github.com/zhangti0708/cesium-measure

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值