CesiumJS进阶攻略之使用ellipse设置材料
一.给ellipse添加图片
- 使用ImageMaterialProperty将图片映射到图像当中,我们使用new Cesium.ImageMaterialProperty来创建需要添加的配置项
- image属性的值,可以是Url,Canvas,Video
- color设置颜色之后会在图片上覆盖一层设置的颜色
- repeat向X,Y方向重复的次数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./Cesium-1.75/Build/Cesium/Cesium.js"></script>
<script src="./Cesium-1.75/Apps/Sandcastle/Sandcastle-header.js"></script>
<link rel="stylesheet" type="text/css" href="./Cesium-1.75/Build/Cesium/Widgets/widgets.css" />
<style>
html,body{
width: 100%;
height: 100%;
}
#container{
width: 100%;
height: 800px;
}
#toolbar{
position: fixed;
left: 20px;
top:20px;
}
.cesium-viewer-bottom{
display: none;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var viewer = new Cesium.Viewer('container');
var entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(-103.0, 40.0),
ellipse : {
semiMinorAxis : 500000.0,
semiMajorAxis : 500000.0,
material : Cesium.Color.YELLOW.withAlpha(0.5)
}
});
viewer.zoomTo(viewer.entities);
var ellipse = entity.ellipse;
ellipse.material = new Cesium.ImageMaterialProperty({ //映射到图像
image:'../tp.jpg', //资源地址
color: Cesium.Color.LIGHTCYAN, //背景颜色
repeat : new Cesium.Cartesian2(4, 4) //想x,y方向重复的次数
})
</script>
</body>
</html>
呈现:
二.给ellipse添加棋盘纹理
- 使用CheckerboardMaterialProperty来映射棋盘纹理,我们使用new Cesium.CheckerboardMaterialProperty来创建需要添加的配置项
- evenColor默认白色,棋盘第一个颜色
- oddColor默认黑色,棋盘第二个颜色
- repeat向X,Y方向重复的次数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./Cesium-1.75/Build/Cesium/Cesium.js"></script>
<script src="./Cesium-1.75/Apps/Sandcastle/Sandcastle-header.js"></script>
<link rel="stylesheet" type="text/css" href="./Cesium-1.75/Build/Cesium/Widgets/widgets.css" />
<style>
html,body{
width: 100%;
height: 100%;
}
#container{
width: 100%;
height: 800px;
}
#toolbar{
position: fixed;
left: 20px;
top:20px;
}
.cesium-viewer-bottom{
display: none;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var viewer = new Cesium.Viewer('container');
var entity=viewer.entities.add({
position:Cesium.Cartesian3.fromDegrees(-103.0,40.0),
ellipse:{
semiMinorAxis:250000.0,
semiMajorAxis:400000.0,
material:Cesium.Color.BLUE.withAlpha(0.5),
}
});
var ellipse=entity.ellipse;
ellipse.material=new Cesium.CheckerboardMaterialProperty({ //映射到棋盘
evenColor:Cesium.Color.WHITE, //默认白色,棋盘第一个颜色
oddColor:Cesium.Color.BLACK, //默认黑色,棋盘第二个颜色
repeat:new Cesium.Cartesian2(4,4) //x,y方向重复次数
})
</script>
</body>
</html>
呈现:
三.给ellipse添加条纹纹理
- 使用StripeMaterialProperty来映射条纹纹理,我们使用new Cesium.StripeMaterialProperty来创建需要添加的配置项
- evenColor默认白色,棋盘第一个颜色
- oddColor/默认黑色,棋盘第二个颜色
- repeat条纹重复次数(一共)
- offset:20偏移量
- orientation定义了条纹的方向,水平或者垂直,默认水平
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./Cesium-1.75/Build/Cesium/Cesium.js"></script>
<script src="./Cesium-1.75/Apps/Sandcastle/Sandcastle-header.js"></script>
<link rel="stylesheet" type="text/css" href="./Cesium-1.75/Build/Cesium/Widgets/widgets.css" />
<style>
html,body{
width: 100%;
height: 100%;
}
#container{
width: 100%;
height: 800px;
}
#toolbar{
position: fixed;
left: 20px;
top:20px;
}
.cesium-viewer-bottom{
display: none;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var viewer = new Cesium.Viewer('container');
var entity=viewer.entities.add({
position:Cesium.Cartesian3.fromDegrees(-103.0,40.0),
ellipse:{
semiMinorAxis:250000.0,
semiMajorAxis:400000.0,
material:Cesium.Color.BLUE.withAlpha(0.5),
}
});
var ellipse=entity.ellipse;
ellipse.material=new Cesium.StripeMaterialProperty({
evenColor:Cesium.Color.WHITE, //默认白色,棋盘第一个颜色
oddColor:Cesium.Color.BLACK, //默认黑色,棋盘第二个颜色
repeat:32, //条纹重复次数(一共)
offset:20, //偏移量
orientation:Cesium.StripeOrientation.HORIZONTAL //定义了条纹的方向,水平或者垂直,默认水平 。HORIZONTAL Number 水平方向。 VERTICAL Number 垂直方向。
})
</script>
</body>
</html>
呈现:
四.给ellipse添加网格
- 使用GridMaterialProperty来映射网格,我们使用new Cesium.GridMaterialProperty来创建需要添加的配置项
- color网格颜色
- cellAlpha单元格透明度
- lineCount:行列个数
- lineThickness线粗细
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./Cesium-1.75/Build/Cesium/Cesium.js"></script>
<script src="./Cesium-1.75/Apps/Sandcastle/Sandcastle-header.js"></script>
<link rel="stylesheet" type="text/css" href="./Cesium-1.75/Build/Cesium/Widgets/widgets.css" />
<style>
html,body{
width: 100%;
height: 100%;
}
#container{
width: 100%;
height: 800px;
}
#toolbar{
position: fixed;
left: 20px;
top:20px;
}
.cesium-viewer-bottom{
display: none;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var viewer = new Cesium.Viewer('container');
var entity=viewer.entities.add({
position:Cesium.Cartesian3.fromDegrees(-103.0,40.0),
ellipse:{
semiMinorAxis:250000.0,
semiMajorAxis:400000.0,
material:Cesium.Color.BLUE.withAlpha(0.5),
}
});
var ellipse=entity.ellipse;
ellipse.material=new Cesium.GridMaterialProperty({ //网格
color : Cesium.Color.YELLOW, //网格颜色
cellAlpha:0.2, //单元格透明度
lineCount:new Cesium.Cartesian2(8,8), //行列个数
lineThickness:new Cesium.Cartesian2(2.0,2.0), //线粗细
})
</script>
</body>
</html>
呈现:
下面两个纹理需要用到PolyLine,先来添加一个PolyLine
var entity = viewer.entities.add({
polyline : {
positions : Cesium.Cartesian3.fromDegreesArray([-77, 35,-77.1, 35]),
width : 5,
material : Cesium.Color.RED
}});
viewer.zoomTo(viewer.entities)
创建一条发光的线:
- PolylineGlowMaterialProperty
- glowPower发光的长度,值为线宽的百分比(0~1.0)
- color发光的颜色(中心颜色为白色)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./Cesium-1.75/Build/Cesium/Cesium.js"></script>
<script src="./Cesium-1.75/Apps/Sandcastle/Sandcastle-header.js"></script>
<link rel="stylesheet" type="text/css" href="./Cesium-1.75/Build/Cesium/Widgets/widgets.css" />
<style>
html,body{
width: 100%;
height: 100%;
}
#container{
width: 100%;
height: 800px;
}
#toolbar{
position: fixed;
left: 20px;
top:20px;
}
.cesium-viewer-bottom{
display: none;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var viewer = new Cesium.Viewer('container');
var entity=viewer.entities.add({
polyline:{
positions:Cesium.Cartesian3.fromDegreesArray([-77,35,-78,35]),
width:5,
material:Cesium.Color.RED
}
})
viewer.zoomTo(viewer.entities);
var polyline=entity.polyline;
polyline.material=new Cesium.PolylineGlowMaterialProperty({
glowPower:0.5, //发光的长度,值为线宽的百分比(0~1.0)
color:Cesium.Color.BLUE //发光的颜色(中心颜色为白色)
});
</script>
</body>
</html>
呈现:
- PolylineOutlineMaterialProperty
- color线的颜色
- outlineWidth线纹理的宽度
- outlineColor线纹理的颜色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./Cesium-1.75/Build/Cesium/Cesium.js"></script>
<script src="./Cesium-1.75/Apps/Sandcastle/Sandcastle-header.js"></script>
<link rel="stylesheet" type="text/css" href="./Cesium-1.75/Build/Cesium/Widgets/widgets.css" />
<style>
html,body{
width: 100%;
height: 100%;
}
#container{
width: 100%;
height: 800px;
}
#toolbar{
position: fixed;
left: 20px;
top:20px;
}
.cesium-viewer-bottom{
display: none;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var viewer = new Cesium.Viewer('container');
var entity=viewer.entities.add({
polyline:{
positions:Cesium.Cartesian3.fromDegreesArray([-77,35,-78,35]),
width:5,
material:Cesium.Color.RED
}
})
viewer.zoomTo(viewer.entities);
var polyline=entity.polyline;
polyline.material=new Cesium.PolylineOutlineMaterialProperty({
color:Cesium.Color.ORANGE, //线的颜色
outlineWidth:3, //线纹理的宽度
outlineColor:Cesium.Color.BLACK //线纹理的颜色
});
</script>
</body>
</html>
呈现:
版权声明:本文为zm17671443092原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。