Преглед изворни кода

Merge branch 'master' of http://114.244.114.158:8802/siwei/onemap-implementationSupervision-system-frontend

wanger пре 2 месеци
родитељ
комит
f17fc7bb5a
2 измењених фајлова са 64 додато и 2 уклоњено
  1. 62 2
      website/src/utils/arcMap.js
  2. 2 0
      website/src/utils/qmMap.js

+ 62 - 2
website/src/utils/arcMap.js

@@ -2,7 +2,7 @@ import "ol/ol.css";
 import { Map, View } from 'ol';
 import TileLayer from 'ol/layer/Tile';
 import XYZ from 'ol/source/XYZ'
-import { fromLonLat, get, transform , Projection} from 'ol/proj';
+import { fromLonLat, get, transform , Projection, addProjection } from 'ol/proj';
 import MousePosition from 'ol/control/MousePosition';
 import VectorLayer from 'ol/layer/Vector';
 import VectorSource from 'ol/source/Vector';
@@ -28,6 +28,10 @@ import { createXYZ } from 'ol/tilegrid';
 import { appendParams } from 'ol/uri';
 import axios from "axios";
 import { createMapboxStreetsV6Style } from "@/utils/mvt_style.js";
+import proj4 from 'proj4';
+import { register } from 'ol/proj/proj4'
+import WMTS from 'ol/source/WMTS';
+import WMTSTileGrid from 'ol/tilegrid/WMTS';
 import {
     LineString,
     MultiLineString,
@@ -39,7 +43,8 @@ import {
 import { baseLayer } from './map.js'
 import { assertEnumMember } from "@babel/types";
 import { ElMessage } from "element-plus";
-
+proj4.defs("EPSG:4490", "GEOGCS[\"China Geodetic Coordinate System 2000\",DATUM[\"China_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4490\"]]");
+register(proj4);
 var map;
 
 const arcMap = (function() {
@@ -991,6 +996,61 @@ const arcMap = (function() {
                 arcMap.zoomToLayer(record.url);
             }
         },
+        add4490(){
+            const projection = new Projection({ code: 'EPSG:4490', units: 'degrees', axisOrientation: 'neu' })
+            projection.setExtent([-180, -90, 180, 90]);
+            projection.setWorldExtent([-180, -90, 180, 90]);
+            addProjection(projection);
+            return projection
+        },
+        rest: function (record, call, zoom) {
+            // 获取投影信息   
+            let projection = arcMap.add4490(); 
+            const tileSizePixels = 256;
+            const tileSizeMtrs = getWidth(projection.getExtent()) / tileSizePixels;
+
+            // 创建WMTS瓦片网格
+            const matrixIds = [];
+            const resolutions = [];
+            for (let i = 0; i <= 16; i++) {
+                matrixIds[i] = i;
+                resolutions[i] = tileSizeMtrs / Math.pow(2, i);
+            }
+            // 创建WMTS源
+            const wmtsSource = new WMTS({
+                url: record.url,//'http://10.255.134.70:8090/iserver/services/map-dwd_res_gov_hbdk/wmts100',
+                layer:  record.sde,//'dwd_res_gov_hbdk@gtkjzl_db',
+                style: 'default', 
+                version: '1.0.0',
+                matrixSet: record.icon || ('CUSTOM_' + record.sde), 
+                format: 'image/png',
+                projection,
+                tileGrid: new WMTSTileGrid({
+                    origin: getTopLeft(projection.getExtent()), 
+                    resolutions: resolutions,
+                    matrixIds: matrixIds
+                }),
+                wrapX: true,
+                // attributions: 'zhx © 版权信息'
+            });
+            const untiled = new TileLayer({
+                url: record.url,
+                name: record.url,
+                id: record.bsm || record.id,
+                source: wmtsSource,
+                zIndex: (record.sort || 1) * -1,
+            });
+            if (call) {
+                return untiled;
+            }
+            arcMap.addLayer(untiled);
+
+            // arcMap.map.getView().setCenter([108.53 , 39.2 ])
+            //ZOOM
+            if (zoom) {
+                arcMap.zoomToLayer(record.url);
+            }
+        },
         //加载图层
         addProLayer: function(record, call, zoom) {
             const formData = new FormData();

+ 2 - 0
website/src/utils/qmMap.js

@@ -1,9 +1,11 @@
 import myMap from "@/utils/map.js";
 import arcMap from "@/utils/arcMap.js";
+// import SuperMap from "@/utils/SuperMap.js";
 
 export const qmMap = {
     Arcgis: arcMap,
     GeoServer: myMap,
+    supermaprest: arcMap,
     map: null,
     maps: [],
     /**创建地图 */