From 0b700614e2f3e41df4655ba5469217e009c246ac Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期一, 24 二月 2025 17:09:13 +0800 Subject: [PATCH] 1. 初步完成走航融合相关功能 --- src/views/satellitetelemetry/SatelliteProxy.js | 131 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 115 insertions(+), 16 deletions(-) diff --git a/src/views/satellitetelemetry/SatelliteProxy.js b/src/views/satellitetelemetry/SatelliteProxy.js index 1b36366..03973ea 100644 --- a/src/views/satellitetelemetry/SatelliteProxy.js +++ b/src/views/satellitetelemetry/SatelliteProxy.js @@ -1,6 +1,43 @@ import calculate from '@/utils/map/calculate'; import gridMapUtil from '@/utils/map/grid'; -import { map } from '@/utils/map/index_old'; +import { map, onMapMounted } from '@/utils/map/index_old'; + +let districtPolygon; +// 缁樺埗鍖哄幙杈圭晫 +function drawDistrict(districtName, isNew) { + onMapMounted(() => { + if (districtPolygon && !isNew) { + map.remove(districtPolygon); + map.add(districtPolygon); + } else { + // eslint-disable-next-line no-undef + var district = new AMap.DistrictSearch({ + extensions: 'all', //杩斿洖琛屾斂鍖鸿竟鐣屽潗鏍囩瓑鍏蜂綋淇℃伅 + level: 'district' //璁剧疆鏌ヨ琛屾斂鍖虹骇鍒负鍖� + }); + district.search(districtName, function (status, result) { + var bounds = result.districtList[0].boundaries; //鑾峰彇鏈濋槼鍖虹殑杈圭晫淇℃伅 + if (bounds) { + for (var i = 0; i < bounds.length; i++) { + //鐢熸垚琛屾斂鍖哄垝 polygon + // eslint-disable-next-line no-undef + districtPolygon = new AMap.Polygon({ + map: map, //鏄剧ず璇ヨ鐩栫墿鐨勫湴鍥惧璞� + strokeWeight: 2, //杞粨绾垮搴� + path: bounds[i], //澶氳竟褰㈣疆寤撶嚎鐨勮妭鐐瑰潗鏍囨暟缁� + fillOpacity: 0, //澶氳竟褰㈠~鍏呴�忔槑搴� + fillColor: '#CCF3FF', //澶氳竟褰㈠~鍏呴鑹� + // strokeColor: '#ffffff' //绾挎潯棰滆壊 + strokeColor: '#0552f7', //绾挎潯棰滆壊 + zIndex: 9 + }); + } + map.setFitView(); //灏嗚鐩栫墿璋冩暣鍒板悎閫傝閲� + } + }); + } + }); +} function clearAll(mapViews) { if (mapViews) { @@ -20,20 +57,39 @@ } // 缁樺埗缃戞牸绾� -function drawPolyline(gridInfo) { +function drawPolyline(gridInfo, event) { // 缁樺埗缃戞牸 const points = gridInfo.map((v) => { return calculate.wgs84_To_Gcj02(v.longitude, v.latitude); - // return [v.longitude, v.latitude] + // return [v.longitude, v.latitude]; }); - const gridPoints = gridMapUtil.parseGridPoint(points); - const gridViews = gridMapUtil.drawPolylines(gridPoints); + // const gridPoints = gridMapUtil.parseGridPoint(points); + // console.log('gridPoints:', gridPoints); + + const gridPoints = gridInfo.map((v, i) => { + return { + path: [ + calculate.wgs84_To_Gcj02(v.point1Lon, v.point1Lat), + calculate.wgs84_To_Gcj02(v.point2Lon, v.point2Lat), + calculate.wgs84_To_Gcj02(v.point3Lon, v.point3Lat), + calculate.wgs84_To_Gcj02(v.point4Lon, v.point4Lat) + // [v.point1Lon, v.point1Lat], + // [v.point2Lon, v.point2Lat], + // [v.point3Lon, v.point3Lat], + // [v.point4Lon, v.point4Lat] + ] + // eslint-disable-next-line no-undef + .map((d) => new AMap.LngLat(d[0], d[1])), + extData: points[i] + }; + }); + const gridViews = gridMapUtil.drawPolylines({ points: gridPoints, event }); return { gridViews, gridPoints, points }; } // 缁樺埗鐩戞祴鏁版嵁鍊� -function drawDataText(points, gridData, textViews, labelsLayer) { - const data = gridData.map((v, i) => { +function drawDataText(points, gridDataDetail, textViews, labelsLayer) { + const data = gridDataDetail.map((v, i) => { return { lnglat_GD: points[i], // data: v.pm25 ? (v.pm25 + '渭g/m鲁') : '' @@ -41,12 +97,12 @@ }; }); // return gridMapUtil.drawGridTextLabel(data, textViews, labelsLayer, 'bottom'); - return gridMapUtil.drawGridText(data, textViews, 'top-center'); + return gridMapUtil.drawGridText(data, textViews, 'top-center', 'data'); } // 缁樺埗鐩戞祴鏁版嵁鎺掑悕鏂囨湰 -function drawRankText(points, gridData, textViews, labelsLayer) { - const data = gridData.map((v, i) => { +function drawRankText(points, gridDataDetail, textViews, labelsLayer) { + const data = gridDataDetail.map((v, i) => { return { lnglat_GD: points[i], // data: v.pm25 ? ('鎺掑悕: ' + v.rank) : '' @@ -54,22 +110,65 @@ }; }); // return gridMapUtil.drawGridTextLabel(data, textViews, labelsLayer, 'top'); - return gridMapUtil.drawGridText(data, textViews, 'bottom-center'); + return gridMapUtil.drawGridText(data, textViews, 'bottom-center', 'rank'); } // 缁樺埗鐩戞祴鏁版嵁鍊煎搴旂綉鏍奸鑹� -function drawColor(gridViews, gridData, customColor) { - const pm25Data = gridData.map((v) => { - return v.pm25; +function drawColor({ + gridViews, + points, + gridDataDetail, + lastGridViews, + opacity, + zIndex, + customColor +}) { + // 鏍规嵁鏁版嵁绛涢�夋湁鏁版嵁鐨勭綉鏍� + const res = []; + // 浠ュ強瀵瑰簲鐨勪腑蹇冪偣鍧愭爣 + const pointsRes = []; + gridDataDetail.forEach((d) => { + // 鏍规嵁鏁版嵁鍏宠仈鐨勭綉鏍肩紪鍙凤紝鎵惧埌瀵瑰簲缃戞牸 + const cellId = d.cellId; + if (cellId > gridViews.length) { + throw Error( + '閬ユ祴鏁版嵁鐨勭綉鏍肩储寮曠紪鍙疯秴鍑虹綉鏍肩粍鑼冨洿锛屾暟鎹拰缃戞牸缁勫彲鑳戒笉瀵瑰簲' + ); + } + res.push(gridViews[cellId - 1]); + pointsRes.push(points[cellId - 1]); }); + + // 鏍规嵁缁樺埗棰滆壊鏂瑰紡缁樺埗缃戞牸 + let resGridViews; if (customColor) { - gridMapUtil.drawGridColorCustom(gridViews, pm25Data); + resGridViews = gridMapUtil.drawGridColorCustom( + res, + gridDataDetail, + opacity, + zIndex + ); } else { - gridMapUtil.drawGridColor(gridViews, pm25Data, 'PM25'); + resGridViews = gridMapUtil.drawGridColor( + res, + gridDataDetail, + 'PM25', + opacity, + zIndex + ); } + + if (lastGridViews) { + map.remove(lastGridViews); + } + map.add(resGridViews); + map.setFitView(resGridViews); + + return { resGridViews, pointsRes }; } export default { + drawDistrict, drawPolyline, drawDataText, drawRankText, -- Gitblit v1.9.3