Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cesium-frame
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jlc
cesium-frame
Commits
8279d3d4
Commit
8279d3d4
authored
Aug 02, 2024
by
jlc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update:测站尝试封装
parent
fa488e77
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
171 additions
and
11 deletions
+171
-11
FunctionMap.js
src/examples/FunctionMap.js
+1
-1
addStation.js
src/examples/measureStation/addStation/addStation.js
+141
-0
addStation.vue
src/examples/measureStation/addStation/addStation.vue
+29
-10
No files found.
src/examples/FunctionMap.js
View file @
8279d3d4
...
...
@@ -3,7 +3,7 @@ import functionCodeMoonTrack from '@/examples/spaceMissions/moonTrack/moonTrack-
import
functionCodeSunTrack
from
'@/examples/spaceMissions/sunTrack/sunTrack-function.js?raw'
// 测站
import
functionCodeAddStation
from
'@/examples/measureStation/addStation/addStation
-function
.js?raw'
import
functionCodeAddStation
from
'@/examples/measureStation/addStation/addStation.js?raw'
import
functionCodeStationCoordinate
from
'@/examples/measureStation/stationCoordinate/stationCoordinate-function.js?raw'
// 动目标
...
...
src/examples/measureStation/addStation/addStation.js
0 → 100644
View file @
8279d3d4
/**
* @class 测站类
* @classdesc 该类用于在Cesium场景中创建测站
*/
class
Station
{
/**
* 测站构造函数
* @param {Object} viewer - viewer对象
* @param {String} id - 测站ID
* @param {Object} [ellipsoid] - 使用椭圆配置西瓜瓣
* @param {Object} [label] - 表单属性
* @param {Object} [model] - 模型属性
* @param {Object} [point] - 点属性
* @param {Array} position - 测站位置
* @param {Boolean} [visible=true] - 测站显隐性
*/
constructor
(
viewer
,
id
,
options
=
{})
{
this
.
viewer
=
viewer
;
this
.
id
=
id
;
this
.
visible
=
options
.
visible
!==
undefined
?
options
.
visible
:
true
;
this
.
position
=
options
.
position
||
[
0
,
0
,
0
];
const
SITE
=
{
ellipsoid
:
{
show
:
true
,
heightReference
:
undefined
,
radii
:
null
,
innerRadii
:
null
,
minimumClock
:
0.0
,
maximumClock
:
2
*
Cesium
.
Math
.
PI
,
minimumCone
:
0.0
,
maximumCone
:
Cesium
.
Math
.
PI
,
fill
:
true
,
material
:
Cesium
.
Color
.
RED
.
withAlpha
(
0.3
),
outline
:
false
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
1.0
,
stackPartitions
:
8
,
slicePartitions
:
8
,
subdivisions
:
128
,
shadows
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
},
model
:
{
show
:
true
,
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
scale
:
1
,
minimumPixelSize
:
30
,
maximumScale
:
500
,
incrementallyLoadTextures
:
true
,
runAnimations
:
true
,
clampAnimations
:
true
,
shadows
:
Cesium
.
ShadowMode
.
ENABLED
,
heightReference
:
Cesium
.
HeightReference
.
CLAMP_TO_GROUND
,
silhouetteColor
:
Cesium
.
Color
.
RED
,
silhouetteSize
:
0.0
,
color
:
Cesium
.
Color
.
WHITE
,
colorBlendMode
:
Cesium
.
ColorBlendMode
.
HIGHLIGHT
,
colorBlendAmount
:
0.5
,
imageBasedLightingFactor
:
new
Cesium
.
Cartesian2
(
1.0
,
1.0
),
lightColor
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
nodeTransformations
:
undefined
,
articulations
:
undefined
,
clippingPlanes
:
undefined
,
},
label
:
{
show
:
true
,
text
:
null
,
font
:
'30px sans-serif'
,
style
:
Cesium
.
LabelStyle
.
FILL
,
scale
:
0.5
,
showBackground
:
false
,
backgroundColor
:
new
Cesium
.
Color
(
0.165
,
0.165
,
0.165
,
0.8
),
backgroundPadding
:
new
Cesium
.
Cartesian2
(
7
,
5
),
pixelOffset
:
new
Cesium
.
Cartesian2
(
15
,
0
),
eyeOffset
:
Cesium
.
Cartesian3
.
ZERO
,
horizontalOrigin
:
Cesium
.
HorizontalOrigin
.
LEFT
,
verticalOrigin
:
Cesium
.
VerticalOrigin
.
TOP
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
fillColor
:
Cesium
.
Color
.
WHITE
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
1.0
,
translucencyByDistance
:
null
,
pixelOffsetScaleByDistance
:
null
,
scaleByDistance
:
null
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
disableDepthTestDistance
:
null
,
},
point
:
{
show
:
true
,
pixelSize
:
10
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
color
:
Cesium
.
Color
.
RED
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
0
,
scaleByDistance
:
undefined
,
translucencyByDistance
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
250000.0
,
99999999999999
),
disableDepthTestDistance
:
undefined
,
}
};
let
{
label
,
ellipsoid
,
model
,
point
}
=
options
;
label
=
{
...
SITE
.
label
,
...
label
};
ellipsoid
=
{
...
SITE
.
ellipsoid
,
...
ellipsoid
};
model
=
{
...
SITE
.
model
,
...
model
};
point
=
{
...
SITE
.
point
,
...
point
};
ellipsoid
.
radii
=
new
Cesium
.
Cartesian3
(...
ellipsoid
.
radii
);
ellipsoid
.
innerRadii
=
new
Cesium
.
Cartesian3
(...
ellipsoid
.
innerRadii
);
ellipsoid
.
minimumClock
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
minimumClock
);
ellipsoid
.
maximumClock
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
maximumClock
);
ellipsoid
.
minimumCone
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
minimumCone
);
ellipsoid
.
maximumCone
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
maximumCone
);
label
.
text
=
`
${
id
}
`
;
this
.
entity
=
viewer
.
entities
.
add
({
id
:
id
,
position
:
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
label
:
label
,
ellipsoid
:
ellipsoid
,
model
:
model
,
point
:
point
,
});
viewer
.
zoomTo
(
this
.
entity
);
}
/**
* 设置站点可见性
* @param {Cesium.entity} rectangle 站点实体
* @param {Boolean} visible true为可见,false为不可见
*/
setSiteVisible
(
site
,
visible
)
{
site
.
show
=
visible
;
}
}
export
default
Station
;
\ No newline at end of file
src/examples/measureStation/addStation/addStation.vue
View file @
8279d3d4
<
template
>
<div
id=
"cesiumContainer"
class=
"cesium-container"
></div>
<div
class=
"btn-class"
>
<button
@
click=
"changeShow"
>
测站显示/隐藏
</button>
</div>
</
template
>
<
script
setup
>
import
{
onMounted
}
from
'vue'
;
import
{
addStation
}
from
'./function'
;
import
Station
from
'./function.js'
;
// 确保路径正确
let
viewer
;
let
station
;
onMounted
(()
=>
{
function
cesiumInit
()
{
const
script
=
document
.
createElement
(
'script'
);
script
.
src
=
'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js'
;
script
.
onload
=
()
=>
{
...
...
@@ -24,27 +28,36 @@ onMounted(() => {
position
:
[
20
,
20
,
250
],
ellipsoid
:
{
radii
:
[
50000
,
50000
,
50000
],
innerRadii
:
[
1
,
1
,
1
],
innerRadii
:
[
1
,
1
,
1
],
minimumClock
:
45
,
maximumClock
:
90
,
minimumCone
:
45
,
maximumCone
:
75
,
minimumCone
:
45
,
maximumCone
:
75
,
outline
:
false
,
fill
:
true
,
},
label
:
{
text
:
''
text
:
''
},
}
addStation
(
viewer
,
siteInfo
)
};
station
=
new
Station
(
viewer
,
siteInfo
.
id
,
siteInfo
);
};
document
.
head
.
appendChild
(
script
);
const
link
=
document
.
createElement
(
'link'
);
link
.
rel
=
'stylesheet'
;
link
.
href
=
'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css'
;
document
.
head
.
appendChild
(
link
);
}
function
changeShow
(){
// 获取站点实体
const
siteEntity
=
viewer
.
entities
.
getById
(
'site'
);
// 切换站点可见性
station
.
setSiteVisible
(
siteEntity
,
!
siteEntity
.
show
);
}
onMounted
(()
=>
{
cesiumInit
()
});
</
script
>
...
...
@@ -53,4 +66,9 @@ onMounted(() => {
width
:
100%
;
height
:
100vh
;
}
.btn-class
{
position
:
absolute
;
top
:
10px
;
left
:
10px
;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment