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
9385dd59
Commit
9385dd59
authored
Aug 05, 2024
by
jlc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update:测站的旋转
parent
47f9c923
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
107 additions
and
58 deletions
+107
-58
Station.png
src/assets/Station.png
+0
-0
StationCoordinate.png
src/assets/StationCoordinate.png
+0
-0
addStation.js
src/examples/measureStation/addStation/addStation.js
+13
-9
addStation.vue
src/examples/measureStation/addStation/addStation.vue
+1
-0
stationCoordinate-function.js
...reStation/stationCoordinate/stationCoordinate-function.js
+74
-40
stationCoordinate.vue
...es/measureStation/stationCoordinate/stationCoordinate.vue
+19
-9
No files found.
src/assets/Station.png
View replaced file @
47f9c923
View file @
9385dd59
299 KB
|
W:
|
H:
298 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/assets/StationCoordinate.png
View replaced file @
47f9c923
View file @
9385dd59
421 KB
|
W:
|
H:
539 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/examples/measureStation/addStation/addStation.js
View file @
9385dd59
...
...
@@ -19,11 +19,12 @@ class Station {
this
.
id
=
id
;
this
.
visible
=
options
.
visible
!==
undefined
?
options
.
visible
:
true
;
this
.
position
=
options
.
position
||
[
0
,
0
,
0
];
this
.
rotationAngle
=
150
;
// 初始旋转角度
const
SITE
=
{
ellipsoid
:
{
show
:
true
,
heightReference
:
undefined
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
// 默认高度参考方式
radii
:
null
,
innerRadii
:
null
,
minimumClock
:
0.0
,
...
...
@@ -35,8 +36,8 @@ class Station {
outline
:
false
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
1.0
,
stackPartitions
:
8
,
slicePartitions
:
8
,
stackPartitions
:
64
,
slicePartitions
:
64
,
subdivisions
:
128
,
shadows
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
...
...
@@ -45,7 +46,7 @@ class Station {
show
:
true
,
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
scale
:
1
,
minimumPixelSize
:
30
,
minimumPixelSize
:
64
,
maximumScale
:
500
,
incrementallyLoadTextures
:
true
,
runAnimations
:
true
,
...
...
@@ -118,6 +119,14 @@ class Station {
this
.
entity
=
viewer
.
entities
.
add
({
id
:
id
,
position
:
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
orientation
:
new
Cesium
.
CallbackProperty
(()
=>
{
this
.
rotationAngle
-=
1.5
;
if
(
this
.
rotationAngle
<=
-
360
)
this
.
rotationAngle
=
0
;
return
Cesium
.
Transforms
.
headingPitchRollQuaternion
(
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
new
Cesium
.
HeadingPitchRoll
((
this
.
rotationAngle
*
Math
.
PI
)
/
180
,
0
,
0
)
);
},
false
),
label
:
label
,
ellipsoid
:
ellipsoid
,
model
:
model
,
...
...
@@ -127,11 +136,6 @@ class Station {
viewer
.
zoomTo
(
this
.
entity
);
}
/**
* 设置站点可见性
* @param {Cesium.entity} rectangle 站点实体
* @param {Boolean} visible true为可见,false为不可见
*/
setSiteVisible
(
site
,
visible
)
{
site
.
show
=
visible
;
}
...
...
src/examples/measureStation/addStation/addStation.vue
View file @
9385dd59
...
...
@@ -41,6 +41,7 @@ function cesiumInit() {
},
};
station
=
new
Station
(
viewer
,
siteInfo
.
id
,
siteInfo
);
};
document
.
head
.
appendChild
(
script
);
const
link
=
document
.
createElement
(
'link'
);
...
...
src/examples/measureStation/stationCoordinate/stationCoordinate-function.js
View file @
9385dd59
export
function
addStationCoordinate
(
viewer
,
info
)
{
/**
* @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
];
this
.
rotationAngle
=
150
;
// 初始旋转角度
const
SITE
=
{
id
:
null
,
show
:
true
,
ellipsoid
:
{
show
:
true
,
heightReference
:
undefined
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
// 默认高度参考方式
radii
:
null
,
innerRadii
:
null
,
minimumClock
:
0.0
,
...
...
@@ -16,17 +36,17 @@ export function addStationCoordinate(viewer, info) {
outline
:
false
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
1.0
,
stackPartitions
:
8
,
slicePartitions
:
8
,
stackPartitions
:
64
,
slicePartitions
:
64
,
subdivisions
:
128
,
shadows
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
},
model
:
{
show
:
true
,
show
:
true
,
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
scale
:
1
,
minimumPixelSize
:
30
,
minimumPixelSize
:
64
,
maximumScale
:
500
,
incrementallyLoadTextures
:
true
,
runAnimations
:
true
,
...
...
@@ -43,7 +63,7 @@ export function addStationCoordinate(viewer, info) {
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
nodeTransformations
:
undefined
,
articulations
:
undefined
,
clippingPlanes
:
undefined
,
clippingPlanes
:
undefined
,
},
label
:
{
show
:
true
,
...
...
@@ -54,22 +74,21 @@ export function addStationCoordinate(viewer, info) {
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
),
pixelOffset
:
new
Cesium
.
Cartesian2
(
15
,
0
),
eyeOffset
:
Cesium
.
Cartesian3
.
ZERO
,
horizontalOrigin
:
Cesium
.
HorizontalOrigin
.
LEFT
,
verticalOrigin
:
Cesium
.
VerticalOrigin
.
TOP
,
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
,
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
:
{
id
:
null
,
show
:
true
,
pixelSize
:
10
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
...
...
@@ -81,31 +100,42 @@ export function addStationCoordinate(viewer, info) {
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
};
let
{
id
,
position
}
=
{
...
SITE
,
...
info
}
let
{
...
label
}
=
{
...
SITE
.
label
,
...
info
.
label
}
let
{
...
ellipsoid
}
=
{
...
SITE
.
ellipsoid
,
...
info
.
ellipsoid
}
let
{
...
model
}
=
{
...
SITE
.
model
,
...
info
.
model
}
let
{...
point
}
=
{...
SITE
.
point
,...
info
.
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
}
`
let
site
=
viewer
.
entities
.
add
({
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
(...
position
),
position
:
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
orientation
:
new
Cesium
.
CallbackProperty
(()
=>
{
this
.
rotationAngle
-=
1.5
;
if
(
this
.
rotationAngle
<=
-
360
)
this
.
rotationAngle
=
0
;
return
Cesium
.
Transforms
.
headingPitchRollQuaternion
(
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
new
Cesium
.
HeadingPitchRoll
((
this
.
rotationAngle
*
Math
.
PI
)
/
180
,
0
,
0
)
);
},
false
),
label
:
label
,
ellipsoid
:
ellipsoid
,
model
:
model
,
point
:
point
,
})
viewer
.
zoomTo
(
site
).
then
(()
=>
{
viewer
.
trackedEntity
=
site
;
let
matrix
=
site
.
computeModelMatrix
(
Cesium
.
JulianDate
.
fromIso8601
(
'2019-08-28T04:00:00.00Z'
));
});
viewer
.
zoomTo
(
this
.
entity
).
then
(()
=>
{
viewer
.
trackedEntity
=
this
.
entity
;
let
matrix
=
this
.
entity
.
computeModelMatrix
(
Cesium
.
JulianDate
.
fromIso8601
(
'2019-08-28T04:00:00.00Z'
));
// 通过调试的实体来绘制模型坐标轴
viewer
.
scene
.
primitives
.
add
(
new
Cesium
.
DebugModelMatrixPrimitive
({
// 加载模型偏移矩阵的图元
...
...
@@ -117,4 +147,7 @@ export function addStationCoordinate(viewer, info) {
}).
catch
(
error
=>
{
console
.
error
(
'Failed to zoom to entity:'
,
error
);
});
}
}
export
default
Station
;
\ No newline at end of file
src/examples/measureStation/stationCoordinate/stationCoordinate.vue
View file @
9385dd59
...
...
@@ -4,11 +4,12 @@
<
script
setup
>
import
{
onMounted
}
from
'vue'
;
import
{
addStationCoordinate
}
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
=
()
=>
{
...
...
@@ -16,7 +17,6 @@ onMounted(() => {
viewer
=
new
window
.
Cesium
.
Viewer
(
'cesiumContainer'
,
{
infoBox
:
false
,
shouldAnimate
:
true
});
let
siteInfo
=
{
...
...
@@ -24,19 +24,19 @@ 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
:
''
},
}
addStationCoordinate
(
viewer
,
siteInfo
)
}
;
station
=
new
Station
(
viewer
,
siteInfo
.
id
,
siteInfo
);
};
document
.
head
.
appendChild
(
script
);
...
...
@@ -44,6 +44,10 @@ onMounted(() => {
link
.
rel
=
'stylesheet'
;
link
.
href
=
'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css'
;
document
.
head
.
appendChild
(
link
);
}
onMounted
(()
=>
{
cesiumInit
()
});
</
script
>
...
...
@@ -52,4 +56,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