From 6d3a25365554f9c7c98b8a58fba7b7aa9b3f9e9f Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 14 Nov 2023 17:33:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/demo' into demo
---
src/hooks/use-cesium-tsa.ts | 53 ++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 38 insertions(+), 15 deletions(-)
diff --git a/src/hooks/use-cesium-tsa.ts b/src/hooks/use-cesium-tsa.ts
index 36fd161..f7a9c07 100644
--- a/src/hooks/use-cesium-tsa.ts
+++ b/src/hooks/use-cesium-tsa.ts
@@ -37,25 +37,31 @@
pitch?: number
roll?: number
}
+
+interface ellipseOption {
+ longitude: number
+ latitude: number
+}
+
// 定义全局的viewer变量防止重复生成
// eslint-disable-next-line no-var
var viewer: Cesium.Viewer | null = null
-export function cesiumOperation () {
+export function cesiumOperation() {
let handler: Cesium.ScreenSpaceEventHandler
const TDT_Token = 'c6eea7dad4fa1e2d1e32ec0e7c9735db'
// 天地图Key
// 天地图地图
const TDT_IMG_C = 'https://{s}.tianditu.gov.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0' +
- '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
- '&style=default&format=tiles&tk=' + TDT_Token
+ '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
+ '&style=default&format=tiles&tk=' + TDT_Token
// 天地图注记
const TDT_ZJ = 'https://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0' +
- '&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
- '&style=default&format=tiles&tk=' + TDT_Token
+ '&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
+ '&style=default&format=tiles&tk=' + TDT_Token
// 标准地图注记
const TID_STAND = 'https://{s}.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0' +
- '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
- '&style=default&format=tiles&tk=' + TDT_Token
+ '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
+ '&style=default&format=tiles&tk=' + TDT_Token
// 天地图图层变量
const imageryProvider_tdt = new Cesium.WebMapTileServiceImageryProvider({
url: TDT_IMG_C,
@@ -145,7 +151,7 @@
}
// 清除所有标记点
- function removeAllPoint () {
+ function removeAllPoint() {
if (viewer) {
viewer?.entities?.removeAll()
}
@@ -162,6 +168,22 @@
id: pointOption.id,
})
}
+ // 添加半径为7公里的范围的圆
+ const addEllipse = ({ longitude, latitude }: ellipseOption) => {
+ if (!longitude && !latitude) return
+ const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
+ viewer?.entities.add({
+ position,
+ id: 'rangeEllipse',
+ name: 'rangeEllipse',
+ ellipse: {
+ semiMinorAxis: 7000.0,
+ semiMajorAxis: 7000.0,
+ material: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.3),
+ }
+ })
+ console.log(viewer?.entities)
+ }
// 添加线段
const addPolyline = (pointOption: pointOption) => {
@@ -172,7 +194,7 @@
}
// 通过点ID删除
- function removeById (id:string) {
+ function removeById(id: string) {
viewer?.entities.removeById(id)
const pointEntity = viewer?.entities.getById(id)
if (pointEntity && pointEntity !== undefined) {
@@ -180,12 +202,12 @@
}
}
// 通过点ID获取实体
- function getEntityById (id:string) {
+ function getEntityById(id: string) {
const pointEntity = viewer?.entities.getById(id)
return pointEntity
}
// 更新图片实体位置
- function updateEntityPosition (longitude:number, latitude:number, id:string, params?:any) {
+ function updateEntityPosition(longitude: number, latitude: number, id: string, params?: any) {
const entity = getEntityById(id) as Cesium.Entity
const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
const heading = Cesium.Math.toRadians(-params.heading)
@@ -195,7 +217,7 @@
}
}
// 飞行 flyto
- const flyTo = (pointOption: pointOption, time: number = 4, height:number = 3000) => {
+ const flyTo = (pointOption: pointOption, time: number = 4, height: number = 3000) => {
if (!pointOption.longitude && !pointOption.latitude) return
const destination = Cesium.Cartesian3.fromDegrees(pointOption.longitude, pointOption.latitude, height)
const duration = time
@@ -230,20 +252,20 @@
}
// 地图放大
- const zoonIn = (range:number) => {
+ const zoonIn = (range: number) => {
// 获取当前视角的高度
const cameraHeight = viewer?.camera.positionCartographic.height
const amout = Cesium.Math.sign(range) * cameraHeight / Math.log(cameraHeight)
viewer?.camera.zoomIn(amout)
}
// 地图缩小
- const zoonOut = (range:number) => {
+ const zoonOut = (range: number) => {
const cameraHeight = viewer?.camera.positionCartographic.height
const amout = Cesium.Math.sign(range) * cameraHeight / Math.log(cameraHeight)
viewer?.camera.zoomOut(amout)
}
// 生成或删除路网图层
- const roadPattern = (flag:boolean) => {
+ const roadPattern = (flag: boolean) => {
if (store.state.common.mapSetting.mode === 0) return
const imageryLayers = viewer?.scene.imageryLayers
const tdtZwImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtZwImg_c')
@@ -312,6 +334,7 @@
getEntityById,
updateEntityPosition,
addPolyline,
+ addEllipse,
loadGeoJson,
removeAllDataSource
}
--
Gitblit v1.9.3