Cesium绘制点,线,面

本文介绍了如何使用Cesium库在Web应用中创建交互式地图,包括添加点、线和面的详细步骤。通过实例展示了如何设置颜色、大小、位置,并配合Viewer组件进行缩放和导航。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cesium绘制点

Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(90, -20, 110, 90);
    var viewer = new Cesium.Viewer("csiumContain", {
        homeButton: true,//是否显示Home按钮
        animation: false,//是否显示动画控件
        timeline: false,//是否显示时间线控件
        fullscreenButton: false,
        baseLayerPicker: false,//是否显示图层选择控件
        sceneModePicker: true, //是否显示投影方式控件
        navigationHelpButton: false, //是否显示帮助信息控件
        geocoder: false, //是否显示地名查找控件
        sceneModePicker: false,//是否显示3D/2D选择器
    });

    var entity = viewer.entities.add({
        position: Cesium.Cartesian3.fromDegrees(120.9677706, 30.7985748,300),
        point: {
            color: Cesium.Color.RED,    //点位颜色
            pixelSize: 10                //像素点大小
        },
        label: {
            text: '测试点',
            font: '14pt Source Han Sans CN',    //字体样式
            fillColor: Cesium.Color.BLACK,        //字体颜色
            backgroundColor: Cesium.Color.AQUA,    //背景颜色
            showBackground: true,                //是否显示背景颜色
            style: Cesium.LabelStyle.FILL,        //label样式
            outlineWidth: 2,
            verticalOrigin: Cesium.VerticalOrigin.CENTER,//垂直位置
            horizontalOrigin: Cesium.HorizontalOrigin.LEFT,//水平位置
            pixelOffset: new Cesium.Cartesian2(10, 0)            //偏移
        }
    });
    viewer.zoomTo(entity);    //居中到该点

效果图

在这里插入图片描述

Cesium绘制线

 Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(90, -20, 110, 90);
    var viewer = new Cesium.Viewer("csiumContain", {
        homeButton: true,//是否显示Home按钮
        animation: false,//是否显示动画控件
        timeline: false,//是否显示时间线控件
        fullscreenButton: false,
        baseLayerPicker: false,//是否显示图层选择控件
        sceneModePicker: true, //是否显示投影方式控件
        navigationHelpButton: false, //是否显示帮助信息控件
        geocoder: false, //是否显示地名查找控件
        sceneModePicker: false,//是否显示3D/2D选择器
    });
    initShowLine();
   // 加载默认线条
	function initShowLine(){
		var objId = "line_one";
		var positions = 
		[
			{x: -2027365.029498278, y: 5643501.100524499, z: 2165534.2688970272},
			{x: -2031395.0770982248, y: 5642066.230989595, z: 2165515.129923677}
		];
		initShowPolyline(objId, positions);
		
		objId = "line_two";
		positions = 
		[
			{x: -2027365.029498278, y: 5643501.100524499, z: 2165534.2688970272},
			{x: -2028892.7635749679, y: 5642759.580495446, z: 2166045.548750987},
			{x: -2030175.7696807438, y: 5642306.50626273, z: 2166023.2324521956},
			{x: -2031395.0770982248, y: 5642066.230989595, z: 2165515.129923677}
		];
		initShowPolyline(objId, positions);
		
		objId = "line_three";
		positions = 
		[
			{x: -2027365.029498278, y: 5643501.100524499, z: 2165534.2688970272},
			{x: -2027883.9406702125, y: 5643590.070223619, z: 2164821.443483807},
			{x: -2030807.9534780958, y: 5642564.539566782, z: 2164780.8840529644},
			{x: -2031395.0770982248, y: 5642066.230989595, z: 2165515.129923677}
		];
		initShowPolyline(objId, positions);
	}
	
	// 展示线条
	function initShowPolyline(objId, positions) {
		var lineColor = '#00f';
		if(objId == "1"){
			lineColor = "#E90808";
		}else if(objId == "2"){
			lineColor = "#22E908";
		}else if(objId == "3"){
			lineColor = "#0815E9";
		}
		
		var material = new Cesium.PolylineGlowMaterialProperty({
			glowPower: 0.25,
			color: Cesium.Color.fromCssColorString(lineColor).withAlpha(0.9)
		});
		var bData = {
			layerId: "layerId",
			objId: objId,
			shapeType: "Polyline",
			polyline: {
				positions: positions,
				clampToGround: true,
				width: 8,
				material: material
			}
		};
        var entity = viewer.entities.add(bData);
        viewer.zoomTo(entity);    //居中到该点
	}

