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
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
288 additions
and
239 deletions
+288
-239
Station.png
src/assets/Station.png
+0
-0
StationCoordinate.png
src/assets/StationCoordinate.png
+0
-0
addStation.js
src/examples/measureStation/addStation/addStation.js
+115
-110
addStation.vue
src/examples/measureStation/addStation/addStation.vue
+1
-0
stationCoordinate-function.js
...reStation/stationCoordinate/stationCoordinate-function.js
+152
-119
stationCoordinate.vue
...es/measureStation/stationCoordinate/stationCoordinate.vue
+20
-10
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
...
@@ -3,110 +3,111 @@
...
@@ -3,110 +3,111 @@
* @classdesc 该类用于在Cesium场景中创建测站
* @classdesc 该类用于在Cesium场景中创建测站
*/
*/
class
Station
{
class
Station
{
/**
/**
* 测站构造函数
* 测站构造函数
* @param {Object} viewer - viewer对象
* @param {Object} viewer - viewer对象
* @param {String} id - 测站ID
* @param {String} id - 测站ID
* @param {Object} [ellipsoid] - 使用椭圆配置西瓜瓣
* @param {Object} [ellipsoid] - 使用椭圆配置西瓜瓣
* @param {Object} [label] - 表单属性
* @param {Object} [label] - 表单属性
* @param {Object} [model] - 模型属性
* @param {Object} [model] - 模型属性
* @param {Object} [point] - 点属性
* @param {Object} [point] - 点属性
* @param {Array} position - 测站位置
* @param {Array} position - 测站位置
* @param {Boolean} [visible=true] - 测站显隐性
* @param {Boolean} [visible=true] - 测站显隐性
*/
*/
constructor
(
viewer
,
id
,
options
=
{})
{
constructor
(
viewer
,
id
,
options
=
{})
{
this
.
viewer
=
viewer
;
this
.
viewer
=
viewer
;
this
.
id
=
id
;
this
.
id
=
id
;
this
.
visible
=
options
.
visible
!==
undefined
?
options
.
visible
:
true
;
this
.
visible
=
options
.
visible
!==
undefined
?
options
.
visible
:
true
;
this
.
position
=
options
.
position
||
[
0
,
0
,
0
];
this
.
position
=
options
.
position
||
[
0
,
0
,
0
];
this
.
rotationAngle
=
150
;
// 初始旋转角度
const
SITE
=
{
const
SITE
=
{
ellipsoid
:
{
ellipsoid
:
{
show
:
true
,
show
:
true
,
heightReference
:
undefined
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
// 默认高度参考方式
radii
:
null
,
radii
:
null
,
innerRadii
:
null
,
innerRadii
:
null
,
minimumClock
:
0.0
,
minimumClock
:
0.0
,
maximumClock
:
2
*
Cesium
.
Math
.
PI
,
maximumClock
:
2
*
Cesium
.
Math
.
PI
,
minimumCone
:
0.0
,
minimumCone
:
0.0
,
maximumCone
:
Cesium
.
Math
.
PI
,
maximumCone
:
Cesium
.
Math
.
PI
,
fill
:
true
,
fill
:
true
,
material
:
Cesium
.
Color
.
RED
.
withAlpha
(
0.3
),
material
:
Cesium
.
Color
.
RED
.
withAlpha
(
0.3
),
outline
:
false
,
outline
:
false
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
1.0
,
outlineWidth
:
1.0
,
stackPartitions
:
8
,
stackPartitions
:
64
,
slicePartitions
:
8
,
slicePartitions
:
64
,
subdivisions
:
128
,
subdivisions
:
128
,
shadows
:
undefined
,
shadows
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
},
},
model
:
{
model
:
{
show
:
true
,
show
:
true
,
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
scale
:
1
,
scale
:
1
,
minimumPixelSize
:
30
,
minimumPixelSize
:
64
,
maximumScale
:
500
,
maximumScale
:
500
,
incrementallyLoadTextures
:
true
,
incrementallyLoadTextures
:
true
,
runAnimations
:
true
,
runAnimations
:
true
,
clampAnimations
:
true
,
clampAnimations
:
true
,
shadows
:
Cesium
.
ShadowMode
.
ENABLED
,
shadows
:
Cesium
.
ShadowMode
.
ENABLED
,
heightReference
:
Cesium
.
HeightReference
.
CLAMP_TO_GROUND
,
heightReference
:
Cesium
.
HeightReference
.
CLAMP_TO_GROUND
,
silhouetteColor
:
Cesium
.
Color
.
RED
,
silhouetteColor
:
Cesium
.
Color
.
RED
,
silhouetteSize
:
0.0
,
silhouetteSize
:
0.0
,
color
:
Cesium
.
Color
.
WHITE
,
color
:
Cesium
.
Color
.
WHITE
,
colorBlendMode
:
Cesium
.
ColorBlendMode
.
HIGHLIGHT
,
colorBlendMode
:
Cesium
.
ColorBlendMode
.
HIGHLIGHT
,
colorBlendAmount
:
0.5
,
colorBlendAmount
:
0.5
,
imageBasedLightingFactor
:
new
Cesium
.
Cartesian2
(
1.0
,
1.0
),
imageBasedLightingFactor
:
new
Cesium
.
Cartesian2
(
1.0
,
1.0
),
lightColor
:
undefined
,
lightColor
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
nodeTransformations
:
undefined
,
nodeTransformations
:
undefined
,
articulations
:
undefined
,
articulations
:
undefined
,
clippingPlanes
:
undefined
,
clippingPlanes
:
undefined
,
},
},
label
:
{
label
:
{
show
:
true
,
show
:
true
,
text
:
null
,
text
:
null
,
font
:
'30px sans-serif'
,
font
:
'30px sans-serif'
,
style
:
Cesium
.
LabelStyle
.
FILL
,
style
:
Cesium
.
LabelStyle
.
FILL
,
scale
:
0.5
,
scale
:
0.5
,
showBackground
:
false
,
showBackground
:
false
,
backgroundColor
:
new
Cesium
.
Color
(
0.165
,
0.165
,
0.165
,
0.8
),
backgroundColor
:
new
Cesium
.
Color
(
0.165
,
0.165
,
0.165
,
0.8
),
backgroundPadding
:
new
Cesium
.
Cartesian2
(
7
,
5
),
backgroundPadding
:
new
Cesium
.
Cartesian2
(
7
,
5
),
pixelOffset
:
new
Cesium
.
Cartesian2
(
15
,
0
),
pixelOffset
:
new
Cesium
.
Cartesian2
(
15
,
0
),
eyeOffset
:
Cesium
.
Cartesian3
.
ZERO
,
eyeOffset
:
Cesium
.
Cartesian3
.
ZERO
,
horizontalOrigin
:
Cesium
.
HorizontalOrigin
.
LEFT
,
horizontalOrigin
:
Cesium
.
HorizontalOrigin
.
LEFT
,
verticalOrigin
:
Cesium
.
VerticalOrigin
.
TOP
,
verticalOrigin
:
Cesium
.
VerticalOrigin
.
TOP
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
fillColor
:
Cesium
.
Color
.
WHITE
,
fillColor
:
Cesium
.
Color
.
WHITE
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
1.0
,
outlineWidth
:
1.0
,
translucencyByDistance
:
null
,
translucencyByDistance
:
null
,
pixelOffsetScaleByDistance
:
null
,
pixelOffsetScaleByDistance
:
null
,
scaleByDistance
:
null
,
scaleByDistance
:
null
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
disableDepthTestDistance
:
null
,
disableDepthTestDistance
:
null
,
},
},
point
:
{
point
:
{
show
:
true
,
show
:
true
,
pixelSize
:
10
,
pixelSize
:
10
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
color
:
Cesium
.
Color
.
RED
,
color
:
Cesium
.
Color
.
RED
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
outlineWidth
:
0
,
outlineWidth
:
0
,
scaleByDistance
:
undefined
,
scaleByDistance
:
undefined
,
translucencyByDistance
:
undefined
,
translucencyByDistance
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
250000.0
,
99999999999999
),
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
250000.0
,
99999999999999
),
disableDepthTestDistance
:
undefined
,
disableDepthTestDistance
:
undefined
,
}
}
};
};
let
{
label
,
ellipsoid
,
model
,
point
}
=
options
;
let
{
label
,
ellipsoid
,
model
,
point
}
=
options
;
label
=
{
...
SITE
.
label
,
...
label
};
label
=
{
...
SITE
.
label
,
...
label
};
ellipsoid
=
{
...
SITE
.
ellipsoid
,
...
ellipsoid
};
ellipsoid
=
{
...
SITE
.
ellipsoid
,
...
ellipsoid
};
model
=
{
...
SITE
.
model
,
...
model
};
model
=
{
...
SITE
.
model
,
...
model
};
point
=
{
...
SITE
.
point
,
...
point
};
point
=
{
...
SITE
.
point
,
...
point
};
ellipsoid
.
radii
=
new
Cesium
.
Cartesian3
(...
ellipsoid
.
radii
);
ellipsoid
.
radii
=
new
Cesium
.
Cartesian3
(...
ellipsoid
.
radii
);
ellipsoid
.
innerRadii
=
new
Cesium
.
Cartesian3
(...
ellipsoid
.
innerRadii
);
ellipsoid
.
innerRadii
=
new
Cesium
.
Cartesian3
(...
ellipsoid
.
innerRadii
);
ellipsoid
.
minimumClock
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
minimumClock
);
ellipsoid
.
minimumClock
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
minimumClock
);
...
@@ -114,27 +115,30 @@ class Station {
...
@@ -114,27 +115,30 @@ class Station {
ellipsoid
.
minimumCone
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
minimumCone
);
ellipsoid
.
minimumCone
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
minimumCone
);
ellipsoid
.
maximumCone
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
maximumCone
);
ellipsoid
.
maximumCone
=
Cesium
.
Math
.
toRadians
(
ellipsoid
.
maximumCone
);
label
.
text
=
`
${
id
}
`
;
label
.
text
=
`
${
id
}
`
;
this
.
entity
=
viewer
.
entities
.
add
({
this
.
entity
=
viewer
.
entities
.
add
({
id
:
id
,
id
:
id
,
position
:
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
position
:
Cesium
.
Cartesian3
.
fromDegrees
(...
this
.
position
),
label
:
label
,
orientation
:
new
Cesium
.
CallbackProperty
(()
=>
{
ellipsoid
:
ellipsoid
,
this
.
rotationAngle
-=
1.5
;
model
:
model
,
if
(
this
.
rotationAngle
<=
-
360
)
this
.
rotationAngle
=
0
;
point
:
point
,
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
(
this
.
entity
);
viewer
.
zoomTo
(
this
.
entity
);
}
}
/**
setSiteVisible
(
site
,
visible
)
{
* 设置站点可见性
site
.
show
=
visible
;
* @param {Cesium.entity} rectangle 站点实体
}
* @param {Boolean} visible true为可见,false为不可见
*/
setSiteVisible
(
site
,
visible
)
{
site
.
show
=
visible
;
}
}
}
export
default
Station
;
export
default
Station
;
\ No newline at end of file
src/examples/measureStation/addStation/addStation.vue
View file @
9385dd59
...
@@ -41,6 +41,7 @@ function cesiumInit() {
...
@@ -41,6 +41,7 @@ function cesiumInit() {
},
},
};
};
station
=
new
Station
(
viewer
,
siteInfo
.
id
,
siteInfo
);
station
=
new
Station
(
viewer
,
siteInfo
.
id
,
siteInfo
);
};
};
document
.
head
.
appendChild
(
script
);
document
.
head
.
appendChild
(
script
);
const
link
=
document
.
createElement
(
'link'
);
const
link
=
document
.
createElement
(
'link'
);
...
...
src/examples/measureStation/stationCoordinate/stationCoordinate-function.js
View file @
9385dd59
export
function
addStationCoordinate
(
viewer
,
info
)
{
/**
const
SITE
=
{
* @class 测站类
id
:
null
,
* @classdesc 该类用于在Cesium场景中创建测站
show
:
true
,
*/
ellipsoid
:
{
class
Station
{
show
:
true
,
/**
heightReference
:
undefined
,
* 测站构造函数
radii
:
null
,
* @param {Object} viewer - viewer对象
innerRadii
:
null
,
* @param {String} id - 测站ID
minimumClock
:
0.0
,
* @param {Object} [ellipsoid] - 使用椭圆配置西瓜瓣
maximumClock
:
2
*
Cesium
.
Math
.
PI
,
* @param {Object} [label] - 表单属性
minimumCone
:
0.0
,
* @param {Object} [model] - 模型属性
maximumCone
:
Cesium
.
Math
.
PI
,
* @param {Object} [point] - 点属性
fill
:
true
,
* @param {Array} position - 测站位置
material
:
Cesium
.
Color
.
RED
.
withAlpha
(
0.3
),
* @param {Boolean} [visible=true] - 测站显隐性
outline
:
false
,
*/
outlineColor
:
Cesium
.
Color
.
BLACK
,
constructor
(
viewer
,
id
,
options
=
{})
{
outlineWidth
:
1.0
,
this
.
viewer
=
viewer
;
stackPartitions
:
8
,
this
.
id
=
id
;
slicePartitions
:
8
,
this
.
visible
=
options
.
visible
!==
undefined
?
options
.
visible
:
true
;
subdivisions
:
128
,
this
.
position
=
options
.
position
||
[
0
,
0
,
0
];
shadows
:
undefined
,
this
.
rotationAngle
=
150
;
// 初始旋转角度
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
},
const
SITE
=
{
model
:
{
ellipsoid
:
{
show
:
true
,
show
:
true
,
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
// 默认高度参考方式
scale
:
1
,
radii
:
null
,
minimumPixelSize
:
30
,
innerRadii
:
null
,
maximumScale
:
500
,
minimumClock
:
0.0
,
incrementallyLoadTextures
:
true
,
maximumClock
:
2
*
Cesium
.
Math
.
PI
,
runAnimations
:
true
,
minimumCone
:
0.0
,
clampAnimations
:
true
,
maximumCone
:
Cesium
.
Math
.
PI
,
shadows
:
Cesium
.
ShadowMode
.
ENABLED
,
fill
:
true
,
heightReference
:
Cesium
.
HeightReference
.
CLAMP_TO_GROUND
,
material
:
Cesium
.
Color
.
RED
.
withAlpha
(
0.3
),
silhouetteColor
:
Cesium
.
Color
.
RED
,
outline
:
false
,
silhouetteSize
:
0.0
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
color
:
Cesium
.
Color
.
WHITE
,
outlineWidth
:
1.0
,
colorBlendMode
:
Cesium
.
ColorBlendMode
.
HIGHLIGHT
,
stackPartitions
:
64
,
colorBlendAmount
:
0.5
,
slicePartitions
:
64
,
imageBasedLightingFactor
:
new
Cesium
.
Cartesian2
(
1.0
,
1.0
),
subdivisions
:
128
,
lightColor
:
undefined
,
shadows
:
undefined
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
200000.0
),
nodeTransformations
:
undefined
,
},
articulations
:
undefined
,
model
:
{
clippingPlanes
:
undefined
,
show
:
true
,
},
uri
:
'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb'
,
label
:
{
scale
:
1
,
show
:
true
,
minimumPixelSize
:
64
,
text
:
null
,
maximumScale
:
500
,
font
:
'30px sans-serif'
,
incrementallyLoadTextures
:
true
,
style
:
Cesium
.
LabelStyle
.
FILL
,
runAnimations
:
true
,
scale
:
0.5
,
clampAnimations
:
true
,
showBackground
:
false
,
shadows
:
Cesium
.
ShadowMode
.
ENABLED
,
backgroundColor
:
new
Cesium
.
Color
(
0.165
,
0.165
,
0.165
,
0.8
),
heightReference
:
Cesium
.
HeightReference
.
CLAMP_TO_GROUND
,
backgroundPadding
:
new
Cesium
.
Cartesian2
(
7
,
5
),
silhouetteColor
:
Cesium
.
Color
.
RED
,
pixelOffset
:
new
Cesium
.
Cartesian2
(
15
,
0
),
silhouetteSize
:
0.0
,
eyeOffset
:
Cesium
.
Cartesian3
.
ZERO
,
color
:
Cesium
.
Color
.
WHITE
,
horizontalOrigin
:
Cesium
.
HorizontalOrigin
.
LEFT
,
colorBlendMode
:
Cesium
.
ColorBlendMode
.
HIGHLIGHT
,
verticalOrigin
:
Cesium
.
VerticalOrigin
.
TOP
,
colorBlendAmount
:
0.5
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
imageBasedLightingFactor
:
new
Cesium
.
Cartesian2
(
1.0
,
1.0
),
fillColor
:
Cesium
.
Color
.
WHITE
,
lightColor
:
undefined
,
outlineColor
:
Cesium
.
Color
.
BLACK
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
outlineWidth
:
1.0
,
nodeTransformations
:
undefined
,
translucencyByDistance
:
null
,
articulations
:
undefined
,
pixelOffsetScaleByDistance
:
null
,
clippingPlanes
:
undefined
,
scaleByDistance
:
null
,
},
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
0.0
,
250000.0
),
label
:
{
disableDepthTestDistance
:
null
,
show
:
true
,
},
text
:
null
,
point
:
{
font
:
'30px sans-serif'
,
id
:
null
,
style
:
Cesium
.
LabelStyle
.
FILL
,
show
:
true
,
scale
:
0.5
,
pixelSize
:
10
,
showBackground
:
false
,
heightReference
:
Cesium
.
HeightReference
.
NONE
,
backgroundColor
:
new
Cesium
.
Color
(
0.165
,
0.165
,
0.165
,
0.8
),
color
:
Cesium
.
Color
.
RED
,
backgroundPadding
:
new
Cesium
.
Cartesian2
(
7
,
5
),
outlineColor
:
Cesium
.
Color
.
BLACK
,
pixelOffset
:
new
Cesium
.
Cartesian2
(
15
,
0
),
outlineWidth
:
0
,
eyeOffset
:
Cesium
.
Cartesian3
.
ZERO
,
scaleByDistance
:
undefined
,
horizontalOrigin
:
Cesium
.
HorizontalOrigin
.
LEFT
,
translucencyByDistance
:
undefined
,
verticalOrigin
:
Cesium
.
VerticalOrigin
.
TOP
,
distanceDisplayCondition
:
new
Cesium
.
DistanceDisplayCondition
(
250000.0
,
99999999999999
),
heightReference
:
Cesium
.
HeightReference
.
NONE
,
disableDepthTestDistance
:
undefined
,
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
),
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
(
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
({
// 加载模型偏移矩阵的图元
modelMatrix
:
matrix
,
// 设置偏移矩阵
length
:
100000
,
width
:
10
})
);
}).
catch
(
error
=>
{
console
.
error
(
'Failed to zoom to entity:'
,
error
);
});
}
}
}
let
{
id
,
position
}
=
{
...
SITE
,
...
info
}
export
default
Station
;
let
{
...
label
}
=
{
...
SITE
.
label
,
...
info
.
label
}
\ No newline at end of file
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
({
id
:
id
,
position
:
Cesium
.
Cartesian3
.
fromDegrees
(...
position
),
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
.
scene
.
primitives
.
add
(
new
Cesium
.
DebugModelMatrixPrimitive
({
// 加载模型偏移矩阵的图元
modelMatrix
:
matrix
,
// 设置偏移矩阵
length
:
100000
,
width
:
10
})
);
}).
catch
(
error
=>
{
console
.
error
(
'Failed to zoom to entity:'
,
error
);
});
}
\ No newline at end of file
src/examples/measureStation/stationCoordinate/stationCoordinate.vue
View file @
9385dd59
...
@@ -4,11 +4,12 @@
...
@@ -4,11 +4,12 @@
<
script
setup
>
<
script
setup
>
import
{
onMounted
}
from
'vue'
;
import
{
onMounted
}
from
'vue'
;
import
{
addStationCoordinate
}
from
'./function'
;
import
Station
from
'./function.js'
;
// 确保路径正确
let
viewer
;
let
viewer
;
let
station
;
onMounted
(()
=>
{
function
cesiumInit
()
{
const
script
=
document
.
createElement
(
'script'
);
const
script
=
document
.
createElement
(
'script'
);
script
.
src
=
'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js'
;
script
.
src
=
'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js'
;
script
.
onload
=
()
=>
{
script
.
onload
=
()
=>
{
...
@@ -16,7 +17,6 @@ onMounted(() => {
...
@@ -16,7 +17,6 @@ onMounted(() => {
viewer
=
new
window
.
Cesium
.
Viewer
(
'cesiumContainer'
,
{
viewer
=
new
window
.
Cesium
.
Viewer
(
'cesiumContainer'
,
{
infoBox
:
false
,
infoBox
:
false
,
shouldAnimate
:
true
});
});
let
siteInfo
=
{
let
siteInfo
=
{
...
@@ -24,19 +24,19 @@ onMounted(() => {
...
@@ -24,19 +24,19 @@ onMounted(() => {
position
:
[
20
,
20
,
250
],
position
:
[
20
,
20
,
250
],
ellipsoid
:
{
ellipsoid
:
{
radii
:
[
50000
,
50000
,
50000
],
radii
:
[
50000
,
50000
,
50000
],
innerRadii
:
[
1
,
1
,
1
],
innerRadii
:
[
1
,
1
,
1
],
minimumClock
:
45
,
minimumClock
:
45
,
maximumClock
:
90
,
maximumClock
:
90
,
minimumCone
:
45
,
minimumCone
:
45
,
maximumCone
:
75
,
maximumCone
:
75
,
outline
:
false
,
outline
:
false
,
fill
:
true
,
fill
:
true
,
},
},
label
:
{
label
:
{
text
:
''
text
:
''
},
},
}
}
;
addStationCoordinate
(
viewer
,
siteInfo
)
station
=
new
Station
(
viewer
,
siteInfo
.
id
,
siteInfo
);
};
};
document
.
head
.
appendChild
(
script
);
document
.
head
.
appendChild
(
script
);
...
@@ -44,6 +44,10 @@ onMounted(() => {
...
@@ -44,6 +44,10 @@ onMounted(() => {
link
.
rel
=
'stylesheet'
;
link
.
rel
=
'stylesheet'
;
link
.
href
=
'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css'
;
link
.
href
=
'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css'
;
document
.
head
.
appendChild
(
link
);
document
.
head
.
appendChild
(
link
);
}
onMounted
(()
=>
{
cesiumInit
()
});
});
</
script
>
</
script
>
...
@@ -52,4 +56,9 @@ onMounted(() => {
...
@@ -52,4 +56,9 @@ onMounted(() => {
width
:
100%
;
width
:
100%
;
height
:
100vh
;
height
:
100vh
;
}
}
.btn-class
{
position
:
absolute
;
top
:
10px
;
left
:
10px
;
}
</
style
>
</
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