空间数据具有三个基本特征,空间数据挖掘

Cesium 实体是用于表示地理空间实体的对象。可用于表示点、线、面、模型等各种地理元素,并可附加属性和样式进行可视化显示。

实体支持以下图形类型:

点:您可以使用实体的点属性来定义点样式,包括颜色、大小、轮廓和其他属性。

线(折线):您可以使用实体的折线属性来定义线的样式,包括颜色、宽度和虚线等属性。

曲面(多边形):可以使用实体的多边形属性来定义曲面的样式,包括颜色、轮廓和高度等属性。

模型:您可以使用实体的模型属性来定义模型的样式。这可以是3D 模型或ModelGraphics 对象的URL。

标签:您可以使用实体的标签属性来定义标签的样式,包括其文本内容、字体、颜色和其他属性。

此外,Entity还支持设置其他图形类型的属性,例如Ellipse、Rectangle和GroundPrimitive。

实体图形广告牌广告牌js

const billboard_xtsk={ id: \’billboard_xtsk\’,position: Cesium.Cartesian3.fromDegrees(117.207287, 31.857432), billboard: { image: \’https://cdn.hfxtsk.cn/hfxtsk/logo/2.png\’, 0 true, //默认比例: 2.0,//default: 1.0 //像素偏移类型: Cartesian2default:Cartesian2.ZEROxelOffset: new Cesium.Cartesian2(0, -50), //眼睛偏移类型: Cartesian3default:Cartesian3.ZERO eyeOffset: new Cesium.Cartesian3(0.0, 0.0, 0),//等级对齐方法Type:horizontalorigin Default3:horizontalorigin.center //中心原点在对象的中心,左原点在对象的左侧。 //垂直对齐方式Type:verticalIn Default:VerticalIn.center; //CENTER 原点位于BASELINE 和TOP 之间的垂直中心。 //如果BASELINE 对象包含文本,则原点位于文本的基线处。物体底部,TOP 原点在物体顶部verticalOrigin: Cesium.VerticalOrigin.BOTTOM, //default: CENTER 垂直对齐位置参考Cesium.VerticalOrigin //获取或设置该标志的高度参考type: HeightReferencedefault:HeightReference .NONE //NONE地位是绝对的。 CLAMP_TO_GROUND 位置固定在地形上。 RELATIVE_TO_GROUND 位置的高度是指高于地形的高度。 heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, //颜色类型: Color default:Color.WHITE color: Cesium.Color.WHITE, //获取或设置以弧度为单位的旋转角度type:numberdefault:0rotation:Cesium.Math.PI_OVER_FOUR, //设置世界空间中的对齐轴获取或设置type:Cartesian3default:Cartesian3.ZEROalignedAxis: Cesium.Cartesian3.ZERO, width: 100, //default:unknown height333 60 25, //default:unknown //根据广告牌与相机马苏的距离获取或设置广告牌。近距和远距缩放属性type:NearFarScalarscaleByDistance: new Cesium.NearFarScalar(1.0e3, 2.0, 2.0e3, 1.0), //获取或设置近距和远距缩放属性。基于标志到相机的距离的标志的远半透明度属性type:NearFarScalar translucencyByDistance: new Cesium. NearFarScalar( 1.0e3, 1.0, 1.5e6, 0.5 ), //获取或设置近和远像素偏移的缩放属性。基于标牌和摄像头之间距离的标牌type:NearFarScalarPixelOffsetScaleByDistance: new Cesium.NearFarScalar( 1.0 e3, 1.0, 1.5e6, 0.0 ), //设置可见距离从1000 米到2000 米type:DistanceDisplayCondition //distanceDisplayCondition333 60 new Cesium .Dis距离显示条件( //1.0e3 , //2.0e3 //), //获取或设置相机距离以禁用深度测试,例如防止地形剪切。 //如果设置为零,则将始终应用深度测试。当设置为Number.POSITIVE_INFINITY 时,不应用深度测试。 disableDepthTestDistance: Number.POSITIVE_INFINITY, },}盒子立方体js

const box={ name: \’这是一个盒子\’,id: \’盒子\’,position: Cesium.Cartesian3.fromDegrees(117.207287, 31.857432, 300000.0), box: { show: true, Dimensions: new 3 00000.0, 500 00 0.0), //盒子长度Cartesian3 type 用于指定、宽度和高度。 //指定相对于实体高度的高度。 default: HeightReference.NONE //NONE 位置是绝对的。 CLAMP_TO_GROUND 位置固定在地形上。 RELATIVE_TO_GROUND 位置的高度是指高于地形的高度。 heightReference: Cesium.HeightReference.NONE, fill: true, //MaterialProperty|Colordefault:Color.WHITEmaterial: Cesium.Color.RED.withAlpha(0.5),outline: true, //type:Property|Colordefault:Color.BLACKoutlineColor: Cesium.Color.BL ACK,outlineWidth33 360 1.0 //type:ShadowMode default:ShadowMode.DISABLED //DISABLED 对象不投射或接收阴影。启用的对象投射和接收阴影。 CAST_ONLY 对象仅接收阴影。 Shadows: Cesium.ShadowMode.DISABLED, //type:DistanceDisplayCondition //distanceDisplayCondition: new Cesium.DistanceDisplayCondition( //1.0e3, //2.0e3 //), },}走廊js

Corridor={name: \’这是一条走廊\’, id: \’corridor\’, Corridor: { //show: true, //走廊中心线type: cartesian3 poses: 数组指定cesium.cartesian33.from.cartesian3 857432 , 114.207287 31.857432, 11 7.207287, 28.857432, ]), width: 200000.0, height: 200000.0, heightReference: Cesium.HeightReference.NONE, extrudedHeight: 100000.0, dedHeightReference: Cesium.HeightReference.NONE, //角部样式type3336 0 CornerType default:CornerType.ROUNDED //圆角是平滑边缘;MITITERED 角点是相邻的是边的交集。斜角经过修剪。 material: Cesium.Color.BLUE.withAlpha(0.5),outline: true, //必须设置高度或extrudedHeight才能显示outlineColor: Cesium.Color.WHITE,outlineWidth: 1.0,shadows: Cesium.ShadowMode.DISABLED, //distanceDisplayCondition333 60 new Cesium .DistanceDisplayCondition ( //1.0e3, //2.0e3 //), //如果走廊位于地面以上,则对地形、3D 切片或两者进行分类type:ClassificationType default:ClassificationType.BOTH //TERRAIN 将仅对地形进行分类CESIUM_3D_TILE 将仅对3D 切片进行分类; BOTH 将对地形和3D 瓷砖进行分类。分类类型: Cesium.ClassificationType.BOTH, },} 圆柱体js

const圆柱={ name: \’汽缸锥\’, id: \’汽缸\’,position: Cesium.Cartesian3.fromDegrees(117.207287, 31.857432, 200000.0),汽缸: { //show: true, length: 400000.0 , //汽缸长度顶部半径us: 200000.0, //气缸顶部半径BottomRadius: 200000.0, //圆柱体底部半径heightReference: Cesium.HeightReference.NONE, fill: true,material: Cesium.Color.GREEN.withAlpha(0.5),outline: true,outlineColor: Cesium.Color.DARKGREEN,outlineWidth333 60 1.0, 16,//沿轮廓阴影周边绘制的垂直线数Cesium.ShadowMode.DISABLED,slices: 128, //圆柱体周围的边数//distanceDisplayCondition: new Cesium.DistanceDisplayCondition( //1.0e3, //2.0e3 //) , },}椭圆椭圆js

const ellipse={ name: \’椭圆椭圆或拉伸椭圆\’, id: \’椭圆\’,position: Cesium.Cartesian3.fromDegrees(117.207287, 31.857432, 100000.0), ellipse: { show: true, 00000 .0, //SemiMinorAxis: 150000.0 , //次要半轴距离height: 20000.0, heightReference: Cesium.HeightReference.NONE, extrudedHeight: 20000.0, extrudedHeightReference: Cesium.HeightReference.NONE, //Rotation: Cesium.Math.toRadians(45), //StRotation33 从36 逆时针旋转0北旋转到0.0,//纹理从北向逆时针旋转粒度: Cesium.Math.RADIANS_PER_DEGREE, //椭圆上各点之间的角度距离材质: Cesium.Color.BLUE.withAlpha(0.5), fill: true,outline: true,outlineColor: Cesium.Color.DARKGREEN,outlineWidth: 1.0, 60 16, //沿轮廓阴影周边绘制的垂直线数: Cesium.ShadowMode.DISABLED, //distanceDisplayCondition: new Cesium.DistanceDisplayCondition( //1.0e3, //2.0 e3 //), //in When在地面上,对地形、3D 瓷砖或两者进行分类。 type:ClassificationType default:ClassificationType.BOTH //TERRAIN 仅对地形进行分类。 CESIUM_3D_TILE仅对3D图块进行分类。 BOTH 对地形和3D 图块进行分类。分类类型: Cesium.ClassificationType.BOTH, },}ellipsoid ellipsoid js

var ellipsoid={ name: \’球体和椭球体\’, id: \’ellipsoid\’,position: Cesium.Cartesian3.fromDegrees(117.207287, 31.857432, 300000.0), ellipsoid: { show: true, radii: cesium 。 Cartesian3(200000.0, 200000.0, 300000.0), //椭球体半径//innerRadii: new Cesium.Cartesian3(0.0, 0.0, 0.0), //椭球体内半径minimumClock: 0.0, //最小时钟角度maximumClock: 2 * Math. PI, //最大时钟角度minimumCone: 0.0, //最小圆锥角度maximumCone: Math. Pi, //最大锥角HeightReference: Cesium.heightReference.none, Fill: True, Material: Cesium.blue.blue.withalpha (0.5) 360 True, Outlinecolor: Cesium.color.yellow, OutlineWidth: 1.0, Stackpartitions : 64, //数值纬度Number沿线的切片数量slipPartitions: 64, //沿经度线的切片数量subpisions: 128, //每个轮廓环中的样本数量决定曲率阴影的粒度: Cesium.ShadowMode.DISABLED, //distanceDisplayCondition: new Cesium .DistanceDisplayCondition ( //1.0e3, //2.0e3 //), },}标签labeljs

var label={ name: \’label\’, id: \’label\’,position: Cesium.Cartesian3.fromDegrees( 117.207287, 31.857432, 30.0 ), label: { show: true, text: \’星图时空\’, font: \’24px tica\’ , //填充filling ;OUTLINE 仅显示边框。 FILL_AND_OUTLINE 同时具有填充和边框。 style: Cesium.LabelStyle.FILL_AND_OUTLINE,scale: 1.0,showBackground: true,backgroundColor: Cesium.Color.BLUE,backgroundPadding:新Cesium.Cartesian2(7, 5),pixelOffset:Cartesian2.ZERO,eyeOffset: Cesium.Car tesian3.ZERO,水平Origin: Cesium.horizontalOrigin。 CENTER,verticalOrigin: Cesium.VerticalOrigin.CENTER,heightReference: Cesium.HeightReference.NONE,fillColor: Cesium.Color.SKYBLUE,outlineColor:Color.BLACK,outlineWidth: 2, 60 新铯近远标量( 1.0 e3, 1.0, 1.5 e6, 0.5 ), PixelOffsetScaleByDistance:新的Cesium.NearFarScalar(1.0e3,1.0,1.5e6,0.0),scaleByDistance:新的Cesium.NearFarScalar(1.0e3,2.0,2.0e3,1.0),/distanceDisplayCondition:新的Sium。 DistanceDisplayCondition( //1.0e3, //2.0e3 //),disableDepthTestDistance: Number.POSITIVE_INFINITY, },}model 模型js

var 位置=Cesium.Cartesian3.fromDegrees( 117.207287, 31.857432, 0.0); var 标题=Cesium.Math.toRadians(135); var roll=0; new Cesium.HeadingPitchRoll; roll);var 方向=Cesium.Transforms.HeadingPitchRollQuaternion(位置,hpr);var url=\’//data.mars3d.cn/gltf/mars/jingche/jingche.gltf\’;var model={ name: \’模型\’, id: \’模型\’,position:position,orientation:orientation,model: { show: true , uri: url,scale: 1.0,minimumPixelSize: 128, //模型的最小最小像素大小,无论缩放如何。minimumScale: 20000, //模型的最大缩放大小。 minimumPixelSize的上限incrementlyLoadTextures: true, //确定模型加载后纹理是否可以继续流动runAnimations: true, //是否启动模型中指定的glTF动画ClampAnimations: true, //最后一个姿势是否应该在没有关键帧阴影的情况下继续: Cesium. ShadowMode.DISABLED, heightReference: Cesium.HeightReference.NONE, SilhouetteColor: Cesium.Color.RED, //剪影颜色SilhouetteSize: 0.0, //剪影宽度color: Cesium.Color.WHITE, //模型的颜色//混合目标的不同模式color 与基元的源颜色//HIGHLIGHT 将源颜色乘以目标颜色。 REPLACE 用目标颜色替换源颜色。 MIX 混合源颜色和目标颜色。 colorBlendMode: Cesium.ColorBlendMode.HIGHLIGHT, //用于指定colorBlendMode为MIX时的颜色强度。值为0.0 将为模型着色,值为1.0 将为纯色,介于两者之间的值将是两种颜色的混合BlendAmount: 0.5, imageBasedLightingFactor: new Cesium.Cartesian2(1.0, 1.0) , //照明漫反射和镜面反射图像根据lightColor: 未知的影响指定颜色, //指定模型着色时灯光颜色的属性。如果未知,将使用场景的浅色。 //distanceDisplayCondition: new Cesium.DistanceDisplayCondition( //1.0e3, //2.0e3 //), },}Path 路径js

C

onst property = new Cesium.SampledPositionProperty()property.forwardExtrapolationType = Cesium.ExtrapolationType.HOLDlet tempTime// 起点tempTime = viewer.clock.currentTime // 飞行开始时间property.addSample(tempTime, Cesium.Cartesian3.fromDegrees(117.172852, 31.862736, 50))// 移动到的第1个目标点tempTime = Cesium.JulianDate.addSeconds(tempTime, 120, new Cesium.JulianDate())property.addSample(tempTime, Cesium.Cartesian3.fromDegrees(117.251461, 31.856011, 50))// 移动到的第2个目标点tempTime = Cesium.JulianDate.addSeconds(tempTime, 120, new Cesium.JulianDate())property.addSample(tempTime, Cesium.Cartesian3.fromDegrees(117.265321, 31.876336, 50))tempTime = Cesium.JulianDate.addSeconds(tempTime, 600, new Cesium.JulianDate())property.addSample(tempTime, Cesium.Cartesian3.fromDegrees(117.160215, 31.890639, 50))var path = { position: property, name: \”path\”, id: \”path\”, path: { show: true, leadTime: 0, trailTime: 60, width: 10, resolution: 1, material: new Cesium.PolylineGlowMaterialProperty({ glowPower: 0.3, taperPower: 0.3, color: Cesium.Color.PALEGOLDENROD, }), },};Plane 平面​js
var plane = { name: \”Blue plane\”, id: \”plane\”, position: Cesium.Cartesian3.fromDegrees(117.172852, 31.862736, 300.0), plane: { show: true, // 用于指定平面的法线和距离 plane: new Cesium.Plane(Cesium.Cartesian3.UNIT_X, 0.0), dimensions: new Cesium.Cartesian2(400000.0, 300000.0), // 指定平面的宽度和高度 fill: true, material: Cesium.Color.BLUE, outline: false, outlineColor: Cesium.Color.BLACK, outlineWidth: 1.0, shadows: Cesium.ShadowMode.DISABLED, // type:DistanceDisplayCondition // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), },}Point 点​js
const point = { position: Cesium.Cartesian3.fromDegrees(117.172852, 31.862736), point: { show: true, pixelSize: 10, // 像素大小 heightReference: Cesium.HeightReference.NONE, color: Cesium.Color.YELLOW, outlineColor: Cesium.Color.BLACK, outlineWidth: 0, scaleByDistance: new Cesium.NearFarScalar(1.0e3, 10.0, 2.0e3, 1.0), translucencyByDistance: new Cesium.NearFarScalar( 1.0e3, 1.0, 1.5e6, 0.5 ), // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), // 获取或设置与相机的距离,在深度处禁用深度测试,例如,以防止剪切地形。 // 设置为零时,将始终应用深度测试。设置为Number.POSITIVE_INFINITY时,永远不会应用深度测试。 disableDepthTestDistance: Number.POSITIVE_INFINITY, },}Polygon 多边形​js
var polygon = { name: \”Red polygon on surface\”, id: \’polygon\’, polygon: { show: true, // 指定PolygonHierarchy hierarchy: Cesium.Cartesian3.fromDegreesArray([ 117.168977, 31.808851, 117.222692, 31.794368, 117.21305, 31.780667, 117.193277, 31.772651, 117.194464, 31.799512, ]), height: 0, // 多边形相对于椭球面的高度 heightReference: Cesium.HeightReference.NONE, // extrudedHeight: 0, // 多边形的凸出面相对于椭球面的高度 // extrudedHeightReference: Cesium.HeightReference.NONE, stRotation: 0.0, // 多边形纹理从北方逆时针旋转 granularity: Cesium.Math.RADIANS_PER_DEGREE, // 每个纬度和经度点之间的角距离 fill: true, material: Cesium.Color.RED, outline: false, outlineColor: Cesium.Color.BLACK, outlineWidth: 1.0, perPositionHeight: false, // 是否使用每个位置的高度 closeTop: true, // 如果为false,则将挤出的多边形顶部留空 closeBottom: true, // 如果为false,则将挤出的多边形的底部保留为开放状态 // 多边形边缘必须遵循的线型 type:ArcType 定义连接顶点应采用的路径。 // NONE 与椭圆表面不符的直线;GEODESIC 遵循测地路径;RHUMB 遵循大黄蜂或恶魔般的道路。 arcType: Cesium.ArcType.GEODESIC, shadows: Cesium.ShadowMode.DISABLED, // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), // 在地面上时将对地形,3D tiles还是对两者进行分类 type:ClassificationType default:ClassificationType.BOTH // TERRAIN 将仅对地形进行分类;CESIUM_3D_TILE 将仅对3D Tiles进行分类;BOTH 将同时对Terrain和3D Tiles进行分类。 classificationType: Cesium.ClassificationType.BOTH, // 指定用于订购地面几何形状的z索引。仅在多边形为常数且未指定高度或拉伸高度的情况下才有效 type:ConstantProperty zIndex: 0, },}Polyline 折线​js
var polyline = { name: \”Red line on terrain\”, id: \’polyline\’, polyline: { show: true, // 定义线条的 Cartesian3 位置的数组 positions: Cesium.Cartesian3.fromDegreesArray([ 117.085964, 31.818930, 117.135452, 31.854045, 117.136125, 31.805614, 117.182766, 31.821714 ]), width: 5, // 如果arcType不是ArcType.NONE,则指定每个纬度和经度之间的角距离 // granularity: Cesium.Math.RADIANS_PER_DEGREE, material: Cesium.Color.RED, // 线低于地形时用于绘制折线的材质 // depthFailMaterial: Cesium.Color.WHITE, // 折线段必须遵循的线型 // arcType: Cesium.ArcType.GEODESIC, clampToGround: true, // 是否贴地 shadows: Cesium.ShadowMode.DISABLED, // 折线是投射还是接收光源的阴影 // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), // 在地面上时将对地形,3D tiles还是对两者进行分类 type:ClassificationType default:ClassificationType.BOTH // TERRAIN 将仅对地形进行分类;CESIUM_3D_TILE 将仅对3D Tiles进行分类;BOTH 将同时对Terrain和3D Tiles进行分类。 classificationType: Cesium.ClassificationType.BOTH, // 指定用于订购地面几何形状的z索引。仅在多边形为常数且未指定高度或拉伸高度的情况下才有效 type:ConstantProperty // zIndex: 0, },}PolylineVolume 体积折线​js
function computeCircle(radius: any) { var positions = []; for (var i = 0; i < 360; i++) { var radians = Cesium.Math.toRadians(i); positions.push( new Cesium.Cartesian2( radius * Math.cos(radians), radius * Math.sin(radians) ) ); } return positions;}var polylineVolume = { name: \”Red tube with rounded corners\”, id: \’polylineVolume\’, polylineVolume: { show: true, // 定义线带的 Cartesian3 位置的数组 positions: Cesium.Cartesian3.fromDegreesArray([ 117.203467, 31.738612, 117.237232, 31.731689, 117.242478, 31.755429, 117.222618, 31.762567 ]), // 指定 Cartesian2 位置的数组,这些位置定义了要拉伸的形状 shape: computeCircle(50.0), // 拐角的样式 type:CornerType // ROUNDED 拐角有光滑的边缘;MITERED 拐角点是相邻边的交点;BEVELED 拐角被修剪。 cornerType: Cesium.CornerType.ROUNDED, // 如果arcType不是ArcType.NONE,则指定每个纬度和经度之间的角距离 // granularity: Cesium.Math.RADIANS_PER_DEGREE, fill: true, material: Cesium.Color.RED, outline: false, outlineColor: Cesium.Color.BLACK, outlineWidth: 1.0, shadows: Cesium.ShadowMode.DISABLED, // 体积是投射还是接收光源的阴影 // type:DistanceDisplayCondition // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), },}Rectangle 矩形​js
var rectangle = { name: \”Red translucent rectangle\”, id: \”rectangle\”, rectangle: { show: true, coordinates: Cesium.Rectangle.fromDegrees(115.203467, 20.738612, 117.203467, 31.738612), // height: 0, // 矩形相对于椭球面的高度 // heightReference: Cesium.HeightReference.NONE, // extrudedHeight: 0, // 矩形的拉伸面相对于椭球面的高度 // extrudedHeightReference: Cesium.HeightReference.NONE, rotation: 0.0, // 矩形从北方向顺时针方向的旋转 stRotation: 0.0, // 矩形纹理从北方逆时针旋转 granularity: Cesium.Math.RADIANS_PER_DEGREE, // 指定矩形上各点之间的角度距离 fill: true, material: Cesium.Color.RED.withAlpha(0.5), outline: false, outlineColor: Cesium.Color.BLACK, outlineWidth: 1.0, shadows: Cesium.ShadowMode.DISABLED, // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), // 在地面上时将对地形,3D tiles还是对两者进行分类 type:ClassificationType default:ClassificationType.BOTH // TERRAIN 将仅对地形进行分类;CESIUM_3D_TILE 将仅对3D Tiles进行分类;BOTH 将同时对Terrain和3D Tiles进行分类。 classificationType: Cesium.ClassificationType.BOTH, // 指定用于订购地面几何形状的z索引。仅在多边形为常数且未指定高度或拉伸高度的情况下才有效 type:ConstantProperty zIndex: 0, },}Wall 墙体​js
var wall = { name: \”Red wall at height\”, id: \”wall\”, wall: { show: true, positions: Cesium.Cartesian3.fromDegreesArrayHeights([ 117.227362, 31.859836, 200000.0, 117.268495, 32.866797, 200000.0, ]), // 用于墙底而不是地球表面的高度数组 minimumHeights: [100000.0, 100000.0], // 用于墙顶的高度数组,而不是每个位置的高度 // maximumHeights: [], granularity: Cesium.Math.RADIANS_PER_DEGREE, // 指定矩形上各点之间的角度距离 fill: true, material: Cesium.Color.RED, outline: false, outlineColor: Cesium.Color.BLACK, outlineWidth: 1.0, shadows: Cesium.ShadowMode.DISABLED, // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( // 1.0e3, // 2.0e3 // ), },}Entity聚合​使用Cesium的SpatialPartitioning库来实现Entity的聚合,可以根据需要选择不同的聚合算法,如Quadtree或KD-Tree
js
const entityCollection = new Cesium.EntityCollection();// 创建一个EntityCluster对象const cluster = new Cesium.EntityCluster(entityCollection);// 设置聚合的显示样式cluster.clusterBillboards = true; // 是否显示聚合标记cluster.clusterLabels = true; // 是否显示聚合标签cluster.clusterPoints = true; // 是否显示聚合标签// 将聚合添加到场景中viewer.scene.primitives.add(cluster);Entity管理​在Cesium中,可以使用Entity对象来创建、编辑和删除地理要素。每个Entity对象可以包含一系列的属性,比如位置、姿态、样式、图形等。通过设置这些属性,可以定义Entity的外观和行为。
以下是一些常见的Entity属性和操作:
位置和姿态:可以使用 position 属性设置Entity的位置,可以是一个经纬度坐标或者Cartesian3坐标。可以使用 orientation 属性设置Entity的姿态,比如旋转、缩放等。
样式和标注:可以使用 point 、 billboard 、 label 等属性来设置Entity的样式和标注。比如可以设置点的颜色、大小,广告牌的图像、大小,标签的文本、颜色等。
图形:可以使用 polygon 、 polyline 、 ellipse 等属性来设置Entity的图形。这些图形可以用来表示面、线、圆等地理要素。
事件处理:可以为Entity对象添加事件处理程序,比如鼠标点击、悬停等事件。通过这些事件处理程序,可以实现与Entity交互的功能。
层级管理:可以使用 parent 属性将Entity对象组织成层级结构,实现更复杂的场景管理。
通过使用Entity对象,可以方便地管理和可视化各种地理要素,实现丰富的地球场景。可以根据具体需求,设置Entity的属性和图形,以及添加事件处理程序,来实现所需的功能和效果。
js
var entity = viewer.entities.getById(\”entity_1\”); viewer.entities.remove(entity); // viewer.entities.removeById(\”entity_1\”); // viewer.entities.removeAll();Entity拾取​拾取可以用于实现与地理要素的交互,比如点击一个点时显示其详细信息,或者选择一个线段进行编辑等操作。
可以通过以下步骤来实现Entity拾取:
注册鼠标事件:首先,需要注册鼠标事件,监听鼠标的点击或移动等操作。可以使用Cesium的Viewer对象的 screenSpaceEventHandler 属性来注册事件处理程序。
拾取Entity:当鼠标事件被触发时,可以使用Cesium的 pick 函数来获取鼠标点击位置下的Entity对象。 pick 函数需要传入一个屏幕坐标,它会返回一个包含拾取结果的对象。
处理拾取结果:拾取结果是一个包含拾取到的Entity对象和其所在的场景坐标的对象。可以根据需要对拾取到的Entity进行相应的操作,比如显示详细信息、修改属性等。
js
// 注册鼠标点击事件viewer.screenSpaceEventHandler.setInputAction(function (click) { // 获取点击位置的屏幕坐标 var position = click.position; // 拾取Entity var pickedObject = viewer.scene.pick(position); // 处理拾取结果 if (Cesium.defined(pickedObject)) { var pickedEntity = pickedObject.id; // 对拾取到的Entity进行相应的操作 console.log(pickedEntity.name); }}, Cesium.ScreenSpaceEventType.LEFT_CLICK);Entity固定​在Cesium中将Entity对象固定在地球上的某个位置或相对于其他Entity对象的位置。通过固定Entity,可以实现在地球上创建固定的标记点、图标、标签等,以及实现相对位置的约束和关联。 在Cesium中,可以使用以下方法来实现Entity固定:
设置位置:可以使用Entity的 position 属性来设置Entity的位置。位置可以是一个经纬度坐标或者Cartesian3坐标。通过设置位置,可以将Entity固定在地球上的特定位置。
设置父子关系:可以使用Entity的 parent 属性来设置Entity的父Entity。通过设置父子关系,可以实现Entity相对于其他Entity的位置约束。父Entity的位置变化会影响子Entity的位置。
设置姿态:可以使用Entity的 orientation 属性来设置Entity的姿态。通过设置姿态,可以实现Entity的旋转、缩放等效果。
设置约束:可以使用Cesium的Constraint对象来设置Entity的位置和姿态的约束。通过设置约束,可以实现Entity相对于地球表面的约束,或者实现Entity相对于其他Entity的约束。
以下是一个简单的示例代码,演示如何实现Entity固定:
js
// 创建Entity对象var entity = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(120, 30), billboard: { image: \’path/to/image.png\’ }});// 固定Entity在地球上的位置entity.position = Cesium.Cartesian3.fromDegrees(120, 30);// 创建父Entity和子Entityvar parentEntity = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(120, 30)});var childEntity = viewer.entities.add({ parent: parentEntity, position: new Cesium.ConstantPositionProperty(new Cesium.Cartesian3(0, 0, 1000)), billboard: { image: \’path/to/image.png\’ }});

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/583030.html

(0)
上一篇 2024年5月25日
下一篇 2024年5月25日

相关推荐

  • 和平精英被扣钱怎么投诉?

    和平精英被扣钱怎么投诉? 和平精英被扣钱投诉,首先我们看扣钱记录,看看扣钱方向是什么,如果是系统误扣,需要我们联系客服解决问题才行。 花小猪乱扣钱怎么投诉? 这个可以直接在花小猪的平台投诉就行了 ,找他们的客服人员 ,这个投诉是有效果的  闲鱼乱扣钱怎么投诉? 1、向工商局进行申诉 闲鱼是提供服务的平台,当消费者或商家在平台上权益受到侵犯时,可以登…

    游戏快讯 23分钟前
  • 淘宝卖和平精英皮肤是否真实?

    淘宝卖和平精英皮肤是否真实? 是不行的,他会给你提现门槛或者要手机支付宝账号都要的。你以为已经拿到心心念念的皮肤了,结果你错了。没拿到,还要身份证号,号码,电话号码,地址都需要。 你买了他也是给你玩个大抽奖,你抽中了好抽不中都是有几率的。他绝对会说再抽一个就抽到皮肤了。所以他是假的。 怎么下载和平精英无限皮肤版? 要下载和平精英无限皮肤版,首先需要在网络上搜…

    游戏快讯 1小时前
  • 和平精英改名字怎么加隐藏符号?

    和平精英改名字怎么加隐藏符号? 和平精英改名字加隐藏符号的方法: 1、进入游戏之后点击下方的仓库; 2、然后点击右下角的道具; 3、找到改名卡,点击使用; 4、然后将想要增加的特殊符号输入进去,最后点击确认就好了。 和平精英怎么改名字不显示符号? 和平精英改名字不显示符号的方法: 1.首先玩家们要有改名卡,改名卡通过参加活动或者商城购买! 2.在输入法中输入…

    游戏快讯 3小时前
  • 和平精英进房间怎么进?

    和平精英进房间怎么进? 在世界聊天里面点击房间,然后你要是满足了那个房间的那个条件,然后你就可以点进去了 和平精英怎么进房间? 点击模式,模式里的右下方有个房间,点击,然后选择你想要的房间,但等级一定要过关,房主的要求 和平精英内鬼房间怎么进? 点击大厅,点击房间,然后选择内鬼房间,然后就可以进入了,不然就是你自己有房间卡自己开一个,然后邀请好友,然后就可以…

    游戏快讯 4小时前
  • 和平精英怎么获取意志战车t恤?

    和平精英怎么获取意志战车t恤? 和平精英可以通过在线商店获取意志,战车,t恤 和平精英精英战报怎么开? 开启和平精英精英战报可以打开微视APP,点击主页面中的加号,点击游戏战报选项,在游戏战报页面中点击和平精英,点击授权即可完成操作。 或者和平营地然后在下方的栏目中选择“战绩”然后就可以在该界面中查看到自己最近战绩了,选择想要了解的场次就能看到详细的数据。 …

    游戏快讯 6小时前