更新 hov 统计页面相关逻辑

This commit is contained in:
hym 2026-04-02 14:27:33 +08:00
parent 57407dd84c
commit 124b943e7b
1 changed files with 57 additions and 12 deletions

View File

@ -25,11 +25,11 @@
<div class="map-module"> <div class="map-module">
<div class="bezel"> <div class="bezel">
<div class="map-title">下潜单位</div> <div class="map-title">下潜单位</div>
<div id="baiduCesiumContainer" ref="baiduCesiumContainer" style="height: 100%;width:100%;" /> <div id="workUnitMap_hov" ref="workUnitMap_hov" style="height: 100%;width:100%;" />
</div> </div>
<div class="bezel"> <div class="bezel">
<div class="map-title">下潜地图</div> <div class="map-title">下潜地图</div>
<div id="cesiumContainer" ref="cesiumContainer" style="height: 100%;width:100%;" /> <div id="voyageMap_hov" ref="voyageMap_hov" style="height: 100%;width:100%;" />
</div> </div>
</div> </div>
<!-- echarts板块--> <!-- echarts板块-->
@ -89,6 +89,9 @@ import PieChart from './components/PieChart.vue'
import { setImageryViewModels } from '../../utils/common' import { setImageryViewModels } from '../../utils/common'
import { reportList, platformHov, hovUnit, hovUnitYear, hovDiving } from '../../api/statistics' import { reportList, platformHov, hovUnit, hovUnitYear, hovDiving } from '../../api/statistics'
import { filterDictItems } from '../../utils/index' import { filterDictItems } from '../../utils/index'
import {initMapbox, handleWheel, initSprites, triggerLayerClick } from "@/utils/mapbox-utils";
import { loadVectorLayer, loadJsonLineFeature, loadJsonPointFeature, highlightFeaturesByProperty } from '@/utils/vector-layer-utils'
import { ColorGenerator } from '@/utils/color-generator';
const Cesium = window.Cesium const Cesium = window.Cesium
export default { export default {
@ -146,9 +149,24 @@ export default {
this.getChartBar({ year: '2025' }) this.getChartBar({ year: '2025' })
}, },
mounted() { mounted() {
this.imageryViewModels = setImageryViewModels(this.CesiumHostAddr) initMapbox("workUnitMap_hov", {
this.initCesium() // tileKey: "gaode",
this.initBaiduCesium() // zoom: 3,
center: [110, 31],
minZoom: 2,
maxZoom: 29
});
initMapbox("voyageMap_hov", {
tileKey: "GEBCO_basemap_NCEI",
zoom: 4,
center: [113, 15],
minZoom: 2,
maxZoom: 29
});
// this.imageryViewModels = setImageryViewModels(this.CesiumHostAddr)
// this.initCesium() //
// this.initBaiduCesium() //
}, },
beforeDestroy() { beforeDestroy() {
// Cesium // Cesium
@ -195,11 +213,32 @@ export default {
// //
getHovUnit() { getHovUnit() {
hovUnit().then(res => { hovUnit().then(res => {
// let geojson = {
this.clearBaiduCesiumMarkers() type: "FeatureCollection",
features: []
};
res.array.forEach(element => {
geojson.features.push({
type: "Feature",
geometry: {
type: "Point",
coordinates: [element.unit_lon, element.unit_lat]
},
properties: {
unit_name: element.unit_name,
unit_type: element.unit_type,
create_time: element.create_time,
tsy_id: element.tsy_id
}
});
});
loadJsonPointFeature("workUnit", "blue", geojson, "unit_name", "workUnitMap_hov");
// // //
this.createBaiduCesiumMarkers(res.array) // this.clearBaiduCesiumMarkers()
// //
// this.createBaiduCesiumMarkers(res.array)
const typeCount = res.array.reduce((acc, unit) => { const typeCount = res.array.reduce((acc, unit) => {
const type = unit.unit_type const type = unit.unit_type
acc[type] = (acc[type] || 0) + 1 // +11 acc[type] = (acc[type] || 0) + 1 // +11
@ -263,15 +302,21 @@ export default {
// //
gitHovDiving(params = {}) { gitHovDiving(params = {}) {
hovDiving(params).then(res => { hovDiving(params).then(res => {
let i = 0;
const colors = ColorGenerator.generateDivergingColors(res.array.length);
// //
res.array.forEach(item => { res.array.forEach(item => {
this.addSingleLineImg(item) //
loadVectorLayer(item.diving_sn, ["line", "symbol"], [colors[i], "#FFFFFF"], "visible", "voyageMap_hov", "dsds");
i++;
// this.addSingleLineImg(item)
}) })
}) })
}, },
// Cesium - // Cesium -
initBaiduCesium() { initBaiduCesium() {
this.baiduCesiumViewer = new Cesium.Viewer(this.$refs.baiduCesiumContainer, { this.baiduCesiumViewer = new Cesium.Viewer(this.$refs.workUnitMap_hov, {
sceneMode: Cesium.SceneMode.SCENE2D, sceneMode: Cesium.SceneMode.SCENE2D,
shadows: false, shadows: false,
timeline: false, timeline: false,
@ -307,7 +352,7 @@ export default {
// cesium // cesium
initCesium() { initCesium() {
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkY2Y5NWY2Ni1mODQ1LTQ3YTUtYjc4Zi1jYzhjMGI2YzcxMWYiLCJpZCI6MTI5ODMwLCJpYXQiOjE2Nzk0Njk5NTd9.DTH54ioOH-HLqeNIetBe9hFyrPOX2Vp1AQmZzw8TIZ4' Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkY2Y5NWY2Ni1mODQ1LTQ3YTUtYjc4Zi1jYzhjMGI2YzcxMWYiLCJpZCI6MTI5ODMwLCJpYXQiOjE2Nzk0Njk5NTd9.DTH54ioOH-HLqeNIetBe9hFyrPOX2Vp1AQmZzw8TIZ4'
this.viewer = new Cesium.Viewer('cesiumContainer', { this.viewer = new Cesium.Viewer('voyageMap_hov', {
sceneMode: Cesium.SceneMode.SCENE2D, sceneMode: Cesium.SceneMode.SCENE2D,
shadows: false, shadows: false,
timeline: false, timeline: false,