|
|
@ -2,7 +2,7 @@ |
|
|
|
* @Author: Fuyuu 1805498209@qq.com |
|
|
|
* @Date: 2024-01-03 17:42:49 |
|
|
|
* @LastEditors: Fuyuu 1805498209@qq.com |
|
|
|
* @LastEditTime: 2024-01-19 09:44:33 |
|
|
|
* @LastEditTime: 2024-01-24 14:16:26 |
|
|
|
* @FilePath: \dt-admin-pc-v2\src\utils\earthMap\shipDraw.ts |
|
|
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
|
|
*/ |
|
|
@ -21,59 +21,50 @@ let aisShipList: any = []; |
|
|
|
// 融合船只数据列表
|
|
|
|
let mixShipList: any = []; |
|
|
|
|
|
|
|
// 角度转弧度
|
|
|
|
/** |
|
|
|
* 角度制转弧度制方法 |
|
|
|
* @param point 点位置[经度,纬度] |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
function toRadians(point) { |
|
|
|
return window.Cesium.Math.toRadians(point); |
|
|
|
} |
|
|
|
|
|
|
|
// 绘制AIS船只
|
|
|
|
const drawAISShips = function (shipItem) { |
|
|
|
// 模型配置参数
|
|
|
|
let options = { |
|
|
|
id: shipItem.trackId, |
|
|
|
name: `${shipItem.trackId}号船_ais`, |
|
|
|
modelUrl: window._CONFIG['domianURL'] + '/sys/common/static/greenShip.gltf', |
|
|
|
position: [toRadians(shipItem.longitude + 0.00005), toRadians(shipItem.latitude + 0.00005), 0], |
|
|
|
rotation: [(Math.PI / 180) * (shipItem.course - 90), 0, 0], |
|
|
|
}; |
|
|
|
// 绘制船只
|
|
|
|
let shipModel = addShipModel(options, 1); |
|
|
|
// 返回船只绘制信息
|
|
|
|
return shipModel; |
|
|
|
}; |
|
|
|
// 绘制雷达船只
|
|
|
|
const drawRadarShips = function (shipItem) { |
|
|
|
// 模型配置参数
|
|
|
|
let options = { |
|
|
|
id: shipItem.trackId, |
|
|
|
name: `${shipItem.trackId}号船_radar`, |
|
|
|
modelUrl: window._CONFIG['domianURL'] + '/sys/common/static/yellowShip.gltf', |
|
|
|
position: [toRadians(shipItem.longitude), toRadians(shipItem.latitude), 0], |
|
|
|
rotation: [(Math.PI / 180) * (shipItem.course - 90), 0, 0], |
|
|
|
}; |
|
|
|
// 绘制船只
|
|
|
|
let shipModel = addShipModel(options, 2); |
|
|
|
// 返回船只绘制信息
|
|
|
|
return shipModel; |
|
|
|
}; |
|
|
|
// 绘制融合船只
|
|
|
|
const drawMixShips = function (shipItem) { |
|
|
|
/** |
|
|
|
* 绘制船只 |
|
|
|
* @param shipItem 船只数据 |
|
|
|
* @param shipType 船只类型 1-雷达 2-ais 3-融合 |
|
|
|
* @returns 绘制的船只实例 |
|
|
|
*/ |
|
|
|
const drawShips = function (shipItem, shipType) { |
|
|
|
// 模型配置参数
|
|
|
|
let options = { |
|
|
|
id: shipItem.trackId, |
|
|
|
name: `${shipItem.trackId}号船_mix`, |
|
|
|
modelUrl: window._CONFIG['domianURL'] + '/sys/common/static/tongyongchuan.gltf', |
|
|
|
position: [toRadians(shipItem.longitude + 0.0001), toRadians(shipItem.latitude + 0.0001), 0], |
|
|
|
rotation: [(Math.PI / 180) * (shipItem.course - 90), 0, 0], |
|
|
|
id: shipItem.trackId, // 船只ID 通过雷达获取
|
|
|
|
name: shipType == 1 ? `${shipItem.trackId}号船_radar` : shipType == 2 ? `${shipItem.trackId}号船_ais` : `${shipItem.trackId}号船_mix`, // 船只名称 具有区分不同数据类型船只的特殊标识
|
|
|
|
modelUrl: |
|
|
|
shipType == 1 |
|
|
|
? window._CONFIG['domianURL'] + '/sys/common/static/greenShip.gltf' |
|
|
|
: shipType == 2 |
|
|
|
? window._CONFIG['domianURL'] + '/sys/common/static/yellowShip.gltf' |
|
|
|
: window._CONFIG['domianURL'] + '/sys/common/static/tongyongchuan.gltf', // 模型资源路径
|
|
|
|
position: [ |
|
|
|
toRadians(shipType == 3 ? shipItem.longitude + 0.0001 : shipType == 2 ? shipItem.longitude + 0.00005 : shipItem.longitude), |
|
|
|
toRadians(shipType == 3 ? shipItem.latitude + 0.0001 : shipType == 2 ? shipItem.latitude + 0.00005 : shipItem.latitude), |
|
|
|
0, |
|
|
|
], // 模型单次扫描的坐标 [经度,纬度]
|
|
|
|
rotation: [(Math.PI / 180) * (shipItem.course - 90), 0, 0], // 模型单词扫描的航向 [偏航角,俯仰角,翻转角]
|
|
|
|
}; |
|
|
|
// 绘制船只
|
|
|
|
let shipModel = addShipModel(options, 3); |
|
|
|
let shipModel = addShipModel(options, shipType); |
|
|
|
// 返回船只绘制信息
|
|
|
|
return shipModel; |
|
|
|
}; |
|
|
|
|
|
|
|
// 绘制地球上所有雷达船只
|
|
|
|
export const drawRadarShipsList = function (radarItem) { |
|
|
|
/** |
|
|
|
* 绘制地球上所有雷达船只 |
|
|
|
* @param radarItem 雷达船只数据 |
|
|
|
*/ |
|
|
|
export const drawRadarShipsList = function (radarItem, isShowTrack) { |
|
|
|
// 接收到的单个雷达船只信息
|
|
|
|
let radarData = radarItem.radarTrack; |
|
|
|
// 获取store中的雷达船只数据列表
|
|
|
@ -90,26 +81,39 @@ export const drawRadarShipsList = function (radarItem) { |
|
|
|
// 航向需要后续调整。。。
|
|
|
|
shipData.xbsjRotation = [(Math.PI / 180) * (radarData.course - 90), 0, 0]; |
|
|
|
} else { |
|
|
|
// 新增船只轨迹信息
|
|
|
|
let trackData = addShipTrack([[toRadians(radarData.longitude), toRadians(radarData.latitude), 0]], 1); |
|
|
|
// 根据按钮状态决定轨迹显隐
|
|
|
|
trackData.show = isShowTrack; |
|
|
|
// 将时间戳转换
|
|
|
|
let time = new Date(Math.floor(radarData.timestamp / 1000) * 1000) |
|
|
|
// 添加新的雷达船只
|
|
|
|
radarShipList.push({ |
|
|
|
name: `${radarData.trackId}号船_radar`, // 名称
|
|
|
|
trackId: radarData.trackId, // 船只id
|
|
|
|
guid: drawRadarShips(radarData).xbsjGuid, // 船只场景id
|
|
|
|
// 根据不同的数据类型绘制不同的轨迹线 轨迹线guid,用于轨迹显隐
|
|
|
|
track_guid: addShipTrack([[toRadians(radarData.longitude), toRadians(radarData.latitude), 0]], 1).xbsjGuid, |
|
|
|
guid: drawShips(radarData, 1).xbsjGuid, // 船只场景id
|
|
|
|
track_guid: trackData.xbsjGuid, // 根据不同的数据类型绘制不同的轨迹线 轨迹线guid,用于轨迹显隐
|
|
|
|
radarId: radarData.radarId, // 雷达ID
|
|
|
|
timestamp: `${time.getFullYear()}-${time.getMonth()+1}-${time.getDate()} ${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}`, // 时间
|
|
|
|
azimuth: radarData.azimuth, // 方位角
|
|
|
|
course: radarData.course, // 航向
|
|
|
|
latitude: radarData.latitude, // 纬度
|
|
|
|
longitude: radarData.longitude, // 经度
|
|
|
|
radarId: radarData.radarId, // 雷达id
|
|
|
|
dis: radarData.dis, // 距离
|
|
|
|
speed: radarData.speed, // 速度
|
|
|
|
altitude: radarData.altitude, // 海拔
|
|
|
|
type: radarData.type, // 类型
|
|
|
|
}); |
|
|
|
// 更新store
|
|
|
|
store.radarShipList = radarShipList; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// 绘制地球上所有ais船只(暂无AIS数据,使用雷达数据进行模拟)
|
|
|
|
export const drawAISShipsList = function (aisItem) { |
|
|
|
/** |
|
|
|
* 绘制地球上所有ais船只(暂无AIS数据,使用雷达数据进行模拟) |
|
|
|
* @param aisItem AIS船只数据 |
|
|
|
*/ |
|
|
|
export const drawAISShipsList = function (aisItem, isShowTrack) { |
|
|
|
// 接收到的单个ais船只信息
|
|
|
|
let aisData = aisItem.radarTrack; |
|
|
|
// 获取store中的ais船只数据列表
|
|
|
@ -128,6 +132,10 @@ export const drawAISShipsList = function (aisItem) { |
|
|
|
// 航向需要后续调整。。。
|
|
|
|
shipData.xbsjRotation = [(Math.PI / 180) * (aisData.course - 90), 0, 0]; |
|
|
|
} else { |
|
|
|
// 新增船只轨迹信息
|
|
|
|
let trackData = addShipTrack([[toRadians(aisData.longitude + 0.00005), toRadians(aisData.latitude + 0.00005), 0]], 2); |
|
|
|
// 根据按钮状态决定轨迹显隐
|
|
|
|
trackData.show = isShowTrack; |
|
|
|
// 添加新的ais船只
|
|
|
|
aisShipList.push({ |
|
|
|
name: `${aisData.trackId}号船_ais`, // 名称
|
|
|
@ -146,9 +154,8 @@ export const drawAISShipsList = function (aisItem) { |
|
|
|
nationality: 'CN', // 国籍
|
|
|
|
pre_arrival_time: '2024-01-08 14:40:11', // 预到时间
|
|
|
|
trackId: aisData.trackId, // 船只id
|
|
|
|
guid: drawAISShips(aisData).xbsjGuid, // 船只场景id
|
|
|
|
// 根据不同的数据类型绘制不同的轨迹线 轨迹线guid,用于轨迹显隐
|
|
|
|
track_guid: addShipTrack([[toRadians(aisData.longitude + 0.00005), toRadians(aisData.latitude + 0.00005), 0]], 2).xbsjGuid, |
|
|
|
guid: drawShips(aisData, 2).xbsjGuid, // 船只场景id
|
|
|
|
track_guid: trackData.xbsjGuid, // 根据不同的数据类型绘制不同的轨迹线 轨迹线guid,用于轨迹显隐
|
|
|
|
azimuth: aisData.azimuth, // 方位角
|
|
|
|
course: aisData.course, // 航向
|
|
|
|
latitude: aisData.latitude + 0.00005, // 纬度
|
|
|
@ -160,8 +167,11 @@ export const drawAISShipsList = function (aisItem) { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// 绘制地球上所有融合船只(暂无融合数据,使用雷达数据进行模拟)
|
|
|
|
export const drawMixShipsList = function (mixItem) { |
|
|
|
/** |
|
|
|
* 绘制地球上所有融合船只(暂无融合数据,使用雷达数据进行模拟) |
|
|
|
* @param mixItem 融合船只数据 |
|
|
|
*/ |
|
|
|
export const drawMixShipsList = function (mixItem, isShowTrack) { |
|
|
|
// 接收到的单个融合船只信息
|
|
|
|
let mixData = mixItem.radarTrack; |
|
|
|
// 获取store中的融合船只数据列表
|
|
|
@ -178,13 +188,16 @@ export const drawMixShipsList = function (mixItem) { |
|
|
|
// 航向需要后续调整。。。
|
|
|
|
shipData.xbsjRotation = [(Math.PI / 180) * (mixData.course - 90), 0, 0]; |
|
|
|
} else { |
|
|
|
// 新增船只轨迹信息
|
|
|
|
let trackData = addShipTrack([[toRadians(mixData.longitude + 0.0001), toRadians(mixData.latitude + 0.0001), 0]], 3); |
|
|
|
// 根据按钮状态决定轨迹显隐
|
|
|
|
trackData.show = isShowTrack; |
|
|
|
// 添加新的融合船只
|
|
|
|
mixShipList.push({ |
|
|
|
name: `${mixData.trackId}号船_mix`, // 名称
|
|
|
|
trackId: mixData.trackId, // 船只id
|
|
|
|
guid: drawMixShips(mixData).xbsjGuid, // 船只场景id
|
|
|
|
// 根据不同的数据类型绘制不同的轨迹线 轨迹线guid,用于轨迹显隐
|
|
|
|
track_guid: addShipTrack([[toRadians(mixData.longitude + 0.0001), toRadians(mixData.latitude + 0.0001), 0]], 3).xbsjGuid, |
|
|
|
guid: drawShips(mixData, 3).xbsjGuid, // 船只场景id
|
|
|
|
track_guid: trackData.xbsjGuid, // 根据不同的数据类型绘制不同的轨迹线 轨迹线guid,用于轨迹显隐
|
|
|
|
azimuth: mixData.azimuth, // 方位角
|
|
|
|
course: mixData.course, // 航向
|
|
|
|
latitude: mixData.latitude + 0.0001, // 纬度
|
|
|
|