|
@@ -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();
|