From b2392458ebf42594b9fc5390fda40d7a0a12f923 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期三, 03 九月 2025 17:40:52 +0800 Subject: [PATCH] 调试自动生成网格融合图片功能(待完成) --- package-lock.json | 22 + src/views/underwaymix/UnderwayMixMode.vue | 6 package.json | 2 src/utils/chart/shanghai.js | 587 ++++++++++++++++++++++++++++++++++ src/components.d.ts | 2 src/utils/chart/chart-map.js | 123 +++++++ src/views/historymode/component/MissionReport.vue | 100 +++++ src/utils/chart/chart-map-amap.js | 161 +++++++++ 8 files changed, 997 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2159988..b191bd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,8 @@ "docxtemplater": "^3.65.3", "docxtemplater-image-module-free": "^1.1.1", "echarts": "^5.5.0", + "echarts-china-cities-js": "^0.1.1", + "echarts-extension-amap": "^1.12.0", "element-plus": "^2.6.2", "file-saver": "^2.0.5", "jquery": "^3.7.1", @@ -2171,6 +2173,16 @@ "tslib": "2.3.0", "zrender": "5.5.0" } + }, + "node_modules/echarts-china-cities-js": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/echarts-china-cities-js/-/echarts-china-cities-js-0.1.1.tgz", + "integrity": "sha512-Xc7ShyUCaKeS5JHLygvpdZQ6A2nPN8MdVSMLMJhnl7Inatu1eRCJ6DtkeN4WtrjjpRmFYuQfYxKJ2K6Nb+3KLg==" + }, + "node_modules/echarts-extension-amap": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/echarts-extension-amap/-/echarts-extension-amap-1.12.0.tgz", + "integrity": "sha512-JpCCLhafpUGSfMcAB44lTnjnNuYWQ1jPuyvOF3t/zziQ1jbDjGLTkhIFenpKMuZOz9GzS4tREXL/zGeNrZpxDw==" }, "node_modules/echarts/node_modules/tslib": { "version": "2.3.0", @@ -7396,6 +7408,16 @@ } } }, + "echarts-china-cities-js": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/echarts-china-cities-js/-/echarts-china-cities-js-0.1.1.tgz", + "integrity": "sha512-Xc7ShyUCaKeS5JHLygvpdZQ6A2nPN8MdVSMLMJhnl7Inatu1eRCJ6DtkeN4WtrjjpRmFYuQfYxKJ2K6Nb+3KLg==" + }, + "echarts-extension-amap": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/echarts-extension-amap/-/echarts-extension-amap-1.12.0.tgz", + "integrity": "sha512-JpCCLhafpUGSfMcAB44lTnjnNuYWQ1jPuyvOF3t/zziQ1jbDjGLTkhIFenpKMuZOz9GzS4tREXL/zGeNrZpxDw==" + }, "editorconfig": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz", diff --git a/package.json b/package.json index f2b4b81..30351da 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ "docxtemplater": "^3.65.3", "docxtemplater-image-module-free": "^1.1.1", "echarts": "^5.5.0", + "echarts-china-cities-js": "^0.1.1", + "echarts-extension-amap": "^1.12.0", "element-plus": "^2.6.2", "file-saver": "^2.0.5", "jquery": "^3.7.1", diff --git a/src/components.d.ts b/src/components.d.ts index 0fc11c1..c67b3a0 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -31,6 +31,7 @@ ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] ElDropdown: typeof import('element-plus/es')['ElDropdown'] ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] @@ -39,6 +40,7 @@ ElIcon: typeof import('element-plus/es')['ElIcon'] ElImage: typeof import('element-plus/es')['ElImage'] ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElLink: typeof import('element-plus/es')['ElLink'] ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] diff --git a/src/utils/chart/chart-map-amap.js b/src/utils/chart/chart-map-amap.js new file mode 100644 index 0000000..b55f204 --- /dev/null +++ b/src/utils/chart/chart-map-amap.js @@ -0,0 +1,161 @@ +import * as echarts from 'echarts'; +import 'echarts-extension-amap'; + +/** + * 璁$畻鍦板浘涓績鐐瑰拰缂╂斁姣斾緥 + * @param {*} gridData 缃戞牸鏁版嵁 + * @returns + */ +function calCenterPointAndZoom(gridData) { + let centerLng = 0; + let centerLat = 0; + let maxLng = -180; + let minLng = 180; + let maxLat = -90; + let minLat = 90; + let zoom = 10; + gridData.forEach((g) => { + centerLng += g.centerLng; + centerLat += g.centerLat; + maxLng = Math.max(maxLng, g.centerLng); + minLng = Math.min(minLng, g.centerLng); + maxLat = Math.max(maxLat, g.centerLat); + minLat = Math.min(minLat, g.centerLat); + }); + if (gridData.length > 0) { + centerLng /= gridData.length; + centerLat /= gridData.length; + } + + return { + centerLng, + centerLat, + zoom + }; +} + +function generateGridMap(gridData) { + // 1. 鍒涘缓涓存椂DOM鍏冪礌 + const div = document.createElement('div'); + div.style.width = '800px'; + div.style.height = '400px'; + document.body.appendChild(div); + // 娉ㄥ唽涓婃捣甯傚湴鍥炬暟鎹� + // console.log(shanghaiMap); + + // shanghaiMap(echarts); + const chart = echarts.init(div); + + chart.on('amaproam', function (e) { + console.log(e); + }); + + // // get AMap extension component + // var amapComponent = chart.getModel().getComponent('amap'); + // // get the instance of AMap + // var amap = amapComponent.getAMap(); + // // add some controls provided by AMap. + // amap.addControl(new AMap.Scale()); + // amap.addControl(new AMap.ToolBar()); + // // add SatelliteLayer and RoadNetLayer to map + // // var satelliteLayer = new AMap.TileLayer.Satellite(); + // // var roadNetLayer = new AMap.TileLayer.RoadNet(); + // // amap.add([satelliteLayer, roadNetLayer]); + // // Add a marker to map + // amap.add( + // new AMap.Marker({ + // position: [110, 35] + // }) + // ); + + // 1. 鍑嗗缃戞牸鏁版嵁锛堣浆鎹负ECharts澶氳竟褰㈡牸寮忥級 + const gridPolygons = gridData.map((grid, index) => ({ + name: `grid_${index}`, + value: [grid.centerLng, grid.centerLat, grid.value], // 涓績鐐圭粡绾害鍜屾暟鍊� + coords: grid.coordinates // 缃戞牸鍥涜缁忕含搴﹀潗鏍囨暟缁� [[lng1,lat1], [lng2,lat2], ...] + })); + const { centerLng, centerLat, zoom } = calCenterPointAndZoom(gridData); + + // 2. 閰嶇疆椤� + const option = { + title: { + text: 'Travel Routes' + }, + // amap component option + amap: { + // enable 3D mode + viewMode: '3D', + // initial options of AMap + // See https://lbs.amap.com/api/javascript-api/reference/map#MapOption for details + // initial map center [lng, lat] + center: [centerLng, centerLat], + // initial map zoom + zoom: zoom, + // whether the map and echarts automatically handles browser window resize to update itself. + resizeEnable: true, + // customized map style, see https://lbs.amap.com/dev/mapstyle/index for details + mapStyle: 'amap://styles/dark', + // whether echarts layer should be rendered when the map is moving. Default is true. + // if false, it will only be re-rendered after the map `moveend`. + // It's better to set this option to false if data is large. + renderOnMoving: false, + // the zIndex of echarts layer for AMap, default value is 2000. + // deprecated since v1.9.0, use `echartsLayerInteractive` instead. + // echartsLayerZIndex: 2019, + // whether echarts layer is interactive. Default value is true + // supported since v1.9.0 + echartsLayerInteractive: true, + // whether to enable large mode. Default value is false + // supported since v1.9.0 + largeMode: false, + // whether to return map camera state in `amaproam` event. + // supported since v1.10.0 + returnMapCameraState: true + // Note: Please DO NOT use the initial option `layers` to add Satellite/RoadNet/Other layers now. + // There are some bugs about it, we can use `amap.add` instead. + // Refer to the codes at the bottom. + + // More initial options... + }, + series: [ + { + type: 'custom', + coordinateSystem: 'geo', + renderItem: (params, api) => { + // 灏嗙粡绾害杞崲涓哄睆骞曞潗鏍� + const grid = gridPolygons[params.dataIndex]; + // const v = api.value(0); + // const points = grid.coords.map((coord) => api.coord(coord)); + const points = grid.coords; + return { + type: 'polygon', + transition: ['shape'], + shape: { points }, + style: api.style({ + fill: grid.value[2], + stroke: grid.value[2], + lineWidth: 2 + }) + }; + }, + data: gridPolygons, + label: { show: false } + } + ] + }; + + chart.setOption(option); + // 3. 瀵煎嚭涓哄浘鐗囷紙杩斿洖base64锛� + return new Promise((resolve, reject) => { + setTimeout(() => { + const url = chart.getDataURL({ + type: 'png', + pixelRatio: 1, + backgroundColor: '#fff' + }); + resolve(url); + }, 3000); + }); +} + +export default { generateGridMap }; diff --git a/src/utils/chart/chart-map.js b/src/utils/chart/chart-map.js new file mode 100644 index 0000000..cb40c75 --- /dev/null +++ b/src/utils/chart/chart-map.js @@ -0,0 +1,123 @@ +import * as echarts from 'echarts'; +// import * as shanghaiMap from 'echarts-china-cities-js/echarts-china-cities-js/shanghai.js'; // 淇鍦板浘鏁版嵁鏂囦欢璺緞 +// import 'echarts-china-cities-js/echarts-china-cities-js/shanghai.js'; // 淇鍦板浘鏁版嵁鏂囦欢璺緞 +import { shanghai, jingan } from '@/utils/chart/shanghai.js'; // 纭繚璺緞姝g‘ + +/** + * 璁$畻鍦板浘涓績鐐瑰拰缂╂斁姣斾緥 + * @param {*} gridData 缃戞牸鏁版嵁 + * @returns + */ +function calCenterPointAndZoom(gridData) { + let centerLng = 0; + let centerLat = 0; + let maxLng = -180; + let minLng = 180; + let maxLat = -90; + let minLat = 90; + let zoom = 100; + gridData.forEach((g) => { + centerLng += g.centerLng; + centerLat += g.centerLat; + maxLng = Math.max(maxLng, g.centerLng); + minLng = Math.min(minLng, g.centerLng); + maxLat = Math.max(maxLat, g.centerLat); + minLat = Math.min(minLat, g.centerLat); + }); + if (gridData.length > 0) { + centerLng /= gridData.length; + centerLat /= gridData.length; + } + + console.log((maxLng - centerLng) / zoom); + + return { + centerLng, + centerLat, + zoom + }; +} + +function generateGridMap(gridData) { + // 1. 鍒涘缓涓存椂DOM鍏冪礌 + const div = document.createElement('div'); + div.style.width = '800px'; + div.style.height = '400px'; + document.body.appendChild(div); + // 娉ㄥ唽涓婃捣甯傚湴鍥炬暟鎹� + // console.log(shanghaiMap); + + // shanghaiMap(echarts); + echarts.registerMap('shanghai', { geoJSON: shanghai }); + const chart = echarts.init(div); + + // 1. 鍑嗗缃戞牸鏁版嵁锛堣浆鎹负ECharts澶氳竟褰㈡牸寮忥級 + const gridPolygons = gridData.map((grid, index) => ({ + name: `grid_${index}`, + value: [grid.centerLng, grid.centerLat, grid.value], // 涓績鐐圭粡绾害鍜屾暟鍊� + coords: grid.coordinates // 缃戞牸鍥涜缁忕含搴﹀潗鏍囨暟缁� [[lng1,lat1], [lng2,lat2], ...] + })); + const { centerLng, centerLat, zoom } = calCenterPointAndZoom(gridData); + + // 2. 閰嶇疆椤� + const option = { + // title: { + // text: 'Travel Routes' + // }, + geo: { + map: 'shanghai', // 鍩虹鍦板浘 + center: [centerLng, centerLat], + roam: true, // 绂佹缂╂斁骞崇Щ + zoom: zoom, // 鍦板浘缂╂斁姣斾緥 + label: { show: true }, // 鏄剧ず鍦板悕鏍囩 + itemStyle: { areaColor: '#ddddddff', borderColor: '#999' } + }, + // series: [ + // { + // type: 'scatter', + // coordinateSystem: 'geo', + // data: [ + // { + // name: '榛勬郸鍖�', + // value: [121.490317, 31.222771, 100] // 涓績鐐瑰潗鏍�+鏁板�� + // } + // ] + // } + // ] + series: [ + { + type: 'custom', + coordinateSystem: 'geo', + renderItem: (params, api) => { + // 灏嗙粡绾害杞崲涓哄睆骞曞潗鏍� + const grid = gridPolygons[params.dataIndex]; + // const v = api.value(0); + const points = grid.coords.map((coord) => api.coord(coord)); + // const points = grid.coords; + return { + type: 'polygon', + transition: ['shape'], + shape: { points }, + style: api.style({ + fill: grid.value[2], + stroke: 'white', + lineWidth: 1 + }) + }; + }, + data: gridPolygons, + label: { show: false } + } + ] + }; + + chart.setOption(option); + // 3. 瀵煎嚭涓哄浘鐗囷紙杩斿洖base64锛� + return chart.getDataURL({ + type: 'png', + pixelRatio: 1, + backgroundColor: '#ddddddff' + }); +} + +export default { generateGridMap }; diff --git a/src/utils/chart/shanghai.js b/src/utils/chart/shanghai.js new file mode 100644 index 0000000..1b5f6e8 --- /dev/null +++ b/src/utils/chart/shanghai.js @@ -0,0 +1,587 @@ +const shanghai = { + type: 'FeatureCollection', + features: [ + { + id: '310101', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@AHV@BDCPEPLENFHCJHFBNCAGBGXWFIBGCGMUKKCCcGCDGBALCPIAAPGR' + ], + encodeOffsets: [[124373, 31970]] + }, + properties: { + cp: [121.490317, 31.222771], + name: '榛勬郸鍖�', + childNum: 1 + } + }, + { + id: '310104', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@CEAMMAA@C@AFA@@BC@ABC@@BD@@BH@@BB@EHDDCBECADGEEAEBFNET]CMRELQjOEGRFBAHDBAHH@@B@BDA`H@F@BC@AB@FD@DD@@@CH@DDAFDD^LEPF@DFTDPHHQBOJBDOBKHADCOGCEAE@EFOBMAEUW@GBEHILMBE@KGM' + ], + encodeOffsets: [[124381, 31859]] + }, + properties: { + cp: [121.43752, 31.179973], + name: '寰愭眹鍖�', + childNum: 1 + } + }, + { + id: '310105', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@AACE@FO]KCCBECCG@@D@@CCmBSAcKG@EBAEGC@DC@QE@CA@@BEBMTNFAFDBA`D@BDA@AA@FFBBLD@@@IBDBABDB@@DBADB@CHA@@DC@C@@@BBABFDH@AHD@ACDA@FD@BCA@@CJCNWJ@BCHAFEF@XCV@DFH@VFBBCFD@HEFFFBB@@IDAJFBABIFK' + ], + encodeOffsets: [[124354, 31964]] + }, + properties: { + cp: [121.4222, 31.218123], + name: '闀垮畞鍖�', + childNum: 1 + } + }, + { + id: '310106', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@AB@PCJBNG@ABBDBB@DNBAJJ@@FB@@H@@@DF@ENB@BDD@BAT@BENDFDPB@AF@A]G@BOCKCEBA@G@KBEDCLMVQ@EACDECABCDKECGDMEKFFODOACU@BGOGUCELAJABIECBBNFHJBTLHB@BADDD@FB@@DC@BHOVUJCFIG' + ], + encodeOffsets: [[124340, 32022]] + }, + properties: { + cp: [121.448224, 31.229003], + name: '闈欏畨鍖�', + childNum: 1 + } + }, + { + id: '310107', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@DB@DHBBCDBB@A@DF@@DFDDHGBDDALZCB@@EBA@ACQ@@DGBEFBB@FD@J@BFMBCCCDID@AODAEIDBDEBABBB@DC@AF@@AFGACBADBB@@NFADD@@BB@B@BAB@@@BBDA@HBB@AJ@@AD@@BB@AFHBDCJFHBGQAAJA@ALCBBF@@AB@@BD@@@JABDABD@@BHBBBNACEJA@ADAAA@B@ADAAAJBIQB@FCBBD@AGJ@@EJA@EHADDAB@BFANNDEVIPUAGD@@CA@@ECCBC@AGASKIAEGACA@EAEEA@EFC@DEAAUEG@CEU@WDE@EFGBADI@MV' + ], + encodeOffsets: [[124267, 31987]] + }, + properties: { + cp: [121.392499, 31.241701], + name: '鏅檧鍖�', + childNum: 1 + } + }, + { + id: '310109', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@OHWVFBABIKK@MJCJGBKV[C@@I[AOEODCACCCLADDBCFBD@FURQT@J@F@HABDFDLAPH@BTVCLBBE' + ], + encodeOffsets: [[124402, 32064]] + }, + properties: { + cp: [121.491832, 31.26097], + name: '铏瑰彛鍖�', + childNum: 1 + } + }, + { + id: '310110', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@JD@U\\ALIHID@NLLAJABUEGX@PVA@ZDDADGFX`ZKDHFAFHpSNGDCDGDM@cBGL[BKAGEGMOcY[GWA' + ], + encodeOffsets: [[124433, 31997]] + }, + properties: { + cp: [121.522797, 31.270755], + name: '鏉ㄦ郸鍖�', + childNum: 1 + } + }, + { + id: '310112', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@EBAD@@A@E_GCB@A@AG@BGCABGEAHQPFRiFKNQ^DFSEMFAFBHFBCFDDACCFGA@@AG@@AC@@AD@BAD@@AB@BED@B@F@B@FBBNDFLCDBCBFB@DFG@CBBABDB@CDBAFCB@DABD@B@DB@BD@@B@BB@B@@FJ@DKLFB@DMDBBABBCFDB@@HB@BBABBDCBGNBDAB@@BPDBAF@@AB@@AB@@CDB@BF@DGB@@CD@FDADF@BADDDCBBDCAAC@BCFEAAB@FECABC@ADBBEB@@EGCABAB@@CAA@CAIABAAA@@ECDGD@BCBBD@BBHBFALABAFBD@@CGA@BC@BCEAA@A@@AEA@@AAA@G@DCG@CCBAAA@ADBDAEAC@ACE@BCC@BG@ACBBAEAAA@B@CECDEAEBAB@BDB@DBD@BBD@FDBGBBFCAABCBDBCEC@UBACA@AAA@ABB@CCCE@AA@ADCD@@BF@@FB@@BDB@CDB@ED@DFB@ABB@HDAADCBE@CCACC@CACIABA@@@BD@@AD@DICABCECFA@AMEO@@CC@ABA@@ABA@GCACBADCDA@@BAAAB@BICADE@@BEAABC@GHC@E@@FD@@BA@CFC@@BC@AASEKG@ACAIZBFGDYCIAKGKAU@OCGAKIMIMCOEeC聭WOBQHI@C@CBB\\HBPTBHJHABECM@ADBB@J@F@D@B@FBDAD@NBBBN@T@DBBADFCFDDGTDJFAFNB@DB@EFFBADD@@DFDDCDBADERCDAB@DELGAADMCEPHB@AB@@BHF@@GNQV@DEJCDC@ADD@@BCFABADA@@FCB@DCD@DABA@EJEF@BEJCLGJABCHAB@BABCFCB@BED@BA@@BABADGFAAA@@CAAKGCAKAUTC@CDDBADIHDFCF@@CDBDCHDBAHGDBDCDABCAABAFKACBDDABBF@@@BHBBDDBC@BDFFFBBDD@@AH@HB@EFC@ABC@FFCFBB@LCFBBAEGFEDABGJMJCL@XGNFH@PDBB@FHDBAAA@@D@D@@CB@DGA@BCCA@@CABACAJA@@C@AKEA@EBBB@ACC@B_CABEMENSFA@AB@@DRFD@@CHDBFFAH@dLTBjA' + ], + encodeOffsets: [[124327, 31940]] + }, + properties: { + cp: [121.375972, 31.111658], + name: '闂佃鍖�', + childNum: 1 + } + }, + { + id: '310113', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@JE@@BOAECMCAFS@ABC@ACA@FME@@C@@@GA@@EI@BIMA@CCA@CBAH@AMDI@OBACEEB@ABACCGB@FIB@FI@BHC@AAEDA@JRIABBCB@B@ABBCB@BIBDFMBAAGA@AC@BAACIB@@C@@AA@@BE@AAKD@BIBBBHRC@ICCCCDGABEA@@AC@@BI@@BAA@GCBAAA@ABBBCDAAEJFDB@P\\J@@FB@@DGA@FD@@DAAADCF@@ABBBCDDB@DF@CLCAEFEB@DG@@HD@DB@BB@@FHD@BADA@CFCFABDB@BED@BCDEFFBABB@ADG@GNCBFHAFA@@DCAIB@DB@@FBBEF^JBAH@AFD@A@@DA@@BFDABD@@JB@@BA@AD@DB@@FCJ@FA@C@ABAAABENDB@BCDCFG@ADDBEDDDABA@ADB@ADF@BD@BEACD@BCBJF@BABA@BBCFE@ABCLABBBAFEB@A@BCDEBADD@CBBBBAADBBD@B@BBADFADDDA@ED@ACB@FF@DFBBCB@@AC@@GF@B@AFD@@DB@@AD@@BD@\\PfK^I|]BAEGBE\\Q`W|i\\UdSXUBD@DFAEG\\UQQQY@QJONIVIEGEBCGYLW_HEBCCC@YUBAFKAUD' + ], + encodeOffsets: [[124384, 32068]] + }, + properties: { + cp: [121.489934, 31.398896], + name: '瀹濆北鍖�', + childNum: 1 + } + }, + { + id: '310114', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@A@A@@AC@BCME@@AABCDAHBBE@@BED@@CAABAFAACJCBFPC@BJCDCDDNAAEI@C@@EAAFEHA@CR@BDB@FA@@DAKYCBACGHCCCE@@CEB@A@CAADGA@CCAADGB@DB@ADC@@ECBBDC@BGG@CCIC@EAAOCG@OEUHK@IDINAHCBEFFHABEAKDA@EAED@EAD@BED@FGAG@@BC@@AC@@DA@@CCBEA@DGAKFOB@CG@@BAA@CGCBAEA@CA@@DEA@FCFB@ABAAABAC@AAACFGEBCABCCABCCABCAB@@CC@ADGDEEC@EDCA@BA@BDA@ACEFECABC@@BB@BDC@AJIJCAADC@CGEB@@AB@BDF@JDD@DHBABD@B@@BCHE@@BC@@DCA@DC@@DDBADA@EDFBIPCFIIBCMAE@AJ@B@FAB@DAJDB@DDB@FD@@BCBBBB@@DABAB@DCBBBAHBB@FMCKB@HF@EHIACBE@BFCBBLAH@DD@@CD@D@BFNBCDGBAFTHBEBB@DB@@AJD@ANFABBBD@ABD@@ANDBDCD@BABA@ABLDCFDBF@ABC@ABDB@BFDADJDDCCDBDCDAAABBB@BC@ABA@ABC@@HA@C@@DJ@@DFB@BD@HB@AD@ABBDFA@HA@@CA@BDABOBMFAFB@ADBDAB\\LDAHBBADBHAPFJFAFBFFD@BJHRD@FHFNHDACCLADBH@DDFABHCB@BHJF@AJ@@FAFDB@AEFE@CBIHB@AC@@AA@DEHD@BD@ADB@BDB@AKD@@DBA@@@AD@DBBDBBDBD@@FDDBA@CDAHDBBHDADB@FA@BD@DCD@BFFCJD@DA@FBBDFADC@A@BFABEAABADKBAF@DEAAB@BA@AIEDA@ADCFB@AACE@BCA@BCB@BACCFCCABCH@DEDC@ACAFMBABBBAD@B@@EDI@EA@@CBCB@@AA@@IC@BAEC@AB@@CB@C@BEG@AB]IFEAA@EA@@CJADB@CB@BEEGDAHMH@BCA@BAEAFEDC@AFC@ACABALQGC@ECCE@@GH@@CFAFEDBDKE@@CCADCAABA@@DEBCBB@CC@@EHB@CA@@EI@GMEMICFIBBBABAAA' + ], + encodeOffsets: [[124249, 32046]] + }, + properties: { + cp: [121.250333, 31.383524], + name: '鍢夊畾鍖�', + childNum: 1 + } + }, + { + id: '310115', + type: 'Feature', + geometry: { + type: 'MultiPolygon', + coordinates: [ + [ + '@@bM虏WLC募脩NI^_脠茂聵聯聙sJQ露卤`e`Z隆L聝D聡CsEWOWs@GBI\\wsYg|QNUB模Fq聞AZHZB@@JHBAJFRA@BB@HABB@@J@HBDBLAJC@@BD@ABA@B@AD@FB@@BA@@BA@G@@FC@AB@DA@ABCAC@@DEA@DD@BDEF@FQJE@CAGJA@ABCAEDBDGHADWR_TYJI@G@SD@AA@@AA@IDGB@A@BQBmAA@CBOAGFELC@AAaDACS@C@@AIAABKA@BEBFDADDBCJC@@BC@@A@@ABJBBD@DDDDB@DAFCDBBGCA@BAA@CEC@@FCA@DCA@AA@@EE@@AC@CD@BBBF@DD@DAA@BBB@BDBAB@VFDADACADBBEDAAAHECC@AAC@CAA@ACA@ABBFCFFD@D@ABBFBABDA@BAHD@ADF@BDD@FBCBCA@BBBABDDH@CDH@B@BB@@FB@BB@B@FBADD@@AHB@DC@EAABKBEBGAAAC@AAADC@CHFD@@BBABJBDBB@DB@@BABAHD@FA@AFCA@BADDBEFA@BBEFADD@BBCDAACDCCABE@BCECC@@DA@CHE@@ACA@DA@@BA@@BE@ABOC@AA@CBMAAHCDAAAB@AGA@@CADEAAABCACNA@KECLC@E@@EA@A@@A@AC@@AAAA@A@C@BA@CDABEAAADCABAAA@DEH@CEADACAKDHN@LAFKNGJAF@D@DBFNLHLANEP@FBFJJJDdHDDLLNVDHAHEJWXAF@FJFHDtDXHhZNPFHBHALK\\AH@dCNCHCDMHoTUJMJIP@RRZRR' + ], + ['@@PDNAvOFGBKCeEQGEI@IBMNY\\GJELATBJ'], + ['@@HRHJNBX@XCRGfEFGBM@eYuGIgCIAK@KDMPIREVCXARBP'] + ], + encodeOffsets: [[[124438, 32149]], [[124808, 31991]], [[124870, 31965]]] + }, + properties: { + cp: [121.567706, 31.245944], + name: '娴︿笢鏂板尯', + childNum: 3 + } + }, + { + id: '310116', + type: 'Feature', + geometry: { + type: 'MultiPolygon', + coordinates: [ + ['@@DBBAGCBD'], + ['@@HADA@AGCKHBBF@'], + ['@@FACAAD'], + [ + '@@DB@EB@@CB@@GEQ@IEKAM@ATE@EHADF@GDCFFPD^BBED@@BD@@DPBB@@CDB@BLC@ADB@BF@@CF@@DB@BDCDA@@DCACBC@AB@HDBRTHGBCHBDB@AF@B@NACQ@@@AC@@CC@CIEE@CFCFHDBHABDN@BED@BDNA@HAF@FCBADDLD@DAAC@AB@@ANC@ANC@TDBL@DGJC^BDBDBJ@^F\\VHGPB@CD@BAF@DKDBBCA@BAC@FK@E@BD@@BNABCF@@AFB@AD@BADB@GA@@AF@BCFBDKB@@BDBB@BEDBBDF@@CFB@HD@@F@@@HA@BBA@BDC@BJADBBLB@AA@@ED@DIHA@BB@BDDBBCBA@@@BF@@CB@ABFBBCFB@BD@FCF@DBBAD@BAD@BABBBAHDJ@ABDDABDBHCBDJIBOFE@IDKJAFCBAJELAAEBCBKAA@GD@AIBEAIDOK@@EDEAABA@A@BB@@@B@B@AAD@@ADA@EJ@@CB@H@BLDBFA@@B@@GEB@EB@@CB@DETAAADA@GH@BHLAPA@ABBD@JU@ABBFCB@聜拢芦ugW聸聫OCOCgB聡DaAE`@HCBBFCBAJA@AFDFAFFD@FDFCFBBA@BBAFBDA@CDAAA@STCBWLAAABBBCBAACB@AABBBIFAPCHCFBBCB@HA@CAABGPIBO@ICCEDMGAILADACCBCA@CECEAKCADCBADAAKAEC@HEBCAEDQBACEAAB@BGCYDEJCB@BBFN@B@@JDbHRJL@D@FA@@CCB@DABBDEFACSDA@AAA@DDBLFHAB@BABCAIDADABCEKCABC@CDABBBC@@B@BA@BBcO[@MGDCC@DK_KFMGBCFGADEA@AGCA@@DAD@AFB@BCB@DGOCCLKR]JADEAMMABBCA@CB@BABCAACB@CEAB@CAAGBDFGFHFGBBDFHF@BDB@ABBFDADFF@DHD@DFFADDGDDDADDABDA@DDCDFFBDEBFFDCDBCBDDEBBDB@@@CDCDI@GB@BBFAB]DAHCDDH@DDBHB@DHABDB@@FG@CABJBl@FEFCFBB@LB@J@@GPDA@DD@AD@D@@CCA@BCA@CB@A@@AF@BGFAADDB@ARF' + ] + ], + encodeOffsets: [ + [[124321, 31442]], + [[124337, 31429]], + [[124341, 31419]], + [[123933, 31687]] + ] + }, + properties: { + cp: [121.330736, 30.724697], + name: '閲戝北鍖�', + childNum: 4 + } + }, + { + id: '310117', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@DLB@BFTHAFB@DABHFELFBBAH@DIHB@GB@@CB@BEDAB@LAPB@DFBADD@@BBBN@@DRB@BADALHABlH@@\\ABAFQPOLDBDBDCJBBJFA@FCJC@@DCAABDDBDKHB@CDBDEBCEINHDABFB@DDDD@F@@ABCAA@EB@@CH@B@BCBABD@DLBBCB@R@ADD@BAJ@BBBB@BA@@NG@AFELC@AB@@CBA@KJAAA@CAC@CLD@ABBBGJDBBDCFBBDCFDADBBDCABB@@BA@HHDBABFFDCBBDCB@BABB@AFEBBBED@FEDDBED@BALB@CD@DEHBBGDBBCB@BFB@@LC@@FJA@AJB@@B@@FB@@HH@@BJ@CJDDADDBB@B@BCJD@DB@AB@FC@@FC@@D@FDA@X\\ILF@CAA@ABBJ@DEXFPBI_CM@CF@NFF@BBB@BAADBLFBJABHKB@@L@BHXCAGBAF@@BB@@BCFBDDBD@BB^ENNEFEAEHCC@DBB@BB@AH@BFCD@B@ABDB@@FAF@ABXFnNHKB@BA@CDC@CDA@EB@BCBADE@AC@BCD@DCFI@CRUHM@@GE@AA@@BGAFONDBCHBFK@CBAHODICACDEC@CC@BCEAFEA@@CMABEIESCCHECEDBCAA@WAMAA@MBCAC@E@A@C@E@IAABCN@FDBAIGAGOSGAA[DAD@J@XIJ@PDDI@ODK@UD@BCAAGADSG@CAA@AABAAAA@@BECBC@IFCBC@CIG@A@AGDCABACCBAA@@@G@GCCB@AABC@ABC@ABCAE@EDC@@AEAADEABAA@@DE@@A@@ABADCAACA@@AGBCJC@@FB@@BMCBCAID@ACB@AAB@@G@@@EC@@GEA@DE@ACCAAFA@CA@AA@CLEAADE@@BB@@HCAABC@@BEA@BE@ADMB@AC@@A@FELD@ABB@ADCACLE@ABC@@DOAGH[U]EI@CACA]AIDCHK@CA@SMD@BMD@BA@@BBDCBC@CKBCDA@EBE@GMBACC@AFM@ACGBCAEGED@DFFDJD@@DD@@B@@DRMBA@E@@BCAGAADGHQSCA@GBAD@DADB@CB@DCACA@@CE@@DE@@ACA@BKD@ACA@DA@OA@CC@@AC@AF]AOCEECD@HCEGB@FSF@BBNFL@JFR@HA@@DA@@FCA' + ], + encodeOffsets: [[123933, 31687]] + }, + properties: { + cp: [121.223543, 31.03047], + name: '鏉炬睙鍖�', + childNum: 1 + } + }, + { + id: '310118', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@@GCIBA@@FADHD@BCDBJIBID@ACA@@AD@BAFDFEBDB@ACB@@ADBFCD@FFHCBCD@@DA@DBBADDBADDBAADHFDEBB@BBDBABBBAA@DE@EFB@CB@@DFBABHD@DBB@AH@@DPALEHB@CFBDA@DB@@CD@AAEAEEACD@CAACGA@A@@AEBACCDALBBEBADBBADCACHCBGCADGACDC@@DECEJGBCCADCD@VSLBDBLHBB@DB@BBFCDEBA@AB@@AFC@ADADEBA@ABADGBAHIDKJOmMWEBAE@EB@@CABAA@C@ED@ABGA@@AAA@CDDFGFBFEMM]FAAC@CAACDE@AA@@AE@ABBHWDAGK@@@LAAGIBEAAKBCABA@AAE@MEE@@DDNJ`OAWECFI@AA@BBB@DKE[J@WCB@E@CD@@ED@@EBAA@@CICADA@A@CABCCCDII@@AG@@GA@@EA@@@IA@BIB@ED@@KA@AEA@ADCAAHGACFC@@DKAABC@AFCCEFC@AFAAEF@BAAABA@CDAACDEEBACAGGB@@AA@BACDAABCECCDAADGAACAHIAABAC@@EDEB@HBBBLIB@DA@@BAD@FKBEH@@MB@@AAAAAI@ABC@BCQ@A@ADKA@CACABADA@G@@DA@@FBBAD@BE@C@CC@CEABAGCJMDFFAACDCA@LGACCCBADB@CD@DI@EEBAIIACDCACAPKROBEBA@[G@AkGBBKBC@AQA@CM@AA@AC@BCEA@COAKBA@CBAFA@@DA@@HGACJG@ABEAFKGEBA@CEAGBEUKA@CQE@BCABCEBAHE@@BB@A@@DDB@ADB@DC@C@@BCCB@OC@HM@AHC@AHF@CHBF@BC@@DB@ADBB@BNB@BB@@FDB@DC@A@CRA@CFBBAFGAADDB@HA@@DB@@D@@ADBBEJDBM@ADg@ABFFABGBCNGBC@CACBAADAAEFACK[AAAJK@AC@GBEDG@ACOFOEAD@JQ@@FBdCDEL@FCD@H@JHXBPHABDEJ@BEDCACHCFAHA@@EG@QB@BBDE@@DE@AAE@@CG@ABADA@ABCAABCDBLD@DHNJDD@HDHHHJFdDPCTD\\JnE聙MPDvBJHADHBBD@BD@@EHBFCBEDB@AD@HREB@FHD@DHBBGD@H@ABDBL@@AB@@AD@@CFA@BAFFD@BBB@CB@@FHDADB@@DEAADJB@DCHEAABBB@BFBAFEFADJDABIAADFB@DAB@B@BDBABCB@BE@@DD@Kz@DD@@HD@@DC@ADA@A@AFFB@HBA@BAB@FC@@AIBDBDABD@NA@BBBBABBRA@@@dFFDDHEBBHDNFFABDBDADCB@@AB@BCFO@ABCHCD@BBC@@@FDPRF@FA@DB@@AHAACFCHA@DFAACD@BBDAAABAD@BBD@@CDALBFB' + ], + encodeOffsets: [[124062, 32028]] + }, + properties: { + cp: [121.113021, 31.151209], + name: '闈掓郸鍖�', + childNum: 1 + } + }, + { + id: '310120', + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + '@@LBBAJB@BD@T@BDbCBBD@FKHEPBDAB@nBRA@A@BHAJCB@@BB@@BTCH@J@ZI`SXQBCHGACFCDBBAB@HIDBF@NGDA@EFEACC@@CFB@CD@DBBAB@@CBAD@@EH@B@@AB@@AA@@EBCA@B@BAC@@AD@BIAKAC@G@IA@BA@GAAB@EQBIGA@IA@GYBYr聝磨D聝E聼U隆_聣[聧g聛陇A@EDAA@BIVC@AA@BOBKBAGG@@HCBBBSBCFA@@DA@@FFA@HA@@@EBCAAKG@A@@DI@@FCB@BC@BBA@A@@@A@@A@BABBBCF@FL@CPBJAFBJC@@HBBALADBFKBIFABEDIBCL@JEFAPKJHFBFADED@JADFD@AB@BBABBBB@DBH@CTHBBBADC@@VCL@PCJ聜TfD^JNJLJHBPDV@LBLHJBZDHCAEJYDB@BLHTFBBD@@AD@DEB@@AC@@EF@D@HGD@BAFB@AF@BCJD@ABABB@AB@DCBCDADB@HAB@BB@BAD@@DP@NF' + ], + encodeOffsets: [[124489, 31743]] + }, + properties: { + cp: [121.458472, 30.912345], + name: '濂夎搐鍖�', + childNum: 1 + } + }, + { + type: 'Feature', + properties: { name: '宕囨槑鍖�' }, + geometry: { + id: '310151', + type: 'MultiPolygon', + coordinates: [ + ['@@脝聹p@dG露聝聬Y聙I脨聫tu脝u卢聫RW聢Wck臏yPV膯g冒脮TUm聟U楼c}S聯H楼|梅聦聺^oG臐卢氓聤碌x聝b聶聻cAXor聭職]d職聙'], + ['@@聰M職URm@kYiD[YRwRmdS^ChQv'], + ['@@卢Q聵SzoMU忙gLShQ聰e^sFwS_aL聯聮茂聻{d\\ungZeNGZ'] + ], + encodeOffsets: [[[124119, 32586]], [[124716, 32134]], [[124427, 32249]]] + } + } + ], + UTF8Encoding: !0 +}; + +const jingan = { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + properties: { + adcode: 310106, + name: '闈欏畨鍖�', + center: [121.448224, 31.229003], + centroid: [121.450659, 31.270821], + childrenNum: 0, + level: 'district', + acroutes: [100000, 310000], + parent: { adcode: 310000 } + }, + geometry: { + type: 'MultiPolygon', + coordinates: [ + [ + [ + [121.457686, 31.220193], + [121.457341, 31.221073], + [121.456896, 31.221918], + [121.456836, 31.222496], + [121.45683, 31.223524], + [121.456756, 31.223898], + [121.463101, 31.223965], + [121.464071, 31.22396], + [121.465837, 31.223818], + [121.467041, 31.223818], + [121.46746, 31.223866], + [121.467634, 31.224483], + [121.467658, 31.225632], + [121.467914, 31.225714], + [121.46762, 31.226205], + [121.467326, 31.226987], + [121.467171, 31.228149], + [121.466971, 31.230888], + [121.466521, 31.233394], + [121.466323, 31.234315], + [121.466123, 31.234911], + [121.465596, 31.235913], + [121.464792, 31.237236], + [121.46428, 31.238272], + [121.462973, 31.2414], + [121.463977, 31.241383], + [121.464964, 31.241177], + [121.466288, 31.240751], + [121.466713, 31.240541], + [121.468365, 31.239476], + [121.46956, 31.239214], + [121.470546, 31.239326], + [121.471621, 31.239771], + [121.472217, 31.240104], + [121.473497, 31.240947], + [121.474129, 31.241227], + [121.474847, 31.241421], + [121.475601, 31.241491], + [121.476666, 31.241425], + [121.477235, 31.241178], + [121.478915, 31.240294], + [121.479632, 31.240108], + [121.480324, 31.240106], + [121.481051, 31.240316], + [121.481494, 31.240543], + [121.482989, 31.24192], + [121.48241, 31.243204], + [121.482349, 31.243485], + [121.482133, 31.245363], + [121.48177, 31.246579], + [121.481234, 31.247955], + [121.480922, 31.248386], + [121.479589, 31.249809], + [121.479809, 31.249983], + [121.481668, 31.250694], + [121.481137, 31.251637], + [121.480238, 31.252688], + [121.480142, 31.252672], + [121.479626, 31.253389], + [121.480299, 31.254318], + [121.480586, 31.255244], + [121.480606, 31.255687], + [121.480494, 31.258569], + [121.479924, 31.258773], + [121.479596, 31.259014], + [121.47806, 31.260385], + [121.476536, 31.261668], + [121.475907, 31.262157], + [121.475187, 31.262575], + [121.473565, 31.263954], + [121.471293, 31.266139], + [121.470196, 31.267128], + [121.469601, 31.267802], + [121.468328, 31.269536], + [121.467741, 31.270393], + [121.466818, 31.271619], + [121.464722, 31.274298], + [121.464298, 31.274684], + [121.463842, 31.274959], + [121.463094, 31.27521], + [121.46284, 31.275389], + [121.461868, 31.277313], + [121.461826, 31.2784], + [121.461477, 31.278881], + [121.461513, 31.279676], + [121.461773, 31.279726], + [121.461842, 31.28015], + [121.461791, 31.280839], + [121.461401, 31.2818], + [121.461341, 31.282394], + [121.461566, 31.283042], + [121.461807, 31.284695], + [121.461584, 31.285232], + [121.461471, 31.286237], + [121.46141, 31.287236], + [121.461073, 31.287937], + [121.460985, 31.288811], + [121.460449, 31.289318], + [121.460086, 31.28978], + [121.460165, 31.29011], + [121.460831, 31.290782], + [121.461385, 31.291657], + [121.461584, 31.292112], + [121.461852, 31.292391], + [121.462448, 31.292745], + [121.463238, 31.295091], + [121.463738, 31.295745], + [121.463956, 31.296366], + [121.464207, 31.296623], + [121.46425, 31.297359], + [121.464527, 31.297993], + [121.464328, 31.299093], + [121.464173, 31.299625], + [121.464224, 31.300182], + [121.464529, 31.300877], + [121.463837, 31.304554], + [121.463532, 31.306002], + [121.467679, 31.306304], + [121.468138, 31.313354], + [121.468277, 31.315201], + [121.46839, 31.31745], + [121.468139, 31.320323], + [121.465222, 31.320395], + [121.465377, 31.3214], + [121.457137, 31.320999], + [121.454704, 31.319248], + [121.453006, 31.318544], + [121.450502, 31.317729], + [121.447887, 31.317103], + [121.447298, 31.318571], + [121.446717, 31.319813], + [121.43677, 31.319667], + [121.43669, 31.319671], + [121.436459, 31.320871], + [121.433712, 31.320923], + [121.433599, 31.320868], + [121.433191, 31.318541], + [121.432471, 31.318666], + [121.434621, 31.312298], + [121.432939, 31.311956], + [121.432167, 31.311686], + [121.432497, 31.310515], + [121.432488, 31.310298], + [121.432011, 31.30996], + [121.431673, 31.309578], + [121.431925, 31.308556], + [121.43213, 31.307382], + [121.432434, 31.305914], + [121.431048, 31.305769], + [121.431294, 31.303635], + [121.428471, 31.303309], + [121.426428, 31.303203], + [121.426398, 31.303136], + [121.426566, 31.301729], + [121.426869, 31.299864], + [121.426937, 31.298531], + [121.426513, 31.298408], + [121.423642, 31.297254], + [121.420493, 31.296932], + [121.420033, 31.296912], + [121.420399, 31.29572], + [121.419766, 31.295616], + [121.419635, 31.295002], + [121.419141, 31.294837], + [121.419245, 31.294164], + [121.418872, 31.294026], + [121.418827, 31.293039], + [121.418645, 31.292889], + [121.418645, 31.292256], + [121.418915, 31.292288], + [121.418932, 31.291689], + [121.419618, 31.291678], + [121.419695, 31.291068], + [121.421249, 31.291377], + [121.422392, 31.291115], + [121.423801, 31.291057], + [121.423634, 31.289408], + [121.423514, 31.289124], + [121.423315, 31.288167], + [121.42327, 31.287252], + [121.422852, 31.284456], + [121.422977, 31.283988], + [121.423608, 31.282076], + [121.423971, 31.28115], + [121.424439, 31.280233], + [121.424544, 31.27986], + [121.424656, 31.278808], + [121.424544, 31.278365], + [121.424752, 31.277268], + [121.424326, 31.27603], + [121.424491, 31.274629], + [121.424568, 31.271929], + [121.424716, 31.271298], + [121.425252, 31.270666], + [121.429579, 31.274707], + [121.429838, 31.274926], + [121.431236, 31.273054], + [121.431635, 31.272599], + [121.432414, 31.27194], + [121.437095, 31.26944], + [121.438855, 31.268794], + [121.441255, 31.268019], + [121.44226, 31.267654], + [121.44272, 31.26738], + [121.442953, 31.26712], + [121.44595, 31.263248], + [121.449614, 31.258406], + [121.449796, 31.258205], + [121.450376, 31.257229], + [121.451043, 31.256263], + [121.450393, 31.255578], + [121.450056, 31.25513], + [121.44989, 31.25457], + [121.449883, 31.253838], + [121.449492, 31.253565], + [121.449319, 31.252923], + [121.451467, 31.251992], + [121.451285, 31.250735], + [121.450644, 31.250767], + [121.450696, 31.250599], + [121.45074, 31.249199], + [121.450619, 31.248408], + [121.45041, 31.247747], + [121.449422, 31.246393], + [121.448609, 31.245627], + [121.448314, 31.24522], + [121.448435, 31.244523], + [121.448755, 31.24419], + [121.449994, 31.243294], + [121.449283, 31.242527], + [121.449102, 31.242443], + [121.447232, 31.241971], + [121.445956, 31.241445], + [121.443854, 31.240191], + [121.443358, 31.23981], + [121.442583, 31.239454], + [121.441226, 31.238662], + [121.440291, 31.238051], + [121.439537, 31.237777], + [121.43798, 31.237016], + [121.43728, 31.236321], + [121.436038, 31.235579], + [121.435165, 31.235251], + [121.434589, 31.235149], + [121.433085, 31.234998], + [121.431336, 31.235141], + [121.431007, 31.235103], + [121.430505, 31.234336], + [121.428423, 31.231865], + [121.427912, 31.231149], + [121.427748, 31.230668], + [121.427515, 31.229284], + [121.42787, 31.225897], + [121.427877, 31.224958], + [121.427713, 31.224225], + [121.427912, 31.224093], + [121.429031, 31.22309], + [121.429769, 31.223936], + [121.430148, 31.22421], + [121.430636, 31.22438], + [121.431702, 31.22452], + [121.43221, 31.22466], + [121.433275, 31.225253], + [121.434302, 31.225891], + [121.43541, 31.225069], + [121.435435, 31.224379], + [121.435872, 31.222598], + [121.436119, 31.220855], + [121.436787, 31.219099], + [121.437315, 31.217976], + [121.43777, 31.217211], + [121.438651, 31.215329], + [121.439252, 31.214432], + [121.443164, 31.21522], + [121.444506, 31.215506], + [121.446559, 31.215743], + [121.447999, 31.216023], + [121.449545, 31.216475], + [121.451527, 31.21718], + [121.452317, 31.217496], + [121.454984, 31.219196], + [121.455921, 31.219758], + [121.457686, 31.220193] + ] + ] + ] + } + } + ] +}; + +export { shanghai, jingan }; diff --git a/src/views/historymode/component/MissionReport.vue b/src/views/historymode/component/MissionReport.vue index 41e34ec..2f55c67 100644 --- a/src/views/historymode/component/MissionReport.vue +++ b/src/views/historymode/component/MissionReport.vue @@ -32,22 +32,54 @@ 鐢熸垚鍥剧墖 </el-button> </el-form-item> + <el-form-item> + <el-image :src="base64Url" fit="fill" :preview-src-list="[base64Url]" /> + </el-form-item> + <el-form-item> + <el-button + type="primary" + class="el-button-custom" + @click="handleMixClick" + :loading="docLoading" + > + 鐢熸垚缃戞牸鍥剧墖 + </el-button> + <el-form-item> + <el-form-item> + <el-image + :src="gridBase64Url" + fit="fill" + :preview-src-list="[gridBase64Url]" + /> + </el-form-item> + </el-form-item> + </el-form-item> </el-form> - <el-form-item> - <el-image :src="base64Url" fit="fill" :preview-src-list="[base64Url]" /> - </el-form-item> </CardDialog> </template> <script setup> import { computed, ref } from 'vue'; import moment from 'moment'; import dataAnalysisApi from '@/api/dataAnalysisApi'; +import gridApi from '@/api/gridApi'; import { exportDocx } from '@/utils/doc'; import { radioOptions } from '@/constant/radio-options'; import { TYPE0 } from '@/constant/device-type'; import { FactorDatas } from '@/model/FactorDatas'; import factorDataParser from '@/utils/chart/factor-data-parser'; import chartToImg from '@/utils/chart/chart-to-img'; +import chartMap from '@/utils/chart/chart-map'; +import chartMapAmap from '@/utils/chart/chart-map-amap'; +import { Legend } from '@/model/Legend'; +import { getHexColor, getColorBetweenTwoColors } from '@/utils/color'; + +// 鍊熺敤鍗槦閬ユ祴妯″潡涓殑100绫崇綉鏍� +const props = defineProps({ + groupId: { + type: Number, + default: import.meta.env.VITE_DATA_MODE == 'jingan' ? 2 : 3 + } +}); const formObj = ref({ timeArray: [new Date('2025-07-01T00:00:00'), new Date('2025-08-31T23:59:59')], @@ -57,6 +89,9 @@ const docLoading = ref(false); const base64Url = ref(null); +const gridBase64Url = ref(null); + +const gridCellList = ref([]); const params = computed(() => { return { @@ -313,6 +348,65 @@ return images; } +function handleMixClick() { + const tags = [1, 2]; + const fetchGridData = () => { + gridApi.mixUnderwayGridData(props.groupId, tags).then((res) => { + const gridData = res.data.map((v) => { + const data = v.pm25; + const grid = gridCellList.value.find((g) => { + return g.cellIndex == v.cellId; + }); + const { color, nextColor, range, nextRange } = + Legend.getStandardColorAndNext('PM25', data); + const ratio = (data - range) / (nextRange - range); + const _color = getColorBetweenTwoColors( + color.map((v) => v * 255), + nextColor.map((v) => v * 255), + ratio + ); + + // // 鏍规嵁閬ユ祴鏁版嵁璁$畻缃戞牸棰滆壊 + // const { color, nextColor, range, nextRange } = + // Legend.getCustomColorAndNext(data, min, max); + // const ratio = (data - range) / (nextRange - range); + + // const _color = getColorBetweenTwoColors( + // color.map((v) => v * 255), + // nextColor.map((v) => v * 255), + // ratio + // ); + return { + centerLng: grid.longitude, + centerLat: grid.latitude, + value: _color, + coordinates: [ + [grid.point1Lon, grid.point1Lat], + [grid.point2Lon, grid.point2Lat], + [grid.point3Lon, grid.point3Lat], + [grid.point4Lon, grid.point4Lat] + ] + }; + }); + // chartMapAmap.generateGridMap(gridData).then((url) => { + // gridBase64Url.value = url; + // }); + gridBase64Url.value = chartMap.generateGridMap(gridData); + }); + }; + + if (gridCellList.value.length == 0) { + gridApi + .fetchGridCell(props.groupId) + .then((res) => { + gridCellList.value = res.data; + }) + .then(() => fetchGridData()); + } else { + fetchGridData(); + } +} + function generateDocx() { exportDocx( '/underway_season_report.docx', diff --git a/src/views/underwaymix/UnderwayMixMode.vue b/src/views/underwaymix/UnderwayMixMode.vue index eefbb4c..060cb1d 100644 --- a/src/views/underwaymix/UnderwayMixMode.vue +++ b/src/views/underwaymix/UnderwayMixMode.vue @@ -128,13 +128,13 @@ prop="zone" label="鍖哄煙" align="center" - width="50" + width="60" /> <el-table-column prop="pollutionDegree" label="姹℃煋鑳屾櫙" align="center" - width="70" + width="66" /> </el-table> @@ -229,7 +229,7 @@ const props = defineProps({ groupId: { type: Number, - default: 3 + default: import.meta.env.VITE_DATA_MODE == 'jingan' ? 2 : 3 } }); const show = ref(true); -- Gitblit v1.9.3