效果图

在这里插入图片描述

Cesium绘制面

 Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(90, -20, 110, 90);
    var viewer = new Cesium.Viewer("csiumContain", {
        homeButton: true,//是否显示Home按钮
        animation: false,//是否显示动画控件
        timeline: false,//是否显示时间线控件
        fullscreenButton: false,
        baseLayerPicker: false,//是否显示图层选择控件
        sceneModePicker: true, //是否显示投影方式控件
        navigationHelpButton: false, //是否显示帮助信息控件
        geocoder: false, //是否显示地名查找控件
        sceneModePicker: false,//是否显示3D/2D选择器
       
    });

    var entity = viewer.entities.add({
      polygon: {
        // 获取指定属性(positions,holes(图形内需要挖空的区域))
        hierarchy: {
          positions: Cesium.Cartesian3.fromDegreesArray([
            120.9677706, 30.7985748,
            110.20, 34.55,
            120.20, 50.55
          ]),
          holes: [{
            positions: Cesium.Cartesian3.fromDegreesArray([
              119, 32,
              115, 34,
              119, 40
            ])
          }]
        },
        // 边框
        outline: true,
        // 边框颜色
        outlineColor: Cesium.Color.WHITE,
        // 边框尺寸
        outlineWidth: 2,
        // 填充的颜色,withAlpha透明度
        material: Cesium.Color.GREEN.withAlpha(0.5),
        // 是否被提供的材质填充
        fill: true,
        // 恒定高度
        height: 5000,
        // 显示在距相机的距离处的属性,多少区间内是可以显示的
        distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000, 10000000),
        // 是否显示
        show: true,
        // 顺序,仅当`clampToGround`为true并且支持地形上的折线时才有效。
        zIndex: 10
      }
    });
    viewer.zoomTo(entity);    //居中到该面

效果图

在这里插入图片描述

### 使用Cesium绘制等高线 #### 创建Viewer实例 为了使用Cesium进行等高线绘制,首先需要创建一个`viewer`对象。这可以通过调用`new Cesium.Viewer()`方法来完成[^3]。 ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); ``` #### 定义等高线属性 定义用于设置等高线外观的参数,包括颜色、间隔距离以及线条粗细程度。这里采用红色(`'#ff0000'`)作为等高线的颜色,并设定每条相邻等高线之间的垂直高度差为200米,而等高线本身的宽度则设定了1像素宽[^1]。 ```javascript var contourColor = Cesium.Color.fromCssColorString('#ff0000'); // 等高线的颜色 var contourSpacing = 200.0; // 等高线的高度间隔 var contourWidth = 1.0; // 线条宽度 ``` #### 设置材质并应用到地球模型上 通过指定材料类型为'ElevationContour'来配置等高线样式,并调整其内部变量以反映之前所定义的各项视觉特性。最后一步是将此自定义材料应用于整个球体表。 ```javascript // 获取或创建新的ElevationContour材质 var material = Cesium.Material.fromType('ElevationContour'); // 修改材质中的uniforms值 material.uniforms.width = contourWidth; material.uniforms.spacing = contourSpacing; material.uniforms.color = contourColor; // 将修改后的材质赋给globe viewer.scene.globe.material = material; ``` 对于更复杂的场景,比如只在一个特定区域内显示等高线,则可以先利用`turf.js`库或其他工具构建一个多边形边界框(extent),之后基于这个范围内的地形数据生成相应的等高线效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值