diff --git a/package.json b/package.json index 7585777bf..61bc25fac 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ }, "dependencies": { "@mapbox/leaflet-omnivore": "^0.3.4", - "@mapbox/mapbox-gl-style-spec": "^13.15.0", - "@mapgis/mapbox-gl": "^1.9.0", + "@mapbox/mapbox-gl-style-spec": "13.15.0", + "@mapgis/mapbox-gl": "^16.0.0", "@turf/turf": "^6.3.0", "axios": "^0.18.0", "cesium": "1.84.0", @@ -98,7 +98,7 @@ "proj4": "2.3.15", "promise-polyfill": "^8.2.3", "qs": "^6.9.4", - "webfont-matcher": "^1.1.0", - "svg-pathdata": "^6.0.0" + "svg-pathdata": "^6.0.0", + "webfont-matcher": "^1.1.0" } } diff --git a/src/cesiumjs/index.js b/src/cesiumjs/index.js index 313ba64c1..b072f639d 100644 --- a/src/cesiumjs/index.js +++ b/src/cesiumjs/index.js @@ -10,9 +10,7 @@ export * from './provider'; export * from './render'; -import { - ServiceBase -} from '../service/ServiceBase'; +import { ServiceBase } from '../service/ServiceBase'; import { AnyLine, @@ -117,24 +115,11 @@ import { SlopLineParam } from '../service/Igserver/extend'; -import { - CommonServiceBase, - Events, - CORS, - RequestTimeout, - FetchRequest, - IgsServiceBase, - JSONFormat -} from '../service/baseserver'; +import { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat } from '../service/baseserver'; -import { - ColorInfo, - GDBInfo, - MapDoc, - CatalogService, - TileLayer, - VectorLayer -} from '../service/Igserver/MRCS'; +import { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer } from '../service/Igserver/MRCS'; + +import { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService } from '../service/Igserver/G3D'; import { EditDocFeature, @@ -229,17 +214,9 @@ import { ThemesInfo } from '../service/Igserver/theme'; -import { - WMSCapabilities, - WMTSCapabilities, - OGCWMTSInfo, - OGCWMSInfo -} from '../service/OGC'; - -export { - ServiceBase -}; +import { WMSCapabilities, WMTSCapabilities, OGCWMTSInfo, OGCWMSInfo } from '../service/OGC'; +export { ServiceBase }; export { AnyLine, @@ -332,33 +309,10 @@ export { merge, mixin }; -export { - ContourNoteParam, - ContourParam, - ContourZValue, - ContourRegionInfo, - MeshingParam, - NetAnalyse, - NetAnalysisExtent, - SlopLineParam -}; -export { - CommonServiceBase, - Events, - CORS, - RequestTimeout, - FetchRequest, - IgsServiceBase, - JSONFormat -}; -export { - ColorInfo, - GDBInfo, - MapDoc, - CatalogService, - TileLayer, - VectorLayer -}; +export { ContourNoteParam, ContourParam, ContourZValue, ContourRegionInfo, MeshingParam, NetAnalyse, NetAnalysisExtent, SlopLineParam }; +export { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat }; +export { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer }; +export { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService }; export { EditDocFeature, EditLayerFeature, @@ -409,14 +363,7 @@ export { Smooth, TopAnalysis }; -export { - GetDocImageService, - GetLayerImageService, - GetMapImageService, - GetMapInfoService, - GetTileImageService, - MapServiceBase -}; +export { GetDocImageService, GetLayerImageService, GetMapImageService, GetMapInfoService, GetTileImageService, MapServiceBase }; export { CAllOtherDataItemInfoSource, CAnnInfo, @@ -448,9 +395,4 @@ export { ThemesInfo }; -export { - WMSCapabilities, - WMTSCapabilities, - OGCWMTSInfo, - OGCWMSInfo -}; \ No newline at end of file +export { WMSCapabilities, WMTSCapabilities, OGCWMTSInfo, OGCWMSInfo }; diff --git a/src/cesiumjs/layer/LayerManager.js b/src/cesiumjs/layer/LayerManager.js index 9049f9902..1a26b3358 100644 --- a/src/cesiumjs/layer/LayerManager.js +++ b/src/cesiumjs/layer/LayerManager.js @@ -30,7 +30,7 @@ export default class LayerManager extends BaseLayer { * @param {Function} [optionsParam.loaded = function] 回调函数 * @param {DefaultProxy} [optionsParam.proxy = defaultProxy] 代理 * @example - * let layerManager = new LayerManager(view); + * let layerManager = new Cesium.Layer.LayerManager({viewer:viewer}); * function callBackfunction(layer){ * console.log(layer) * } diff --git a/src/cesiumjs/layer/M3DLayer.js b/src/cesiumjs/layer/M3DLayer.js index 64a88d5cc..f78898b81 100644 --- a/src/cesiumjs/layer/M3DLayer.js +++ b/src/cesiumjs/layer/M3DLayer.js @@ -94,6 +94,8 @@ export default class M3DLayer extends BaseLayer { * // layers 属性类似二维服务 * // layers=show:0,1 表示只显示 layerIndex 为 0, 1 的图层 * // layers=hide:0,1 表示只隐藏 layerIndex 为 0, 1 的图层 + * + * let m3d = new CesiumZondy.Layer.M3DLayer({ viewer: viewer }); * * let result = m3d.append('http://develop.smaryun.com:6163/igs/rest/g3d/ModelM3D, { * autoReset:false, diff --git a/src/cesiumjs/layer/OGCLayer.js b/src/cesiumjs/layer/OGCLayer.js index 6e9d09f24..7783deb5a 100644 --- a/src/cesiumjs/layer/OGCLayer.js +++ b/src/cesiumjs/layer/OGCLayer.js @@ -26,7 +26,7 @@ export default class OGCLayer extends BaseLayer { * @param {String} [optionsParam.proxy=null] 代理 * @returns {ImageryLayer} 瓦片层对象 * @example - * let ogcLayer = new OGCLayer({viewer:viewer}); + * let ogcLayer = new CesiumZondy.Layer.OGCLayer({viewer:viewer}); * let layer = ogcLayer.appendWMSTile("http://develop.smaryun.com:6163/igs/rest/ogc/doc/北京市/WMSServer", //图层名 '北京市:北京市,绿地_1,绿地_2,绿地_3,水域_1,水域_2,水域_3,住宅用地,医院,商业用地,铁路_1,铁路_2,铁路_3', { @@ -119,7 +119,7 @@ export default class OGCLayer extends BaseLayer { * @param {String} [optionsParam.proxy] 代理服务器地址 * @returns {ImageryLayer} 返回瓦片图层对象 * @example - * let ogcLayer = new OGCLayer({viewer:viewer}); + * let ogcLayer = new CesiumZondy.Layer.OGCLayer({viewer:viewer}); * let wmtsLayer = new ogcLayer.appendWMTSTileExt('localhost:6163/igs/rest/ogc/WMTSServer',{ * serverName:'dd', * proxy:'/Handler.ashx', diff --git a/src/cesiumjs/layer/TerrainLayer.js b/src/cesiumjs/layer/TerrainLayer.js index 6e320b190..704de04b7 100644 --- a/src/cesiumjs/layer/TerrainLayer.js +++ b/src/cesiumjs/layer/TerrainLayer.js @@ -42,20 +42,29 @@ export default class TerrainLayer extends BaseLayer { if (Cesium.defined(proxy)) { _proxy = new Cesium.DefaultProxy(proxy); } - let requestVertexNormals = Cesium.defaultValue(options.requestVertexNormals, false); - const dataUrl = `${baseUrl}/GetTerrain?sceneIndex=${sceneIndex}&layerIndex=${layerIndex}&Level={z}&Row={x}&Col={y}&xdensity=65&ydensity=65&webGL=true&hasNormals=${requestVertexNormals}`; - const terrainProvider = new Cesium.MapGISTerrainProvider({ + var requestVertexNormals = Cesium.defaultValue(options.requestVertexNormals, false); + var dataUrl = + '' + + baseUrl + + '/GetTerrain?sceneIndex=' + + sceneIndex + + '&layerIndex=' + + layerIndex + + '&Level={z}&Row={x}&Col={y}&xdensity=65&ydensity=65&webGL=true&hasNormals=' + + requestVertexNormals; + var terrainLayer = new Cesium.MapGISTerrainProvider({ url: dataUrl, range: options.range, proxy: _proxy, scale: options.scale, requestVertexNormals: requestVertexNormals, - terrainColorTblInfo:options.terrainColorTblInfo, - range3D: options.range3D + terrainColorTblInfo: options.terrainColorTblInfo, + range3D: options.range3D, + waterHeight: options.waterHeight }); + this.viewer.scene.terrainProvider = terrainLayer; - this.viewer.terrainProvider = terrainProvider; - return terrainProvider; + return terrainLayer; } /** @@ -70,8 +79,8 @@ export default class TerrainLayer extends BaseLayer { * @param {Boolean} [optionsParam.requestVertexNormals = false] 是否请求法向 * @returns 地形层对象 * @example - * let terrain = new TerrainLayer(viewer:viewer); - * let terrainProivder = terrain.append('http://develop.smaryun.com:6163/igs/rest/g3d/terrain'{ + * let terrain = new TerrainLayer({viewer:viewer}); + * let terrainProivder = terrain.append('http://develop.smaryun.com:6163/igs/rest/g3d/terrain', { * requestVertexNormals:false, * loaded:callBackfunction, * getDocLayers:function (docLayers){} @@ -113,7 +122,7 @@ export default class TerrainLayer extends BaseLayer { if (info !== undefined && info.sceneInfos.length > 0) { const { layers } = info.sceneInfos[0]; layers.forEach((layer) => { - const { layerType, layerRenderIndex, range, range3D , terrainLayer } = layer; + const { layerType, layerRenderIndex, range, range3D, terrainLayer } = layer; const { terrainColorTblInfo, elevationScale } = terrainLayer; const type = parseInt(layerType, 10); if (type === LayerType.TERRAINLAYER) { @@ -137,7 +146,7 @@ export default class TerrainLayer extends BaseLayer { } }); } - if(Cesium.defined(docReadyPromise)) { + if (Cesium.defined(docReadyPromise)) { docReadyPromise.then(_callBack2(docLayers)); } }; @@ -189,7 +198,7 @@ export default class TerrainLayer extends BaseLayer { }); this.viewer.terrainProvider = terrainProviderMeshes; } - /** + /** * 删除地形图层 * @function module:客户端数据服务.TerrainLayer.prototype.deleteTerrain * @example @@ -198,7 +207,7 @@ export default class TerrainLayer extends BaseLayer { * terrain.deleteTerrain(); */ deleteTerrain() { - if(Cesium.defined(this.viewer.terrainProvider)){ + if (Cesium.defined(this.viewer.terrainProvider)) { this.viewer.terrainProvider = null; } this.viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); diff --git a/src/cesiumjs/layer/ThirdPartyLayer.js b/src/cesiumjs/layer/ThirdPartyLayer.js index d7d4d34dc..09d994e13 100644 --- a/src/cesiumjs/layer/ThirdPartyLayer.js +++ b/src/cesiumjs/layer/ThirdPartyLayer.js @@ -65,7 +65,7 @@ export default class ThirdPartyLayer extends BaseLayer { let _url = `http://mt{s}.google.cn/vt/lyrs={type}&hl=zh-CN${offsetLabel}&x={x}&y={y}&z={z}&s=Galileo`; _url = _url.replace('{type}', options.ptype); const googleMap = this.viewer.imageryLayers.addImageryProvider( - new Cesium.GoogleMapProvider({ + new Cesium.GoogleMapImageryProvider({ url: _url }) ); @@ -89,7 +89,7 @@ export default class ThirdPartyLayer extends BaseLayer { * let tilelayer = thirdLayer.appendGoogleMapExt({ptype:'s'}); */ appendGoogleMapExt(optionsParam) { - const googleMap = this.viewer.imageryLayers.addImageryProvider(new Cesium.GoogleMapProvider(optionsParam)); + const googleMap = this.viewer.imageryLayers.addImageryProvider(new Cesium.GoogleMapImageryProvider(optionsParam)); return googleMap; } @@ -178,7 +178,7 @@ export default class ThirdPartyLayer extends BaseLayer { default: break; } - const openWeatherProvider = this.viewer.imageryLayers.addImageryProvider(new Cesium.OpenWeatherMapProvider(options)); + const openWeatherProvider = this.viewer.imageryLayers.addImageryProvider(new Cesium.OpenWeatherImageryProvider(options)); return openWeatherProvider; } @@ -201,40 +201,11 @@ export default class ThirdPartyLayer extends BaseLayer { if (!Cesium.defined(options.token)) { Cesium.deprecationWarning('http://www.tianditu.gov.cn', '请到天地图官网自行申请开发token,自带token仅做功能验证随时可能失效'); } - const url = 'http://t0.tianditu.gov.cn/DataServer?'; - const row = '_c&X={x}&Y={y}&L={l}'; - switch (options.ptype) { - case 'vec': - options.url = `${url}T=vec${row}`; - break; - case 'img': - options.url = `${url}T=img${row}`; - break; - case 'ter': - options.url = `${url}T=ter${row}`; - break; - case 'cia': - options.url = `${url}T=cia${row}`; - break; - case 'cva': - options.url = `${url}T=cva${row}`; - break; - case 'eia': - options.url = `${url}T=eia${row}`; - break; - case 'eva': - options.url = `${url}T=eva${row}`; - break; - case 'ibo': - options.url = `${url}T=ibo${row}`; - break; - case 'cta': - options.url = `${url}T=cta${row}`; - break; - default: - break; - } - const TDTuProvider = this.viewer.imageryLayers.addImageryProvider(new Cesium.TiandituMapProvider(options)); + options.url = 'http://t0.tianditu.gov.cn/DataServer'; + + options.tileType = Cesium.defaultValue(options.ptype, 'vec'); + + const TDTuProvider = this.viewer.imageryLayers.addImageryProvider(new Cesium.TiandituImageryProvider(options)); return TDTuProvider; } diff --git a/src/cesiumjs/layer/TilesLayer.js b/src/cesiumjs/layer/TilesLayer.js index 887750505..4f29c2306 100644 --- a/src/cesiumjs/layer/TilesLayer.js +++ b/src/cesiumjs/layer/TilesLayer.js @@ -41,23 +41,24 @@ export default class TilesLayer extends BaseLayer { * maxLevel:10, * proxy:'/Handler.ashx'//不存在跨域可不设置 * }; - * let mapGisTile = webGlobe.append3DDocTile('http://54.222.218.173:6163/igs/rest/g3d/lcmap/',0,0,otherOptions); + * let mapGisTile = tileLayer.append3DDocTileLayer('http://54.222.218.173:6163/igs/rest/g3d/lcmap/',0,0,otherOptions); */ append3DDocTileLayer(url, sceneIndex, layerIndex, optionsParam) { let proxy; - if (optionsParam.proxy) { + if (optionsParam && optionsParam.proxy) { proxy = new Cesium.DefaultProxy(optionsParam.proxy); } const options = Cesium.defaultValue(optionsParam, {}); const dataUrl = `${url}/GetCovering?sceneIndex=${sceneIndex.toString()}&layerIndex=${layerIndex.toString()}&level={level}&row={row}&col={col}&xDensity=43&yDensity=43`; const mapGisDocTile = this.viewer.imageryLayers.addImageryProvider( - new Cesium.MapGISDocMapProvider({ + new Cesium.MapGISMapServerImageryProvider({ url: dataUrl, rectangle: options.tileRange, colNum: options.colNum, rowNum: options.rowNum, maximumLevel: options.maxLevel, - proxy + proxy, + is3d: true }) ); return mapGisDocTile; @@ -71,7 +72,8 @@ export default class TilesLayer extends BaseLayer { * @param {Rectangle} [optionsParam.tileRange=Rectangle.fromDegrees(-180,-90,180,90)] 默认范围为全球范围 * @param {Number} [optionsParam.colNum=2] 瓦片初始级的列数 默认为2 * @param {Number} [optionsParam.rowNum=1] 瓦片初始级的列数 默认为1 - * @param {Number} [optionsParam.maxLevel=19] 瓦片最大显示级数 默认为19 + * @param {Number} [options.minimumLevel=0] 瓦片最小级别 + * @param {Number} [options.maximumLevel=19] 瓦片最大级别 * @param {String} [optionsParam.proxy] 转发代理 * @param {Array} [options.gdbps] gdbps地址数组 * @param {String} [options.layers] layers参数,用于过滤图层 @@ -89,7 +91,7 @@ export default class TilesLayer extends BaseLayer { * maxLevel:10, * proxy:'/Handler.ashx'//不存在跨域可不设置 * }; - * let mapGisTile = append2DDocTile('http://localhost:6163/igs/rest/mrms/docs/二维矢量',otherOptions); + * let mapGisTile = tileLayer.append2DDocTile('http://localhost:6163/igs/rest/mrms/docs/二维矢量',otherOptions); */ append2DDocTile(url, optionsParam) { // 中地新版正常二维瓦片 @@ -101,7 +103,7 @@ export default class TilesLayer extends BaseLayer { } options.url = url; - const mapGis2DDocTile = this.viewer.imageryLayers.addImageryProvider(new Cesium.MapGIS2DDocMapProvider(options)); + const mapGis2DDocTile = this.viewer.imageryLayers.addImageryProvider(new Cesium.MapGISMapServerImageryProvider(options)); return mapGis2DDocTile; } @@ -141,9 +143,10 @@ export default class TilesLayer extends BaseLayer { if (optionsParam.proxy) { proxy = new Cesium.DefaultProxy(optionsParam.proxy); } + const headers = Cesium.defaultValue({ Accept: 'image/gif,image/webp,image/png,image/*,*/*;q=0.8' }, undefined); const options = Cesium.defaultValue(optionsParam, {}); const mapGisTile = this.viewer.imageryLayers.addImageryProvider( - new Cesium.MapGISMapProvider({ + new Cesium.MapGISTileServerImageProvider({ url: _url, tilingScheme: options.tilingScheme, rectangle: options.tileRange, @@ -153,7 +156,8 @@ export default class TilesLayer extends BaseLayer { tileWidth: options.tileWidth, tileHeight: options.tileHeight, proxy, - mapStyle: options.mapStyle + mapStyle: options.mapStyle, + headers }) ); return mapGisTile; @@ -165,16 +169,51 @@ export default class TilesLayer extends BaseLayer { * @param {String} url 地址 * @param {Object} optionsParam 参数 * @returns {Object} 自定义瓦片服务对象 + * + * @example + * var options = {}; + * var maximumLevel = Cesium.defaultValue(options.maximumLevel, 16); + * var type = Cesium.defaultValue(options.type, 'vec'); + * //var baseUrl = 'http://{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'; + * var baseUrl = 'http://{s}.is.autonavi.com/appmaptile?&size=1&scale=1&x={x}&y={y}&z={z}'; + * //https://wprd04.is.autonavi.com/appmaptile?x=6738&y=3101&z=13&lang=zh_cn&size=1&scl=2&style=8<ype=11 + * var url = baseUrl; + * var gaodeLayer; + * switch (type) { + * case 'img': + * { + * url = 'https://{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'; + * } + * break; + * case 'road': + * { + * url += '&scl=2&style=8<ype=11'; + * } + * break; + * default: + * { + * url += '&style=7'; + * } + * break; + * } + * // var gaodeProvider = new Cesium.UrlTemplateImageryProvider(); + * // gaodeLayer = this.viewer.imageryLayers.addImageryProvider(gaodeProvider); + * + * var gaodeProvider = tileLayer.appendTileMapServiceImage('https://{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', { + * credit: new Cesium.Credit('高德地图服务'), + * subdomains: ['webst01', 'webst02', 'webst03', 'webst04'], + * tilingScheme: new Cesium.WebMercatorTilingScheme(), + * maximumLevel: maximumLevel + * }); */ appendTileMapServiceImage(url, optionsParam) { const para = { - url, - maximumLevel: 8 + url }; if (Cesium.defined(optionsParam)) { - Object.extend(para, optionsParam); + Object.extend(optionsParam, para); } - const imageryProvider = new Cesium.UrlTemplateImageryProvider(para); + const imageryProvider = new Cesium.UrlTemplateImageryProvider(optionsParam); const tileMapService = this.viewer.imageryLayers.addImageryProvider(imageryProvider); return tileMapService; diff --git a/src/cesiumjs/manager/AdvancedAnalysisManager.js b/src/cesiumjs/manager/AdvancedAnalysisManager.js index 5442a4f9a..afb6d354d 100644 --- a/src/cesiumjs/manager/AdvancedAnalysisManager.js +++ b/src/cesiumjs/manager/AdvancedAnalysisManager.js @@ -12,6 +12,15 @@ export default class AdvancedAnalysisManager { constructor(option) { this._viewer = Cesium.defaultValue(option.viewer, undefined); this._scene = this._viewer.scene; + // 记录设置之前的配置 + this._oldSetting = { + skyAtmosphere: { + hueShift: this._scene.skyAtmosphere.hueShift, + saturationShift: this._scene.skyAtmosphere.saturationShift, + brightnessShift: this._scene.skyAtmosphere.brightnessShift + }, + fog: { density: this._scene.fog.density, minimumBrightness: this._scene.fog.minimumBrightness } + }; } /** @@ -46,7 +55,7 @@ export default class AdvancedAnalysisManager { */ createAnimation(options) { const optionsParam = Cesium.defaultValue(options, {}); - const animation = new Cesium.AnimationAnalyse(this.viewer, { + const animation = new Cesium.AnimationTool(this.viewer, { exHeight: Cesium.defaultValue(optionsParam.exHeight, 0.8), isLoop: Cesium.defaultValue(optionsParam.isLoop, false), modelUrl: optionsParam.modelUrl, @@ -71,7 +80,7 @@ export default class AdvancedAnalysisManager { createCutFill(dataType, options) { const optionsParam = Cesium.defaultValue(options, {}); const { viewer } = this; - const cutFill = new Cesium.CutFillAnalyzeC(viewer, { + const cutFill = new Cesium.CutFillAnalysis(viewer, { callBack: optionsParam.callback }); cutFill.xPaneNum = optionsParam.xPaneNum; @@ -127,9 +136,188 @@ export default class AdvancedAnalysisManager { */ createDynamicPolyline(posStart, posEnds, options) { const optionsParam = Cesium.defaultValue(options, {}); + + function DynamicPolyline(viewer, center, cities, options) { + this._viewer = viewer; + this._center = center; + this._cities = cities; + this._isAdd = options.isAdd || false; + this._color = options.color || Cesium.Color.ORANGE; + this._duration = options.duration || 3000; + } + + Object.defineProperties(DynamicPolyline.prototype, { + color: { + get: function () { + return this._color; + }, + set: function (value) { + this._color = value; + } + }, + duration: { + get: function () { + return this._color; + }, + set: function (value) { + this._color = value; + } + } + }); + + DynamicPolyline.prototype.setVisible = function (value) { + var material = null; + switch (value) { + case 'position': + this._viewer.camera.setView({ + destination: Cesium.Cartesian3.fromDegrees( + this._center.lon, + this._center.lat, + 300000 + ) + }); + break; + case 'add': + if (!this._isAdd) { + if (material !== null) { + } else { + var options = { + direction: 1.0, + color: new Cesium.Color(0.0,0.0,0.0), + duration: this._duration + }; + material = new Cesium.PolylineTrailLinkMaterialProperty( + options + ); + } + for (var j = 0; j < this._cities.length; j++) { + var points = parabolaEquation({ + pt1: this._center, + pt2: this._cities[j], + height: 50000, + num: 100 + }); + var pointArr = []; + for (var i = 0; i < points.length; i++) { + pointArr.push( + points[i][0], + points[i][1], + points[i][2] + ); + } + this._viewer.entities.add({ + name: 'PolylineTrailLink' + j, + polyline: { + positions: Cesium.Cartesian3.fromDegreesArrayHeights( + pointArr + ), + width: 2, + material: material + } + }); + } + + this._viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees( + this._center.lon, + this._center.lat, + 1 + ), + point: { + pixelSize: 6, + color: Cesium.Color.BLUE + } + }); + for (var i = 0; i < this._cities.length; i++) { + this._viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees( + this._cities[i].lon, + this._cities[i].lat, + 1 + ), + point: { + pixelSize: 6, + color: Cesium.Color.RED + } + }); + } + + this._isAdd = true; + } + break; + case 'del': + if (this._isAdd) { + this._viewer.entities.removeAll(); + this._isAdd = false; + } + break; + } + this._viewer.scene.requestRender(); + }; + + DynamicPolyline.prototype.destroy = function () { + this._viewer.entities.removeAll(); + }; + + function parabolaEquation(options, resultOut) { + //方程 y=-(4h/L^2)*x^2+h h:顶点高度 L:横纵间距较大者 + var height = + options.height && options.height > 5000 ? options.height : 5000; + var largerLength = + Math.abs(options.pt1.lon - options.pt2.lon) > + Math.abs(options.pt1.lat - options.pt2.lat) + ? Math.abs(options.pt1.lon - options.pt2.lon) + : Math.abs(options.pt1.lat - options.pt2.lat); + var num = options.num && options.num > 50 ? options.num : 50; + var result = []; + var dlt = largerLength / num; + if ( + Math.abs(options.pt1.lon - options.pt2.lon) > + Math.abs(options.pt1.lat - options.pt2.lat) + ) { + //以lon为基准 + var delLat = (options.pt2.lat - options.pt1.lat) / num; + if (options.pt1.lon - options.pt2.lon > 0) { + dlt = -dlt; + } + for (var i = 0; i < num; i++) { + var tempH = + height - + (Math.pow(-0.5 * largerLength + Math.abs(dlt) * i, 2) * + 4 * + height) / + Math.pow(largerLength, 2); + var lon = options.pt1.lon + dlt * i; + var lat = options.pt1.lat + delLat * i; + result.push([lon, lat, tempH]); + } + } else { + //以lat为基准 + var delLon = (options.pt2.lon - options.pt1.lon) / num; + if (options.pt1.lat - options.pt2.lat > 0) { + dlt = -dlt; + } + for (var i = 0; i < num; i++) { + var tempH = + height - + (Math.pow(-0.5 * largerLength + Math.abs(dlt) * i, 2) * + 4 * + height) / + Math.pow(largerLength, 2); + var lon = options.pt1.lon + delLon * i; + var lat = options.pt1.lat + dlt * i; + result.push([lon, lat, tempH]); + } + } + if (resultOut !== undefined) { + resultOut = result; + } + return result; + } + let dynamicPolyline; if (posStart !== undefined && posEnds !== undefined) { - dynamicPolyline = new Cesium.DynamicPolyline(this.viewer, posStart, posEnds, { + dynamicPolyline = new DynamicPolyline(this.viewer, posStart, posEnds, { isAdd: Cesium.defaultValue(optionsParam.isAdd, false), color: Cesium.defaultValue(optionsParam.color, Cesium.Color.ORANGE), duration: 3000 @@ -142,6 +330,25 @@ export default class AdvancedAnalysisManager { } /** + * + * defineProperties(DynamicPolyline.prototype, { + color: { + get: function () { + return this._color; + }, + set: function (value) { + this._color = value; + } + }, + duration: { + get: function () { + return this._color; + }, + set: function (value) { + this._color = value; + } + } + }); * 模型压平 * @function module:客户端可视化分析.AdvancedAnalysisManager.prototype.createModelFlatten * @param {Object} tileset 图层信息 @@ -155,10 +362,9 @@ export default class AdvancedAnalysisManager { createModelFlatten(tileset, options) { const optionsParam = Cesium.defaultValue(options, {}); const tilesetObject = tileset; - tilesetObject.u_isFlatten = Cesium.defaultValue(optionsParam.isFlatten, true); - tilesetObject.u_height = Cesium.defaultValue(optionsParam.height, 0.0); - tilesetObject.u_arrayLength = Cesium.defaultValue(optionsParam.arrayLength, 0.0); - tilesetObject.u_positionArray = Cesium.defaultValue(optionsParam.array, []); + tilesetObject.isFlatten = Cesium.defaultValue(optionsParam.isFlatten, true); + tilesetObject.height = Cesium.defaultValue(optionsParam.height, 0.0); + tilesetObject.positionArray = Cesium.defaultValue(optionsParam.array, []); this.scene.requestRender(); return tilesetObject; } @@ -198,7 +404,7 @@ export default class AdvancedAnalysisManager { break; } const scenePro = new Cesium.SceneProjector(proType); - const manager = this.scene.VisualAnalysisManager; + const manager = this.scene.visualAnalysisManager; manager.add(scenePro); return scenePro; } @@ -238,7 +444,7 @@ export default class AdvancedAnalysisManager { * @function module:客户端可视化分析.AdvancedAnalysisManager.prototype.removeSceneProjector */ removeSceneProjector() { - const manager = this.scene.VisualAnalysisManager; + const manager = this.scene.visualAnalysisManager; manager.removeAll(); } @@ -248,7 +454,7 @@ export default class AdvancedAnalysisManager { * @returns {Object} skyLineAn 返回天际线实例 */ createSkyLine() { - const manager = this.scene.VisualAnalysisManager; + const manager = this.scene.visualAnalysisManager; const skyLineAn = new Cesium.SkyLineAnalysis({ scene: this.scene, analysisEndCallBack() {} @@ -263,7 +469,7 @@ export default class AdvancedAnalysisManager { * @returns {Object} viewshedAnalysis 返回可视域实例 */ createViewshedAnalysis() { - const manager = this.scene.VisualAnalysisManager; + const manager = this.scene.visualAnalysisManager; const viewshedAnalysis = new Cesium.ViewshedAnalysis(); manager.add(viewshedAnalysis); return viewshedAnalysis; @@ -275,8 +481,8 @@ export default class AdvancedAnalysisManager { * @returns {Object} visibilityAnalysis 返回通视实例 */ createVisibilityAnalysis() { - const manager = this.scene.VisualAnalysisManager; - const visibilityAnalysis = new Cesium.VisiblityAnalysis(); + const manager = this.scene.visualAnalysisManager; + const visibilityAnalysis = new Cesium.VisiblityAnalysis({scene: this.scene}); manager.add(visibilityAnalysis); return visibilityAnalysis; } @@ -296,11 +502,10 @@ export default class AdvancedAnalysisManager { * 添加:globe.addSceneEffect(heightLimited) * 移除:globe.removeSceneEffect(heightLimited) */ - createHeightLimited(height, transform, posArray, options) { + createHeightLimited(height, posArray, options) { const optionsParam = Cesium.defaultValue(options, {}); const heightLimited = new Cesium.HeightLimited(this.viewer, { height: Cesium.defaultValue(height, 0), - transform, posArray, limitedColor: Cesium.defaultValue(optionsParam.limitedColor, new Cesium.Color(1, 0, 0, 0.5)), blendTransparency: Cesium.defaultValue(optionsParam.blendTransparency, 0.8) @@ -315,13 +520,16 @@ export default class AdvancedAnalysisManager { * @returns {Object} aspect 返回坡向分析实例 */ createAspectAnalysis(color) { - const manager = this.scene.VisualAnalysisManager; - const aspect = new Cesium.AspectAnalysis(this.viewer, { - colors: color + for (var i = 0;i < color.length;i++) { + if(color instanceof Cesium.Color) { + // eslint-disable-next-line no-param-reassign + color[i] = color[i].toCssColorString(); + } + } + let terrainAnalyse = new Cesium.TerrainAnalyse(this.viewer, { + aspectRampColor: color }); - manager.add(aspect); - aspect.start(); - return aspect; + return terrainAnalyse; } /** @@ -331,13 +539,16 @@ export default class AdvancedAnalysisManager { * @returns {Object} slope 返回坡度分析实例 */ createSlopeAnalysis(color) { - const manager = this.scene.VisualAnalysisManager; - const slope = new Cesium.SlopeAnalysis(this.viewer, { + for (var i = 0;i < color.length;i++) { + if(color instanceof Cesium.Color) { + // eslint-disable-next-line no-param-reassign + color[i] = color[i].toCssColorString(); + } + } + const terrainAnalyse = new Cesium.TerrainAnalyse(this.viewer, { colors: color }); - manager.add(slope); - slope.start(); - return slope; + return terrainAnalyse; } /** @@ -371,19 +582,19 @@ export default class AdvancedAnalysisManager { * @param {Number} [options.brightnessShift] 亮度 * @param {Number} [options.density] 密度 * @param {Number} [options.minimumBrightness] 最小亮度 - * @returns {Object} rain 返回下雨特效实例 + * @returns {Object} weather 返回天气特效实例 */ createRain(options) { const optionsParam = Cesium.defaultValue(options, {}); - const collection = this.viewer.scene.postProcessStages; - const rain = Cesium.PostProcessStageLibrary.createRainStage(optionsParam); - collection.add(rain); + const weather = new Cesium.WeatherEffect(this.viewer); + weather.addRain(); + this.scene.skyAtmosphere.hueShift = Cesium.defaultValue(optionsParam.hueShift, -0.8); this.scene.skyAtmosphere.saturationShift = Cesium.defaultValue(optionsParam.saturationShift, -0.7); this.scene.skyAtmosphere.brightnessShift = Cesium.defaultValue(optionsParam.brightnessShift, -0.33); this.scene.fog.density = Cesium.defaultValue(optionsParam.density, 0.001); this.scene.fog.minimumBrightness = Cesium.defaultValue(optionsParam.minimumBrightness, 0.8); - return rain; + return weather; } /** @@ -395,19 +606,18 @@ export default class AdvancedAnalysisManager { * @param {Number} [options.brightnessShift] 亮度 * @param {Number} [options.density] 密度 * @param {Number} [options.minimumBrightness] 最小亮度 - * @returns {Object} snow 返回下雪特效实例 + * @returns {Object} weather 返回天气特效实例 */ createSnow(options) { const optionsParam = Cesium.defaultValue(options, {}); - const collection = this.viewer.scene.postProcessStages; - const snow = Cesium.PostProcessStageLibrary.createSnowStage(); - collection.add(snow); + const weather = new Cesium.WeatherEffect(this.viewer); + weather.addSnow(); this.scene.skyAtmosphere.hueShift = Cesium.defaultValue(optionsParam.hueShift, -0.8); this.scene.skyAtmosphere.saturationShift = Cesium.defaultValue(optionsParam.saturationShift, -0.7); this.scene.skyAtmosphere.brightnessShift = Cesium.defaultValue(optionsParam.brightnessShift, -0.33); this.scene.fog.density = Cesium.defaultValue(optionsParam.density, 0.001); this.scene.fog.minimumBrightness = Cesium.defaultValue(optionsParam.minimumBrightness, 0.8); - return snow; + return weather; } /** @@ -415,14 +625,13 @@ export default class AdvancedAnalysisManager { * @function module:客户端可视化分析.AdvancedAnalysisManager.prototype.createFog * @param {Object} options 雾特效参数 * @param {Number} [options.alpha] 雾特效透明度 - * @returns {Object} fog 返回雾特效实例 + * @returns {Object} weather 返回雾特效实例 */ createFog(options) { const optionsParam = Cesium.defaultValue(options, {}); - const collection = this.viewer.scene.postProcessStages; - const fog = Cesium.PostProcessStageLibrary.createFogStage(Cesium.defaultValue(optionsParam.alpha, 0.1)); - collection.add(fog); - return fog; + const weather = new Cesium.WeatherEffect(this.viewer); + weather.addFog(optionsParam); + return weather; } /** @@ -432,6 +641,12 @@ export default class AdvancedAnalysisManager { */ removeStage(stage) { this.viewer.scene.postProcessStages.remove(stage); + // 重置配置 + this.scene.skyAtmosphere.hueShift = this._oldSetting.skyAtmosphere.hueShift; + this.scene.skyAtmosphere.saturationShift = this._oldSetting.skyAtmosphere.saturationShift; + this.scene.skyAtmosphere.brightnessShift = this._oldSetting.skyAtmosphere.brightnessShift; + this.scene.fog.density = this._oldSetting.fog.density; + this.scene.fog.minimumBrightness = this._oldSetting.fog.minimumBrightness; } /** diff --git a/src/cesiumjs/manager/AnalysisManager.js b/src/cesiumjs/manager/AnalysisManager.js index e3a9c36d5..d7b869955 100644 --- a/src/cesiumjs/manager/AnalysisManager.js +++ b/src/cesiumjs/manager/AnalysisManager.js @@ -457,7 +457,7 @@ export default class AnalysisManager { const height = Cesium.defaultValue(options.height, 0.0); const { transform } = tileset._root; const rotation = new Cesium.Matrix3(); - Cesium.Matrix4.getRotation(transform, rotation); + Cesium.Matrix4.getMatrix3(transform, rotation); const scale = new Cesium.Cartesian3(); Cesium.Matrix4.getScale(transform, scale); const center = new Cesium.Cartesian3(); @@ -593,7 +593,7 @@ export default class AnalysisManager { for (let i = 0; i < planes.length; i += 1) { const normal = planes[i].normal._cartesian3; const planeEntity = this.viewer.entities.add({ - position: Cesium.CommonFunction.getPointOntoPlane(center, normal, tileset.boundingSphere.center, new Cesium.Cartesian3), + position: Cesium.AlgorithmLib.getPointOntoPlane(center, normal, tileset.boundingSphere.center, new Cesium.Cartesian3), plane: { dimensions: new Cesium.Cartesian2(radius * scaleWidth, radius * scaleHeight), material @@ -767,40 +767,44 @@ export default class AnalysisManager { } function evaluateColorCallBack(feature, result) { - const title = feature.getProperty('name'); - const layerNow = feature.tileset; - const values = title.split('_'); - const vlueNumber = parseInt(values[2], 10); - let { color } = feature; - colorUse = layerNow.color; - if (style === 'EdgeHighlight' || style === 'Edge') { - if (!Cesium.defined(layerNow._edgeDetectionfeatureList)) { - layerNow._edgeDetectionfeatureList = []; - } - if (title !== undefined && title !== null && idList.indexOf(vlueNumber) > -1) { - if (layerNow._edgeDetectionfeatureList.indexOf(feature) < 0) { - layerNow._edgeDetectionfeatureList.push(feature); + if (feature && feature.hasProperty('name')) { + const title = feature.getProperty('name'); + const layerNow = feature.tileset; + const values = title.split('_'); + const vlueNumber = parseInt(values[2], 10); + let { color } = feature; + colorUse = layerNow.color; + if (style === 'EdgeHighlight' || style === 'Edge') { + if (!Cesium.defined(layerNow._edgeDetectionfeatureList)) { + layerNow._edgeDetectionfeatureList = []; + } + if (title !== undefined && title !== null && idList.indexOf(vlueNumber) > -1) { + if (layerNow._edgeDetectionfeatureList.indexOf(feature) < 0) { + layerNow._edgeDetectionfeatureList.push(feature); + } + that._edgeDetectionStageCD.selected = layerNow._edgeDetectionfeatureList; + } + if (style === 'Edge') { + return color; } - that._edgeDetectionStageCD.selected = layerNow._edgeDetectionfeatureList; - } - if (style === 'Edge') { - return color; } - } - if (applyForLayer) { - color = colorUse; - } else if (!layerNow.negate) { - if (title !== undefined && title !== null && idList.indexOf(vlueNumber) > -1) { + if (applyForLayer) { color = colorUse; - } else { + } else if (!layerNow.negate) { + if (title !== undefined && title !== null && idList.indexOf(vlueNumber) > -1) { + color = colorUse; + } else { + color = negateColor; + } + } else if (title !== undefined && title !== null && idList.indexOf(vlueNumber) > -1) { color = negateColor; + } else { + color = colorUse; } - } else if (title !== undefined && title !== null && idList.indexOf(vlueNumber) > -1) { - color = negateColor; + return Cesium.Color.clone(color, result); } else { - color = colorUse; + return colorUse; } - return Cesium.Color.clone(color, result); } for (let i = 0; i < layerList.length; i += 1) { const layer = layerList[i]; diff --git a/src/cesiumjs/manager/CommonDataManager.js b/src/cesiumjs/manager/CommonDataManager.js index 4a9e4a284..a224184de 100644 --- a/src/cesiumjs/manager/CommonDataManager.js +++ b/src/cesiumjs/manager/CommonDataManager.js @@ -111,7 +111,7 @@ export default class CommonDataManager extends LayerManager { * @returns {Object} model 移除通过 removeModel() * @example * let modelUrl = '../../../../../../static/data/CesiumAir/Cesium_Air.gltf'; - cesiumFun.appendModels('1', modelUrl, 114, 28, 200, 100000, { + cesiumFun.appendModel('1', modelUrl, 114, 28, 200, 100000, { color: Cesium.Color.RED, colorBlendMode: Cesium.ColorBlendMode.MIX,// MIX是混合 Cesium.ColorBlendMode.HIGHLIGHT, HIGHLIGHT是高亮 colorBlendAmount: 0.4 //这个是程度 @@ -160,7 +160,7 @@ export default class CommonDataManager extends LayerManager { /** * 通过文件批量添加模型 - * @function module:客户端公共方法.CommonDataManager.prototype.appendModels + * @function module:客户端公共方法.CommonDataManager.prototype.appendModelsByFile * @param {String} filePath 模型组织文件 * @param {Function} successCall 成功后的回调 * @returns {Object} 模型层对象 diff --git a/src/cesiumjs/manager/CommonFuncManager.js b/src/cesiumjs/manager/CommonFuncManager.js index 8a247d7b3..bdc83534c 100644 --- a/src/cesiumjs/manager/CommonFuncManager.js +++ b/src/cesiumjs/manager/CommonFuncManager.js @@ -138,8 +138,16 @@ export default class CommonFuncManager { * //res.toPng(); */ outputImageObj() { + let isAn = true; + if (this.viewer.shouldAnimate === false) { + this.viewer.shouldAnimate === true; + isAn = false; + } this.viewer.render(); - return Cesium.reimg.fromCanvas(this.viewer.canvas); + if (!isAn) { + this.viewer.shouldAnimate === false; + } + return Cesium.ReImg.fromCanvas(this.viewer.canvas); } /** @@ -153,7 +161,7 @@ export default class CommonFuncManager { */ outputImageFile(fileName) { this.viewer.render(); - Cesium.reimg.fromCanvas(this.viewer.canvas).downloadPng(fileName); + Cesium.ReImg.fromCanvas(this.viewer.canvas).downloadPng(fileName); } /** @@ -195,6 +203,13 @@ export default class CommonFuncManager { * @function module:客户端公共方法.CommonFuncManager.prototype.getSceneRange * @param {String} 视图元素ID * @returns {Array[]} 场景范围(单位:经纬度)Array<[lon,lat]> + * @example + * var viewer = new Cesium.Viewer('GlobeView1', { + * terrainExaggeration: 1, + * requestRenderMode: true + * }); + * let id = 'GlobeView1'; + * cfm.getSceneRange(id); */ getSceneRange(elementID) { const controlDiv = document.getElementById(elementID); @@ -442,15 +457,33 @@ export default class CommonFuncManager { let carCenter = new Cesium.Cartographic(); carCenter = Cesium.Cartographic.fromCartesian(center, this.ellipsoid, carCenter); carCenter.height = 0; - const centerUse = Cesium.Cartesian3.fromRadians(carCenter.longitude, carCenter.latitude, carCenter.height, this.ellipsoid, new Cesium.Cartesian3()); - const centerUseEx = Cesium.Cartesian3.fromRadians(carCenter.longitude, carCenter.latitude + 0.1, carCenter.height, this.ellipsoid, new Cesium.Cartesian3()); + const centerUse = Cesium.Cartesian3.fromRadians( + carCenter.longitude, + carCenter.latitude, + carCenter.height, + this.ellipsoid, + new Cesium.Cartesian3() + ); + const centerUseEx = Cesium.Cartesian3.fromRadians( + carCenter.longitude, + carCenter.latitude + 0.1, + carCenter.height, + this.ellipsoid, + new Cesium.Cartesian3() + ); let tempdir = Cesium.Cartesian3.subtract(centerUseEx, centerUse, new Cesium.Cartesian3()); tempdir = Cesium.Cartesian3.normalize(tempdir, tempdir); let carTarget = new Cesium.Cartographic(); carTarget = Cesium.Cartographic.fromCartesian(target, this.ellipsoid, carTarget); carTarget.height = 0; - const targetUse = Cesium.Cartesian3.fromRadians(carTarget.longitude, carTarget.latitude, carTarget.height, this.ellipsoid, new Cesium.Cartesian3()); + const targetUse = Cesium.Cartesian3.fromRadians( + carTarget.longitude, + carTarget.latitude, + carTarget.height, + this.ellipsoid, + new Cesium.Cartesian3() + ); let tarDir = Cesium.Cartesian3.subtract(targetUse, centerUse, new Cesium.Cartesian3()); tarDir = Cesium.Cartesian3.normalize(tarDir, tarDir); @@ -496,8 +529,8 @@ export default class CommonFuncManager { * let drawElement = new Cesium.DrawElement(viewer); * let commfun = new CommonFun({viewer:viewer}); * drawElement.startDrawingPolyline({ - * callback: function(positions){ - * let simplify = commfun.simplifyLine(positions); + * callback: function(result){ + * let simplify = commfun.simplifyLine(result.positions); * polyline = new Cesium.DrawElement.PolylinePrimitive({ * positions: simplify, * width: 1, @@ -520,7 +553,11 @@ export default class CommonFuncManager { } for (let i = 0; i <= posCopy.length - 3; i += 1) { const isVertice = !((posCopy[i].z - posCopy[i + 1].z) * (posCopy[i + 1].z - posCopy[i + 2].z) > 0); - const angle = calAngleOf3Pnt([posCopy[i].x, posCopy[i].y, posCopy[i].z], [posCopy[i + 1].x, posCopy[i + 1].y, posCopy[i + 1].z], [posCopy[i + 2].x, posCopy[i + 2].y, posCopy[i + 2].z]); + const angle = calAngleOf3Pnt( + [posCopy[i].x, posCopy[i].y, posCopy[i].z], + [posCopy[i + 1].x, posCopy[i + 1].y, posCopy[i + 1].z], + [posCopy[i + 2].x, posCopy[i + 2].y, posCopy[i + 2].z] + ); if (angle > 175 && !isVertice) { posCopy = posCopy.slice(0, i + 1).concat(posCopy.slice(i + 2)); @@ -555,7 +592,10 @@ export default class CommonFuncManager { static calcParabola(options) { // 方程 y=-(4h/L^2)*x^2+h h:顶点高度 L:横纵间距较大者 const h = options.height && options.height > 5000 ? options.height : 5000; - const L = Math.abs(options.position1.lon - options.position2.lon) > Math.abs(options.position1.lat - options.position2.lat) ? Math.abs(options.position1.lon - options.position2.lon) : Math.abs(options.position1.lat - options.position2.lat); + const L = + Math.abs(options.position1.lon - options.position2.lon) > Math.abs(options.position1.lat - options.position2.lat) + ? Math.abs(options.position1.lon - options.position2.lon) + : Math.abs(options.position1.lat - options.position2.lat); const num = options.num && options.num > 50 ? options.num : 50; const result = []; let dlt = L / num; diff --git a/src/cesiumjs/manager/EntityController.js b/src/cesiumjs/manager/EntityController.js index ae019f842..3e48ec7a5 100644 --- a/src/cesiumjs/manager/EntityController.js +++ b/src/cesiumjs/manager/EntityController.js @@ -422,12 +422,22 @@ export default class EntityController extends BaseLayer { positions: simplifyPnts, width: 1, geodesic: true, - id: name + id: name, + vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT, }; + var color = Cesium.defaultValue(options.color,Cesium.Color.BLUE); if (Cesium.defined(options)) { Object.extend(para, options); } - const polyline = new Cesium.PathTool.PolylinePrimitive(para); + var polyline = new Cesium.Primitive({ + geometryInstances : new Cesium.GeometryInstance({ + geometry : new Cesium.PolylineGeometry(para), + attributes: { + color: Cesium.ColorGeometryInstanceAttribute.fromColor(color) + } + }), + appearance: new Cesium.PolylineColorAppearance() + }) this.scene.primitives.add(polyline); if (typeof callback === 'function') { callback(polyline); diff --git a/src/cesiumjs/manager/LabelLayer.js b/src/cesiumjs/manager/LabelLayer.js index 7476b0514..c23563415 100644 --- a/src/cesiumjs/manager/LabelLayer.js +++ b/src/cesiumjs/manager/LabelLayer.js @@ -159,7 +159,7 @@ export default class LabelLayer extends BaseLayer { * @example * //更多参数设置可以使用appendLabelIconComm方法 * let labelLayer = new LabelLayer({viewer:viewer}); - * let labelIcon = labelLayer.appendLabelIcon('注记文本',110,33,0,'14pt 楷体','/car.png',64,64,10000000,1,bottom,'这是属性信息查询时可以看到'); + * let labelIcon = labelLayer.appendLabelIcon('注记文本',110,33,0,'14pt 楷体',Color.RED,'/car.png',64,64,10000000,1,bottom,'这是属性信息查询时可以看到'); */ appendLabelIcon(text, lon, lat, height, font, fillColor, iconUrl, iconWidth, iconHeight, farDist, nearDist, txtPosParam, attribute) { let txtPos = Cesium.VerticalOrigin.BOTTOM; diff --git a/src/cesiumjs/manager/SceneManager.js b/src/cesiumjs/manager/SceneManager.js index 3b8a439c6..beac281ab 100644 --- a/src/cesiumjs/manager/SceneManager.js +++ b/src/cesiumjs/manager/SceneManager.js @@ -157,18 +157,18 @@ export default class SceneManager { level = `当前地图级别:${viewLevel}`; } const iHtml = longlatHeight + strHpr + selectTileInfo + level; - document.getElementById(elementId).innerHTML = iHtml; + document.getElementById(elementIdValue).innerHTML = iHtml; } if (elementId === undefined || elementId === null) { const elementPt = document.createElement('div'); - elementPt.className = 'coordinateClass'; - elementPt.id = 'coordinateDiv'; + elementPt.className = 'mapgis-web-scene-coordinateClass'; + elementPt.id = 'mapgis-web-scene-coordinateDiv'; const element = document.createElement('label'); - element.id = 'coordinate_location'; - elementIdValue = 'coordinate_location'; + element.id = 'mapgis-web-scene-coordinate_location'; + elementIdValue = 'mapgis-web-scene-coordinate_location'; const style1 = document.createElement('style'); - style1.innerHTML = '.coordinate_location {color: #F0EFEF; line-height: 30px; margin-left: 30%;bottom:0px;font-size: 80%;font:"雅黑";}'; + style1.innerHTML = '.mapgis-web-scene-coordinate_location {color: #F0EFEF; line-height: 30px; margin-left: 30%;bottom:0px;font-size: 80%;font:"雅黑";}'; element.style = style1; elementPt.appendChild(element); this.viewer._element.appendChild(elementPt); @@ -401,13 +401,15 @@ export default class SceneManager { * positiveY : 'Assets/Textures/SkyBox2/left.jpg', * negativeY : 'Assets/Textures/SkyBox2/right.jpg', * positiveZ : 'Assets/Textures/SkyBox2/top.jpg', - * negativeZ : 'Assets/Textures/SkyBox2/bottom.jpg' + * negativeZ : 'Assets/Textures/SkyBox2/down.jpg' * } * }); */ changeSkyBox(skybox) { if (Cesium.defined(skybox)) { this.scene.skyBox = skybox; + this.scene.skyAtmosphere.show = false; + const frameState = this.scene._frameState; this.scene.skyBox.update(frameState); } @@ -417,7 +419,7 @@ export default class SceneManager { * 根据ID飞行到特定要素位置 * @function module:客户端视图管理.SceneManager.prototype.flyToFeatureById * @param {Array} layerList 图层列表 - * @param {Array} id ID列表 + * @param {Number} id ID列表 * @param {Object} [options] 其他参数 * @param {Color} [options.colorHighlight] 跳转后指定ID对应的特定要素的高亮颜色 * @param {Number} [options.heading] 相机参数heading @@ -470,7 +472,7 @@ export default class SceneManager { for (let i = 0; i < layerList.length; i += 1) { const tileset = layerList[i]; - tileset.styleEngine.justSelect(true); + // tileset.styleEngine.justSelect(true); tileset.style = new Cesium.Cesium3DTileStyle(); tileset.style.color = { evaluateColor: evaluateColorCallBack diff --git a/src/cesiumjs/overlay/MapvLayer.js b/src/cesiumjs/overlay/MapvLayer.js index 9a08ec0ff..b5998a949 100644 --- a/src/cesiumjs/overlay/MapvLayer.js +++ b/src/cesiumjs/overlay/MapvLayer.js @@ -15,7 +15,7 @@ var idIndex = 0; * @param {Boolean} [mapVOptions.cesium.postRender=false] 是否实时渲染 * @param {Boolean} [mapVOptionscesium.cesium.postRenderFrame=30] 每间隔多少帧渲染一次 * @param container - {Element} 外部传入的div;外接的方式使用mapv - * @example + * @example * // 构建对应的dataset var dataSet = new mapv.DataSet(data); @@ -90,7 +90,7 @@ export default class MapvLayer { } initDevicePixelRatio() { - this.devicePixelRatio = window.devicePixelRatio || 1; + this.devicePixelRatio = 1; } addInnerContainer() { @@ -140,7 +140,7 @@ export default class MapvLayer { this.scene.camera.moveStart.removeEventListener(this.postStartEvent, this); this.scene.camera.moveEnd.removeEventListener(this.postEndEvent, this); } else { - let handler = this.handler; + let handler = this.handler; if (handler) { handler.removeInputAction(this.innerMoveEnd, Cesium.ScreenSpaceEventType.WHEEL); handler.removeInputAction(this.innerMoveStart, Cesium.ScreenSpaceEventType.LEFT_DOWN); diff --git a/src/cesiumjs/overlay/PopupLayer.js b/src/cesiumjs/overlay/PopupLayer.js index e8c34f718..9a4422dd6 100644 --- a/src/cesiumjs/overlay/PopupLayer.js +++ b/src/cesiumjs/overlay/PopupLayer.js @@ -71,7 +71,6 @@ export default class PopupLayer { this.popupContentId = options.popupContentId || 'cesium-popup-content-id-' + popupsIdIndex++; this.options.postRender = this.options.postRender === undefined ? true : this.options.postRender; - this.Cesium = options.Cesium || window['Cesium']; this.scene = map.scene; this.camera = map.camera; @@ -83,7 +82,7 @@ export default class PopupLayer { this.onHide = onHide; } - let ScreenSpaceEventHandler = this.Cesium.ScreenSpaceEventHandler || window['Cesium'].ScreenSpaceEventHandler; + let ScreenSpaceEventHandler = Cesium.ScreenSpaceEventHandler || window['Cesium'].ScreenSpaceEventHandler; this.handler = new ScreenSpaceEventHandler(this.scene.canvas); @@ -96,7 +95,7 @@ export default class PopupLayer { this.cartesian = this.cartesian || this.position.cartesian || - this.Cesium.Cartesian3.fromDegrees(this.position.longitude, this.position.latitude, this.position.height); + Cesium.Cartesian3.fromDegrees(this.position.longitude, this.position.latitude, this.position.height); let vc = this.map.container; let cesumWidgetContainer = undefined; @@ -138,27 +137,30 @@ export default class PopupLayer { infoDiv.style.display = 'none'; if (typeof this.container === 'string') { infoDiv.innerHTML = - '
' + - '
' + - this.container + - '
' + - '
' + - '
' + - '
' + + '
' + + // '×' + + '
' + + this.container + + '
' + + '
' + + '
' + + '
' + '
'; } else { let popupContentDiv = window.document.createElement('div'); popupContentDiv.id = this.popupContentId; - popupContentDiv.className = 'cesium-popup'; + popupContentDiv.className = "cesium-popup"; let popupContentWrapperDiv = window.document.createElement('div'); - popupContentWrapperDiv.className = 'cesium-popup-content-wrapper'; + popupContentWrapperDiv.className = "cesium-popup-content-wrapper"; popupContentWrapperDiv.appendChild(this.container); popupContentDiv.appendChild(popupContentWrapperDiv); - + let tipContainerDiv = window.document.createElement('div'); - tipContainerDiv.className = 'cesium-popup-tip-container'; + tipContainerDiv.className = "cesium-popup-tip-container"; let tipDiv = window.document.createElement('div'); - tipDiv.className = 'cesium-popup-tip'; + tipDiv.className = "cesium-popup-tip"; tipContainerDiv.appendChild(tipDiv); popupContentDiv.appendChild(tipContainerDiv); infoDiv.appendChild(popupContentDiv); @@ -179,7 +181,7 @@ export default class PopupLayer { bindEvent() { let self = this; - this.handler.setInputAction(this.movement, this.Cesium.ScreenSpaceEventType.LEFT_CLICK); + this.handler.setInputAction(this.movement, Cesium.ScreenSpaceEventType.LEFT_CLICK); if (!this.map) { return; } @@ -188,8 +190,8 @@ export default class PopupLayer { this.map.scene.postRender.addEventListener(() => self.update()); } else { this.map.camera.changed.addEventListener(() => self.update()); - this.handler.setInputAction(this.moveStart, this.Cesium.ScreenSpaceEventType.LEFT_DOWN); - this.handler.setInputAction(this.moveEnd, this.Cesium.ScreenSpaceEventType.LEFT_UP); + this.handler.setInputAction(this.moveStart, Cesium.ScreenSpaceEventType.LEFT_DOWN); + this.handler.setInputAction(this.moveEnd, Cesium.ScreenSpaceEventType.LEFT_UP); this.map.scene.camera.moveEnd.addEventListener(() => self.update()); } } @@ -211,8 +213,8 @@ export default class PopupLayer { movement(movement) { var pickedPrimitive = this.map.scene.pick(movement.position); - var pickedEntity = this.Cesium.defined(pickedPrimitive) ? pickedPrimitive.id : undefined; - if (this.Cesium.defined(pickedEntity) /* && Cesium.defined(pickedEntity.billboard) */) { + var pickedEntity = Cesium.defined(pickedPrimitive) ? pickedPrimitive.id : undefined; + if (Cesium.defined(pickedEntity) /* && Cesium.defined(pickedEntity.billboard) */) { if (this.position && this.position.entity) { pickedPrimitive.id === this.position.entity.id; this.show(); diff --git a/src/cesiumjs/overlay/echarts/MapCoordSys.js b/src/cesiumjs/overlay/echarts/MapCoordSys.js index ec0afe941..9b7be1a01 100644 --- a/src/cesiumjs/overlay/echarts/MapCoordSys.js +++ b/src/cesiumjs/overlay/echarts/MapCoordSys.js @@ -1,4 +1,4 @@ -import Cesium from '../../../../node_modules/cesium/Source/Cesium'; +//import Cesium from '../../../../node_modules/cesium/Source/Cesium'; import echarts from 'echarts'; /** diff --git a/src/cesiumjs/overlay/mapv/MapvBaseLayer.js b/src/cesiumjs/overlay/mapv/MapvBaseLayer.js index 454141f50..38cc60c6e 100644 --- a/src/cesiumjs/overlay/mapv/MapvBaseLayer.js +++ b/src/cesiumjs/overlay/mapv/MapvBaseLayer.js @@ -3,7 +3,7 @@ import { DataSet } from "mapv"; -import Cesium from '../../../../node_modules/cesium/Source/Cesium'; +//import Cesium from '../../../../node_modules/cesium/Source/Cesium'; var BaseLayer = baiduMapLayer ? baiduMapLayer.__proto__ : Function; diff --git a/src/cesiumjs/overlay/popup/popup.js b/src/cesiumjs/overlay/popup/popup.js index 0fc8388fa..697f42022 100644 --- a/src/cesiumjs/overlay/popup/popup.js +++ b/src/cesiumjs/overlay/popup/popup.js @@ -8,57 +8,56 @@ * @param {Object} [options.latitude] 传入的纬度,内部换算笛卡尔积 */ export function updataPopupPosition(viewer, cartesian, popupId, popupContentId, options) { - if (!cartesian) return; + if(!cartesian) return ; let scene = viewer.scene; let camera = viewer.camera; let rect = camera.computeViewRectangle(); - let Cesium = options.Cesium || window['Cesium']; - const south = Cesium.Math.toDegrees(rect.south); - const north = Cesium.Math.toDegrees(rect.north); - const east = Cesium.Math.toDegrees(rect.east); - const west = Cesium.Math.toDegrees(rect.west); + const south = Cesium.Math.toDegrees(rect.south) + const north = Cesium.Math.toDegrees(rect.north) + const east = Cesium.Math.toDegrees(rect.east) + const west = Cesium.Math.toDegrees(rect.west) let carto, longitude, latitude; - if (options && options.longitude && options.latitude) { + if(options && options.longitude && options.latitude){ longitude = options.position.longitude; latitude = options.position.latitude; if (longitude < west || longitude > east || latitude > north || latitude < south) { - popup.style.display = 'none'; + popup.style.display = "none"; return; } } else { - carto = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian); + carto = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian); longitude = Cesium.Math.toDegrees(carto.longitude); latitude = Cesium.Math.toDegrees(carto.latitude); } - + var px_position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, cartesian); - - if (!px_position) return; + + if(!px_position) return; var res = false; var e = cartesian, i = camera.position, n = scene.globe.ellipsoid.cartesianToCartographic(i).height; - if (!((n += 1 * scene.globe.ellipsoid.maximumRadius), Cesium.Cartesian3.distance(i, e) > n)) { + if (!(n += 1 * scene.globe.ellipsoid.maximumRadius, Cesium.Cartesian3.distance(i, e) > n)) { res = true; } if (longitude < west || longitude > east || latitude > north || latitude < south) { res = false; } - + let popup = window.document.getElementById(popupId); - if (!popup) return; + if(!popup) return; if (res) { - popup.style.display = 'block'; + popup.style.display = "block"; var trackPopUpContent = window.document.getElementById(popupContentId); var popw = document.getElementById(popupContentId).offsetWidth; var poph = document.getElementById(popupContentId).offsetHeight; - trackPopUpContent.style.left = px_position.x - popw / 2 + 'px'; - trackPopUpContent.style.top = px_position.y - (poph - 10) + 'px'; + trackPopUpContent.style.left = px_position.x - (popw / 2) + "px"; + trackPopUpContent.style.top = px_position.y - (poph - 10) + "px"; } else { - popup.style.display = 'none'; + popup.style.display = "none"; } } diff --git a/src/cesiumjs/render/VectorTileLayer.js b/src/cesiumjs/render/VectorTileLayer.js index 627539e07..a85dec9cf 100644 --- a/src/cesiumjs/render/VectorTileLayer.js +++ b/src/cesiumjs/render/VectorTileLayer.js @@ -21,7 +21,9 @@ import axios from 'axios'; * @param {Cesium.TilingScheme} [option.tilingScheme] 矢量瓦片瓦片切分规则:经纬度还是墨卡托 * @param {String} [option.token] 第三方需要的token,比如mapbox * @param {String} [option.show=true] 是否可见 - * @param {String} [option.callback] 加载矢量瓦片成功回调,返回Provider + * @param {Number} [option.maximumLevel=20] 最大级别 + * @param {Number} [option.minimumLevel=0] 最小级别 + * @param {String} [option.callback] 加载矢量瓦片成功回调,返回Provider * @example * vectortileLayer = new CesiumZondy.Overlayer.VectorTileLayer( webGlobe.viewer, @@ -53,6 +55,8 @@ export class VectorTileLayer { this.styleUrl = options.styleUrl; this.tilingScheme = options.tilingScheme; this.provider = null; + this.maximumLevel = options.maximumLevel || 20; + this.minimumLevel = options.minimumLevel || 0; this.initDevicePixelRatio(); //this.bindEvent(); @@ -166,7 +170,9 @@ export class VectorTileLayer { opacity: this.opacity, threadId: this.threadId, show: this.show, - tilingScheme: this.tilingScheme + tilingScheme: this.tilingScheme, + maximumLevel: this.maximumLevel, + minimumLevel: this.minimumLevel }); this.provider = this.viewer.imageryLayers.addImageryProvider(vectortile); this.provider.show = this.show; diff --git a/src/cesiumjs/render/vectortile/MapgisVectorTileQueue.js b/src/cesiumjs/render/vectortile/MapgisVectorTileQueue.js index f29670dd9..da188b028 100644 --- a/src/cesiumjs/render/vectortile/MapgisVectorTileQueue.js +++ b/src/cesiumjs/render/vectortile/MapgisVectorTileQueue.js @@ -1,29 +1,39 @@ -export class TileQueue { - constructor() { - this.queue = []; - } - - push(tile) { - this.queue.push(tile); - } - - has(tile) { - for (let i = 0; i < this.queue.length; i++) { - let it = this.queue[i]; - if (it.x == tile.x && it.y == tile.y && it.z == tile.z && it.id == tile.id) { - return true; - } - } - return false; - /* let result = this.queue.filter(i => { - if (i.x == tile.x && i.y == tile.y && i.z == tile.z) { - return true; - } else { - return false; - } - }); - if (result.length > 0) return true; - return false; */ - } -} +export class TileQueue { + constructor() { + this.queue = []; + } + + push(tile) { + this.queue.push(tile); + } + + remove(tile){ + for (let i = 0; i < this.queue.length; i++) { + let it = this.queue[i]; + if (it.x == tile.x && it.y == tile.y && ikt.z == tile.z && it.id == tile.id) { + this.queue.splice(i,1) + return + } + } + } + + has(tile) { + for (let i = 0; i < this.queue.length; i++) { + let it = this.queue[i]; + if (it.x == tile.x && it.y == tile.y && it.z == tile.z && it.id == tile.id) { + return true; + } + } + return false; + /* let result = this.queue.filter(i => { + if (i.x == tile.x && i.y == tile.y && i.z == tile.z) { + return true; + } else { + return false; + } + }); + if (result.length > 0) return true; + return false; */ + } +} export default TileQueue; \ No newline at end of file diff --git a/src/cesiumjs/render/vectortile/VectorTileProvider.js b/src/cesiumjs/render/vectortile/VectorTileProvider.js index 3091f02c4..4a7739a6b 100644 --- a/src/cesiumjs/render/vectortile/VectorTileProvider.js +++ b/src/cesiumjs/render/vectortile/VectorTileProvider.js @@ -1,7 +1,7 @@ import MVT from 'ol/format/MVT'; -import ReplayGroup from 'ol/render/canvas/ReplayGroup' -import webGlReplayGroup from 'ol/render/webgl/ReplayGroup' -import { renderFeature, getTolerance } from 'ol/renderer/vector' +import ReplayGroup from 'ol/render/canvas/ReplayGroup'; +import webGlReplayGroup from 'ol/render/webgl/ReplayGroup'; +import { renderFeature, getTolerance } from 'ol/renderer/vector'; import { TileQueue } from './MapgisVectorTileQueue'; //import ExecutorGroup from 'ol/render/canvas/ExecutorGroup'; @@ -9,254 +9,264 @@ import { TileQueue } from './MapgisVectorTileQueue'; // Styles for the mapbox-streets-v6 vector tile data set. Loosely based on // http://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6.json -const MapGisCesiumResolution = [78271.51696402048, 39135.75848201024, - 19567.87924100512, 9783.93962050256, 4891.96981025128, 2445.98490512564, - 1222.99245256282, 611.49622628141, 305.748113140705, 152.8740565703525, - 76.43702828517625, 38.21851414258813, 19.109257071294063, 9.554628535647032, - 4.777314267823516, 2.388657133911758, 1.194328566955879, 0.5971642834779395, - 0.29858214173896974, 0.14929107086948487, 0.07464553543474244]; +const MapGisCesiumResolution = [ + 78271.51696402048, 39135.75848201024, 19567.87924100512, 9783.93962050256, 4891.96981025128, 2445.98490512564, 1222.99245256282, 611.49622628141, + 305.748113140705, 152.8740565703525, 76.43702828517625, 38.21851414258813, 19.109257071294063, 9.554628535647032, 4.777314267823516, + 2.388657133911758, 1.194328566955879, 0.5971642834779395, 0.29858214173896974, 0.14929107086948487, 0.07464553543474244 +]; export default function VectorTileProvider(Cesium, options) { - function MVTProvider(options) { - options = Cesium.defaultValue(options, Cesium.defaultValue.EMPTY_OBJECT); - self = this; - this.show = Cesium.defined(options.show) ? options.show : true; - this._tilingScheme = Cesium.defined(options.tilingScheme) ? options.tilingScheme : new Cesium.WebMercatorTilingScheme({ ellipsoid: options.ellipsoid }); - this._tileWidth = Cesium.defaultValue(options.tileWidth, 512); - this._tileHeight = Cesium.defaultValue(options.tileHeight, 512); - this._readyPromise = Cesium.when.resolve(true); - this._mvtParser = new MVT(); - - this.options = options; - //this._mvtParser = new this._ol.format.MVT(); - - this._styleFun = options.style ? options.style : createMapboxStreetsV6Style(); - this._key = Cesium.defaultValue(options.key, ""); - this._url = Cesium.defaultValue(options.url, "https://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v7/{z}/{x}/{y}.vector.pbf?access_token={k}"); - - // var sw = this._tilingScheme._rectangleSouthwestInMeters; - // var ne = this._tilingScheme._rectangleNortheastInMeters; - // var mapExtent = [sw.x, sw.y, ne.x, ne.y]; - this._resolutions = MapGisCesiumResolution; - //this._resolutions = ol.tilegrid.resolutionsFromExtent(mapExtent, 22, this._tileWidth); - - this._pixelRatio = 1; - this._transform = [0.125, 0, 0, 0.125, 0, 0]; - this._replays = ["Default", "Image", "Polygon", "LineString", "Text"]; - - this._tileQueue = new Cesium.TileReplacementQueue(); - this._tileSends = new TileQueue(); - this._cacheSize = 1024; - } - - Cesium.defineProperties(MVTProvider.prototype, { - proxy: { - get: function () { - return undefined; - } - }, - - tileWidth: { - get: function () { - return this._tileWidth; - } - }, - - tileHeight: { - get: function () { - return this._tileHeight; - } - }, - - maximumLevel: { - get: function () { - return undefined; - } - }, + function MVTProvider(options) { + options = Cesium.defaultValue(options, Cesium.defaultValue.EMPTY_OBJECT); + self = this; + this.show = Cesium.defined(options.show) ? options.show : true; + this._tilingScheme = Cesium.defined(options.tilingScheme) + ? options.tilingScheme + : new Cesium.WebMercatorTilingScheme({ ellipsoid: options.ellipsoid }); + this._tileWidth = Cesium.defaultValue(options.tileWidth, 512); + this._tileHeight = Cesium.defaultValue(options.tileHeight, 512); + this._readyPromise = Cesium.when.resolve(true); + this._mvtParser = new MVT(); + + this.options = options; + //this._mvtParser = new this._ol.format.MVT(); + + this._styleFun = options.style ? options.style : createMapboxStreetsV6Style(); + this._key = Cesium.defaultValue(options.key, ''); + this._url = Cesium.defaultValue( + options.url, + 'https://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v7/{z}/{x}/{y}.vector.pbf?access_token={k}' + ); + + // var sw = this._tilingScheme._rectangleSouthwestInMeters; + // var ne = this._tilingScheme._rectangleNortheastInMeters; + // var mapExtent = [sw.x, sw.y, ne.x, ne.y]; + this._resolutions = MapGisCesiumResolution; + //this._resolutions = ol.tilegrid.resolutionsFromExtent(mapExtent, 22, this._tileWidth); + + this._pixelRatio = 1; + this._transform = [0.125, 0, 0, 0.125, 0, 0]; + this._replays = ['Default', 'Image', 'Polygon', 'LineString', 'Text']; + + this._tileQueue = new Cesium.TileReplacementQueue(); + this._tileSends = new TileQueue(); + this._cacheSize = 1024; + this._maximumLevel = options.maximumLevel || 20; + this._minimumLevel = options.minimumLevel || 0; + } - minimumLevel: { - get: function () { - return undefined; - } - }, - - tilingScheme: { - get: function () { - return this._tilingScheme; - } - }, - - rectangle: { - get: function () { - return this._tilingScheme.rectangle; - } - }, - - tileDiscardPolicy: { - get: function () { - return undefined; - } - }, - - errorEvent: { - get: function () { - return this._errorEvent; - } - }, - - ready: { - get: function () { - return true; - } - }, - - readyPromise: { - get: function () { - return this._readyPromise; - } - }, - - credit: { - get: function () { - return undefined; - } - }, + Object.defineProperties(MVTProvider.prototype, { + proxy: { + get: function () { + return undefined; + } + }, - hasAlphaChannel: { - get: function () { - return true; - } - } - }); + tileWidth: { + get: function () { + return this._tileWidth; + } + }, - MVTProvider.prototype.getTileCredits = function (x, y, level) { - return undefined; - }; + tileHeight: { + get: function () { + return this._tileHeight; + } + }, - function findTileInQueue(x, y, level, tileQueue) { - var item = tileQueue.head; - while (item != undefined && !(item.xMvt == x && item.yMvt == y && item.zMvt == level)) { - item = item.replacementNext; - } - return item; - }; + maximumLevel: { + get: function () { + return this._maximumLevel; + } + }, + minimumLevel: { + get: function () { + return this._minimumLevel; + } + }, - function remove(tileReplacementQueue, item) { - var previous = item.replacementPrevious; - var next = item.replacementNext; + tilingScheme: { + get: function () { + return this._tilingScheme; + } + }, - if (item === tileReplacementQueue._lastBeforeStartOfFrame) { - tileReplacementQueue._lastBeforeStartOfFrame = next; - } + rectangle: { + get: function () { + return this._tilingScheme.rectangle; + } + }, - if (item === tileReplacementQueue.head) { - tileReplacementQueue.head = next; - } else { - previous.replacementNext = next; - } + tileDiscardPolicy: { + get: function () { + return undefined; + } + }, - if (item === tileReplacementQueue.tail) { - tileReplacementQueue.tail = previous; - } else { - next.replacementPrevious = previous; - } + errorEvent: { + get: function () { + return this._errorEvent; + } + }, - item.replacementPrevious = undefined; - item.replacementNext = undefined; + ready: { + get: function () { + return true; + } + }, - --tileReplacementQueue.count; - } + readyPromise: { + get: function () { + return this._readyPromise; + } + }, - function trimTiles(tileQueue, maximumTiles) { - var tileToTrim = tileQueue.tail; - while (tileQueue.count > maximumTiles && - Cesium.defined(tileToTrim)) { - var previous = tileToTrim.replacementPrevious; + credit: { + get: function () { + return undefined; + } + }, - remove(tileQueue, tileToTrim); - //delete tileToTrim; 严格模式下不能删除 - tileToTrim = null; + hasAlphaChannel: { + get: function () { + return true; + } + } + }); - tileToTrim = previous; - } - }; + MVTProvider.prototype.getTileCredits = function (x, y, level) { + return undefined; + }; - MVTProvider.prototype.requestImage = function (x, y, level, request) { - if (this._tilingScheme._rectangleSouthwestInMeters == undefined) { - level = level + 1; - } - - let self = this; - var isSend = this._tileSends.has({ x: x, y: y, z: level, id: this.options.threadId }); - this._tileSends.push({ x: x, y: y, z: level, id: this.options.threadId }); - var cacheTile; - - if (isSend) { - cacheTile = findTileInQueue(x, y, level, this._tileQueue); - if (cacheTile != undefined) { - return cacheTile; - } - } else { - var url = this._url; - url = url.replace('{x}', x).replace('{y}', y).replace('{z}', level).replace('{k}', this._key); - //console.log("not find in cache"); - - var tilerequest = function (x, y, z) { - var resource = Cesium.Resource.createIfNeeded(url); - if (z < 12) { - /* var canvas = document.createElement('canvas'); - return canvas; */ + function findTileInQueue(x, y, level, tileQueue) { + var item = tileQueue.head; + while (item != undefined && !(item.xMvt == x && item.yMvt == y && item.zMvt == level)) { + item = item.replacementNext; } - return resource.fetchArrayBuffer().then(function (arrayBuffer) { - var canvas = document.createElement('canvas'); - canvas.width = 512; - canvas.height = 512; + return item; + } - canvas.xMvt = x; - canvas.yMvt = y; - canvas.zMvt = z; - self._tileQueue.markTileRendered(canvas); + function remove(tileReplacementQueue, item) { + var previous = item.replacementPrevious; + var next = item.replacementNext; - var vectorContext = canvas.getContext('2d'); + if (item === tileReplacementQueue._lastBeforeStartOfFrame) { + tileReplacementQueue._lastBeforeStartOfFrame = next; + } - var features = self._mvtParser.readFeatures(arrayBuffer); + if (item === tileReplacementQueue.head) { + tileReplacementQueue.head = next; + } else { + previous.replacementNext = next; + } - var styleFun = self._styleFun; + if (item === tileReplacementQueue.tail) { + k; + tileReplacementQueue.tail = previous; + } else { + next.replacementPrevious = previous; + } - var extent = [0, 0, 4096, 4096]; + item.replacementPrevious = undefined; + item.replacementNext = undefined; - var _replayGroup = new ReplayGroup(0, extent, 8, true, 512);//100->512 流畅了很多 - //var _webglReplayGroup = new webGlReplayGroup(0, extent, 16); + --tileReplacementQueue.count; + } - for (var i = 0; i < features.length; i++) { - var feature = features[i]; - var styles = styleFun(features[i], self._resolutions[level]); - for (var j = 0; j < styles.length; j++) { - renderFeature(_replayGroup, feature, styles[j], 16); - } - } - _replayGroup.finish(); - _replayGroup.replay(vectorContext, self._transform, 0, {}, self._replays); - //_replayGroup.replay(vectorContext, self._transform, 0, {}, self._pixelRatio, self._replays, true); - - if (self._tileQueue.count > self._cacheSize) { - trimTiles(self._tileQueue, self._cacheSize / 2); - } - - //delete _replayGroup; 严格模式下不能删除 - _replayGroup = null; - - return canvas; - }).otherwise(function (error) { - return null; - }); - }(x, y, level); + function trimTiles(tileQueue, tileSends, maximumTiles) { + var tileToTrim = tileQueue.tail; + while (tileQueue.count > maximumTiles && Cesium.defined(tileToTrim)) { + var previous = tileToTrim.replacementPrevious; + remove(tileQueue, tileToTrim); + //delete tileToTrim; 严格模式下不能删除 + tileToTrim = null; + tileToTrim = previous; + } } - }; - MVTProvider.prototype.pickFeatures = function (x, y, level, longitude, latitude) { - return undefined; - }; + MVTProvider.prototype.requestImage = function (x, y, level, request) { + if (this._tilingScheme._rectangleSouthwestInMeters == undefined) { + level = level + 1; + } + var isSend = this._tileSends.has({ x: x, y: y, z: level, id: this.options.threadId }); + if (isSend) { + var cacheTile = findTileInQueue(x, y, level, this._tileQueue); + if (cacheTile != undefined) { + return cacheTile; + } else { + this._tileSends.remove(x, y, level); + } + } else { + this._tileSends.push({ x: x, y: y, z: level, id: this.options.threadId }); + this.drawTile(x, y, level); + } + }; + + MVTProvider.prototype.drawTile = function (x, y, level) { + let self = this; + var url = this._url; + url = url.replace('{x}', x).replace('{y}', y).replace('{z}', level).replace('{k}', this._key); + if (this._maximumLevel && level > this._maximumLevel) { + return null; + } + var tilerequest = (function (x, y, z) { + var resource = Cesium.Resource.createIfNeeded(url); + if (z < 12) { + /* var canvas = document.createElement('canvas'); + return canvas; */ + } + return resource + .fetchArrayBuffer() + .then(function (arrayBuffer) { + var canvas = document.createElement('canvas'); + canvas.width = 512; + canvas.height = 512; + + canvas.xMvt = x; + canvas.yMvt = y; + canvas.zMvt = z; + self._tileQueue.markTileRendered(canvas); + + var vectorContext = canvas.getContext('2d'); + + var features = self._mvtParser.readFeatures(arrayBuffer); + + var styleFun = self._styleFun; + + var extent = [0, 0, 4096, 4096]; + + var _replayGroup = new ReplayGroup(0, extent, 8, true, 512); //100->512 流畅了很多 + //var _webglReplayGroup = new webGlReplayGroup(0, extent, 16); + + for (var i = 0; i < features.length; i++) { + var feature = features[i]; + var styles = styleFun(features[i], self._resolutions[level]); + for (var j = 0; j < styles.length; j++) { + renderFeature(_replayGroup, feature, styles[j], 16); + } + } + _replayGroup.finish(); + _replayGroup.replay(vectorContext, self._transform, 0, {}, self._replays); + //_replayGroup.replay(vectorContext, self._transform, 0, {}, self._pixelRatio, self._replays, true); + + if (self._tileQueue.count > self._cacheSize) { + trimTiles(self._tileQueue, self._tileSends, self._cacheSize / 2); + } + + //delete _replayGroup; 严格模式下不能删除 + _replayGroup = null; + + return canvas; + }) + .otherwise(function (error) { + this._tileSends.remove(x, y, level); + return null; + }); + })(x, y, level); + }; + MVTProvider.prototype.pickFeatures = function (x, y, level, longitude, latitude) { + return undefined; + }; - return new MVTProvider(options); + return new MVTProvider(options); } diff --git a/src/cesiumjs/ui/tween/TweenCollection.js b/src/cesiumjs/ui/tween/TweenCollection.js index f4e86ac03..ab3e3fd66 100644 --- a/src/cesiumjs/ui/tween/TweenCollection.js +++ b/src/cesiumjs/ui/tween/TweenCollection.js @@ -1,6 +1,6 @@ import { CesiumZondy } from '../../core/Base'; -import Cesium from '../../../../node_modules/cesium/Source/Cesium'; +//import Cesium from '../../../../node_modules/cesium/Source/Cesium'; import clone from '../../../../node_modules/cesium/Source/Core/clone'; import defaultValue from '../../../../node_modules/cesium/Source/Core/defaultValue'; import defined from '../../../../node_modules/cesium/Source/Core/defined'; diff --git a/src/config/opensource/leaflet_index.js b/src/config/opensource/leaflet_index.js index 438d5e479..e4b39978d 100644 --- a/src/config/opensource/leaflet_index.js +++ b/src/config/opensource/leaflet_index.js @@ -1,17 +1,15 @@ import L from 'leaflet'; -export { - L -}; +export { L }; import { - MapDocLayer, - MapTileLayer, - MapWMTSLayer, - MapVectorLayer, - CRS, - crs, + MapDocLayer, + MapTileLayer, + MapWMTSLayer, + MapVectorLayer, + CRS, + crs, ArcGISLayer, - TDTLayer, + TDTLayer, BaiduTileLayer, TiandituType, GoogleLayerType, @@ -19,517 +17,451 @@ import { OpenStreetLayerType } from '../../leaflet/layer'; -import { - ServiceBase -} from '../../service/ServiceBase'; +import { ServiceBase } from '../../service/ServiceBase'; import { - AnyLine, - Arc, - Zondy, - CAttStruct, - CAttDataRow, - CDisplayStyle, - CDisplayStyleExtend, - CDynNoteInfo, - CGDBInfo, - Circle, - CLineInfo, - CPointInfo, - CRegionInfo, - DynNoteLableType, - DynShowStyle, - XClsType, - VectClsType, - FeatureType, - FontShape, - LabelLinType, - LabelRegType, - LabelPntType, - RepeatType, - LabelSpreadType, - LineConstrain, - EightDirType, - ISShowArc, - NetAnalyType, - NetElemType, - CLinAdjustType, - CLinHeadType, - CLinJointType, - CLinStyleMakeType, - CItemType, - MapType, - LayerStatusType, - Feature, - FeatureGeometry, - FeatureGraphicBase, - FeatureSet, - GLine, - GPoint, - GRegion, - LabelLinInfo, - LabelRegInfo, - LablePntInfo, - MultiPolygon, - Point2D, - Polygon, - PolyLine, - Rectangle, - Tangram, - VectCls, - WebGraphicsInfo, - extend, - isArray, - extendDeep, - copy, - copyExcluce, - reset, - getElement, - isElement, - removeItem, - indexOf, - modifyDOMElement, - applyDefaults, - getParameterString, - getWFParameterString, - urlAppend, - getParameters, - IS_GECKO, - Browser, - getBrowser, - isSupportCanvas, - supportCanvas, - isInTheSameDomain, - toJSON, - transformResult, - copyAttributes, - copyAttributesWithClip, - cloneObject, - newGuid, - bind, - bindAsEventListener, - getTopAnalysisResult, - ChineseToUtf8, - DeepMerge, - merge, - mixin + AnyLine, + Arc, + Zondy, + CAttStruct, + CAttDataRow, + CDisplayStyle, + CDisplayStyleExtend, + CDynNoteInfo, + CGDBInfo, + Circle, + CLineInfo, + CPointInfo, + CRegionInfo, + DynNoteLableType, + DynShowStyle, + XClsType, + VectClsType, + FeatureType, + FontShape, + LabelLinType, + LabelRegType, + LabelPntType, + RepeatType, + LabelSpreadType, + LineConstrain, + EightDirType, + ISShowArc, + NetAnalyType, + NetElemType, + CLinAdjustType, + CLinHeadType, + CLinJointType, + CLinStyleMakeType, + CItemType, + MapType, + LayerStatusType, + Feature, + FeatureGeometry, + FeatureGraphicBase, + FeatureSet, + GLine, + GPoint, + GRegion, + LabelLinInfo, + LabelRegInfo, + LablePntInfo, + MultiPolygon, + Point2D, + Polygon, + PolyLine, + Rectangle, + Tangram, + VectCls, + WebGraphicsInfo, + extend, + isArray, + extendDeep, + copy, + copyExcluce, + reset, + getElement, + isElement, + removeItem, + indexOf, + modifyDOMElement, + applyDefaults, + getParameterString, + getWFParameterString, + urlAppend, + getParameters, + IS_GECKO, + Browser, + getBrowser, + isSupportCanvas, + supportCanvas, + isInTheSameDomain, + toJSON, + transformResult, + copyAttributes, + copyAttributesWithClip, + cloneObject, + newGuid, + bind, + bindAsEventListener, + getTopAnalysisResult, + ChineseToUtf8, + DeepMerge, + merge, + mixin } from '../../service/common'; import { - ContourNoteParam, - ContourParam, - ContourZValue, - ContourRegionInfo, - MeshingParam, - NetAnalyse, - NetAnalysisExtent, - SlopLineParam + ContourNoteParam, + ContourParam, + ContourZValue, + ContourRegionInfo, + MeshingParam, + NetAnalyse, + NetAnalysisExtent, + SlopLineParam } from '../../service/Igserver/extend'; -import { - CommonServiceBase, - Events, - CORS, - RequestTimeout, - FetchRequest, - IgsServiceBase, - JSONFormat -} from '../../service/baseserver'; +import { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat } from '../../service/baseserver'; -import { - ColorInfo, - GDBInfo, - MapDoc, - CatalogService, - TileLayer, - VectorLayer -} from '../../service/Igserver/MRCS'; +import { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer } from '../../service/Igserver/MRCS'; + +import { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService } from '../../service/Igserver/G3D'; import { - EditDocFeature, - EditLayerFeature, - EditServiceBase, - MultiGeoQuery, - MultiGeoQueryParameter, - ObjClsQuery, - ObjClsQueryParameter, - QueryByLayerParameter, - QueryDocFeature, - QueryFeatureRule, - QueryFeatureStruct, - QueryLayerFeature, - QueryParameter, - QueryParameterBase, - QueryServiceBase + EditDocFeature, + EditLayerFeature, + EditServiceBase, + MultiGeoQuery, + MultiGeoQueryParameter, + ObjClsQuery, + ObjClsQueryParameter, + QueryByLayerParameter, + QueryDocFeature, + QueryFeatureRule, + QueryFeatureStruct, + QueryLayerFeature, + QueryParameter, + QueryParameterBase, + QueryServiceBase } from '../../service/Igserver/MRFS'; import { - AnalysisBase, - ClassBufferBase, - ClassBufferByMultiplyRing, - ClassBufferBySingleRing, - ClipBase, - ClipByCircle, - ClipByLayer, - ClipByPolygon, - ContourAnalyse, - FeatureBuffBase, - FeatureBuffByMultiplyRing, - FeatureBuffBySingleRing, - NetAnalysis, - OverlayBase, - OverlayByLayer, - OverlayByPolygon, - ProjectBase, - ProjectByLayer, - ProjectBySRID + AnalysisBase, + ClassBufferBase, + ClassBufferByMultiplyRing, + ClassBufferBySingleRing, + ClipBase, + ClipByCircle, + ClipByLayer, + ClipByPolygon, + ContourAnalyse, + FeatureBuffBase, + FeatureBuffByMultiplyRing, + FeatureBuffBySingleRing, + NetAnalysis, + OverlayBase, + OverlayByLayer, + OverlayByPolygon, + ProjectBase, + ProjectByLayer, + ProjectBySRID } from '../../service/Igserver/MRFWS'; import { - CalArea, - CalPolyLineLength, - CalServiceBase, - CProjectBySRSID, - CProjectParam, - GeometryAnalysisBase, - ProjectDots, - ProjectRang, - Smooth, - TopAnalysis + CalArea, + CalPolyLineLength, + CalServiceBase, + CProjectBySRSID, + CProjectParam, + GeometryAnalysisBase, + ProjectDots, + ProjectRang, + Smooth, + TopAnalysis } from '../../service/Igserver/MRGS'; import { - GetDocImageService, - GetLayerImageService, - GetMapImageService, - GetMapInfoService, - GetTileImageService, - MapServiceBase + GetDocImageService, + GetLayerImageService, + GetMapImageService, + GetMapInfoService, + GetTileImageService, + MapServiceBase } from '../../service/Igserver/MRMS'; import { - CAllOtherDataItemInfoSource, - CAnnInfo, - CChartLabelFormat, - CChartTheme, - CChartThemeInfo, - CChartThemeRepresentInfo, - CChartType, - CDotDensityTheme, - CFourColorTheme, - CGraduatedSymbolTheme, - CLinInfo, - CMultiClassTheme, - CPntInfo, - CRandomTheme, - CRangeTheme, - CRangeThemeInfo, - CRegInfo, - CSimpleTheme, - CTheme, - CThemeInfo, - CUniqueTheme, - CUniqueThemeInfo, - ExpInfo, - FolderInfo, - FolderInfoAttribute, - ItemValue, - ThemeOper, - ThemesInfo + CAllOtherDataItemInfoSource, + CAnnInfo, + CChartLabelFormat, + CChartTheme, + CChartThemeInfo, + CChartThemeRepresentInfo, + CChartType, + CDotDensityTheme, + CFourColorTheme, + CGraduatedSymbolTheme, + CLinInfo, + CMultiClassTheme, + CPntInfo, + CRandomTheme, + CRangeTheme, + CRangeThemeInfo, + CRegInfo, + CSimpleTheme, + CTheme, + CThemeInfo, + CUniqueTheme, + CUniqueThemeInfo, + ExpInfo, + FolderInfo, + FolderInfoAttribute, + ItemValue, + ThemeOper, + ThemesInfo } from '../../service/Igserver/theme'; -import { - EPSG4214, - EPSG4490, - EPSG4610 -} from '../../leaflet/crs'; +import { EPSG4214, EPSG4490, EPSG4610 } from '../../leaflet/crs'; -import { - WMSCapabilities, - WMTSCapabilities, - OGCWMTSInfo, - OGCWMSInfo -} from '../../service/OGC'; +import { WMSCapabilities, WMTSCapabilities, OGCWMTSInfo, OGCWMSInfo } from '../../service/OGC'; export { - MapDocLayer, - MapTileLayer, - MapWMTSLayer, - MapVectorLayer, - CRS, - crs, + MapDocLayer, + MapTileLayer, + MapWMTSLayer, + MapVectorLayer, + CRS, + crs, ArcGISLayer, - TDTLayer, + TDTLayer, BaiduTileLayer, TiandituType, GoogleLayerType, ArcGISLayerType, OpenStreetLayerType - // TDT_WGS84, - // TDT_Mercator -}; - -export { - EPSG4214, - EPSG4490, - EPSG4610 + // TDT_WGS84, + // TDT_Mercator }; -export { - ServiceBase -}; +export { EPSG4214, EPSG4490, EPSG4610 }; +export { ServiceBase }; export { - AnyLine, - Arc, - Zondy, - CAttStruct, - CAttDataRow, - CDisplayStyle, - CDisplayStyleExtend, - CDynNoteInfo, - CGDBInfo, - Circle, - CLineInfo, - CPointInfo, - CRegionInfo, - DynNoteLableType, - DynShowStyle, - XClsType, - VectClsType, - FeatureType, - FontShape, - LabelLinType, - LabelRegType, - LabelPntType, - RepeatType, - LabelSpreadType, - LineConstrain, - EightDirType, - ISShowArc, - NetAnalyType, - NetElemType, - CLinAdjustType, - CLinHeadType, - CLinJointType, - CLinStyleMakeType, - CItemType, - MapType, - LayerStatusType, - Feature, - FeatureGeometry, - FeatureGraphicBase, - FeatureSet, - GLine, - GPoint, - GRegion, - LabelLinInfo, - LabelRegInfo, - LablePntInfo, - MultiPolygon, - Point2D, - Polygon, - PolyLine, - Rectangle, - Tangram, - VectCls, - WebGraphicsInfo, - extend, - isArray, - extendDeep, - copy, - copyExcluce, - reset, - getElement, - isElement, - removeItem, - indexOf, - modifyDOMElement, - applyDefaults, - getParameterString, - getWFParameterString, - urlAppend, - getParameters, - IS_GECKO, - Browser, - getBrowser, - isSupportCanvas, - supportCanvas, - isInTheSameDomain, - toJSON, - transformResult, - copyAttributes, - copyAttributesWithClip, - cloneObject, - newGuid, - bind, - bindAsEventListener, - getTopAnalysisResult, - ChineseToUtf8, - DeepMerge, - merge, - mixin -}; -export { - ContourNoteParam, - ContourParam, - ContourZValue, - ContourRegionInfo, - MeshingParam, - NetAnalyse, - NetAnalysisExtent, - SlopLineParam -}; -export { - CommonServiceBase, - Events, - CORS, - RequestTimeout, - FetchRequest, - IgsServiceBase, - JSONFormat + AnyLine, + Arc, + Zondy, + CAttStruct, + CAttDataRow, + CDisplayStyle, + CDisplayStyleExtend, + CDynNoteInfo, + CGDBInfo, + Circle, + CLineInfo, + CPointInfo, + CRegionInfo, + DynNoteLableType, + DynShowStyle, + XClsType, + VectClsType, + FeatureType, + FontShape, + LabelLinType, + LabelRegType, + LabelPntType, + RepeatType, + LabelSpreadType, + LineConstrain, + EightDirType, + ISShowArc, + NetAnalyType, + NetElemType, + CLinAdjustType, + CLinHeadType, + CLinJointType, + CLinStyleMakeType, + CItemType, + MapType, + LayerStatusType, + Feature, + FeatureGeometry, + FeatureGraphicBase, + FeatureSet, + GLine, + GPoint, + GRegion, + LabelLinInfo, + LabelRegInfo, + LablePntInfo, + MultiPolygon, + Point2D, + Polygon, + PolyLine, + Rectangle, + Tangram, + VectCls, + WebGraphicsInfo, + extend, + isArray, + extendDeep, + copy, + copyExcluce, + reset, + getElement, + isElement, + removeItem, + indexOf, + modifyDOMElement, + applyDefaults, + getParameterString, + getWFParameterString, + urlAppend, + getParameters, + IS_GECKO, + Browser, + getBrowser, + isSupportCanvas, + supportCanvas, + isInTheSameDomain, + toJSON, + transformResult, + copyAttributes, + copyAttributesWithClip, + cloneObject, + newGuid, + bind, + bindAsEventListener, + getTopAnalysisResult, + ChineseToUtf8, + DeepMerge, + merge, + mixin }; +export { ContourNoteParam, ContourParam, ContourZValue, ContourRegionInfo, MeshingParam, NetAnalyse, NetAnalysisExtent, SlopLineParam }; +export { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat }; +export { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer }; +export { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService }; export { - ColorInfo, - GDBInfo, - MapDoc, - CatalogService, - TileLayer, - VectorLayer + EditDocFeature, + EditLayerFeature, + EditServiceBase, + MultiGeoQuery, + MultiGeoQueryParameter, + ObjClsQuery, + ObjClsQueryParameter, + QueryByLayerParameter, + QueryDocFeature, + QueryFeatureRule, + QueryFeatureStruct, + QueryLayerFeature, + QueryParameter, + QueryParameterBase, + QueryServiceBase }; export { - EditDocFeature, - EditLayerFeature, - EditServiceBase, - MultiGeoQuery, - MultiGeoQueryParameter, - ObjClsQuery, - ObjClsQueryParameter, - QueryByLayerParameter, - QueryDocFeature, - QueryFeatureRule, - QueryFeatureStruct, - QueryLayerFeature, - QueryParameter, - QueryParameterBase, - QueryServiceBase + AnalysisBase, + ClassBufferBase, + ClassBufferByMultiplyRing, + ClassBufferBySingleRing, + ClipBase, + ClipByCircle, + ClipByLayer, + ClipByPolygon, + ContourAnalyse, + FeatureBuffBase, + FeatureBuffByMultiplyRing, + FeatureBuffBySingleRing, + NetAnalysis, + OverlayBase, + OverlayByLayer, + OverlayByPolygon, + ProjectBase, + ProjectByLayer, + ProjectBySRID }; export { - AnalysisBase, - ClassBufferBase, - ClassBufferByMultiplyRing, - ClassBufferBySingleRing, - ClipBase, - ClipByCircle, - ClipByLayer, - ClipByPolygon, - ContourAnalyse, - FeatureBuffBase, - FeatureBuffByMultiplyRing, - FeatureBuffBySingleRing, - NetAnalysis, - OverlayBase, - OverlayByLayer, - OverlayByPolygon, - ProjectBase, - ProjectByLayer, - ProjectBySRID + CalArea, + CalPolyLineLength, + CalServiceBase, + CProjectBySRSID, + CProjectParam, + GeometryAnalysisBase, + ProjectDots, + ProjectRang, + Smooth, + TopAnalysis }; +export { GetDocImageService, GetLayerImageService, GetMapImageService, GetMapInfoService, GetTileImageService, MapServiceBase }; export { - CalArea, - CalPolyLineLength, - CalServiceBase, - CProjectBySRSID, - CProjectParam, - GeometryAnalysisBase, - ProjectDots, - ProjectRang, - Smooth, - TopAnalysis -}; -export { - GetDocImageService, - GetLayerImageService, - GetMapImageService, - GetMapInfoService, - GetTileImageService, - MapServiceBase -}; -export { - CAllOtherDataItemInfoSource, - CAnnInfo, - CChartLabelFormat, - CChartTheme, - CChartThemeInfo, - CChartThemeRepresentInfo, - CChartType, - CDotDensityTheme, - CFourColorTheme, - CGraduatedSymbolTheme, - CLinInfo, - CMultiClassTheme, - CPntInfo, - CRandomTheme, - CRangeTheme, - CRangeThemeInfo, - CRegInfo, - CSimpleTheme, - CTheme, - CThemeInfo, - CUniqueTheme, - CUniqueThemeInfo, - ExpInfo, - FolderInfo, + CAllOtherDataItemInfoSource, + CAnnInfo, + CChartLabelFormat, + CChartTheme, + CChartThemeInfo, + CChartThemeRepresentInfo, + CChartType, + CDotDensityTheme, + CFourColorTheme, + CGraduatedSymbolTheme, + CLinInfo, + CMultiClassTheme, + CPntInfo, + CRandomTheme, + CRangeTheme, + CRangeThemeInfo, + CRegInfo, + CSimpleTheme, + CTheme, + CThemeInfo, + CUniqueTheme, + CUniqueThemeInfo, + ExpInfo, + FolderInfo, FolderInfoAttribute, ItemValue, ThemeOper, ThemesInfo }; -export { - WMSCapabilities, - WMTSCapabilities, - OGCWMTSInfo, - OGCWMSInfo -}; +export { WMSCapabilities, WMTSCapabilities, OGCWMTSInfo, OGCWMSInfo }; import { - GeoFeatureThemeLayer, - ThemeLayer, - RangeThemeLayer, - UniqueThemeLayer, - GraphThemeLayer, - graphThemeLayer, - RandomThemeLayer, - SimpleThemeLayer, - RankSymbolThemeLayer, - ThemeStyle + GeoFeatureThemeLayer, + ThemeLayer, + RangeThemeLayer, + UniqueThemeLayer, + GraphThemeLayer, + graphThemeLayer, + RandomThemeLayer, + SimpleThemeLayer, + RankSymbolThemeLayer, + ThemeStyle } from '../../leaflet/theme'; export { - GeoFeatureThemeLayer, - ThemeLayer, - RangeThemeLayer, - UniqueThemeLayer, - GraphThemeLayer, - graphThemeLayer, - RandomThemeLayer, - SimpleThemeLayer, - RankSymbolThemeLayer, - ThemeStyle + GeoFeatureThemeLayer, + ThemeLayer, + RangeThemeLayer, + UniqueThemeLayer, + GraphThemeLayer, + graphThemeLayer, + RandomThemeLayer, + SimpleThemeLayer, + RankSymbolThemeLayer, + ThemeStyle }; import { - Bar, - Bar3D, - OverlayCircle, - Graph, - Line, - Pie, - OverlayPoint, - RankSymbol, - Ring, - ThemeVector, + Bar, + Bar3D, + OverlayCircle, + Graph, + Line, + Pie, + OverlayPoint, + RankSymbol, + Ring, + ThemeVector, ShapeFactory, ShapeParameters, FeatureCircle, @@ -582,16 +514,16 @@ import { SUtil } from '../../common/overlay'; export { - Bar, - Bar3D, - OverlayCircle, - Graph, - Line, - Pie, - OverlayPoint, - RankSymbol, - Ring, - ThemeVector, + Bar, + Bar3D, + OverlayCircle, + Graph, + Line, + Pie, + OverlayPoint, + RankSymbol, + Ring, + ThemeVector, ShapeFactory, ShapeParameters, FeatureCircle, @@ -644,16 +576,16 @@ export { SUtil }; -// 大数据相关 +// 大数据相关 import { EchartsLayer, MapvLayer, StreamLayer, HeaterLayer, - ClusterLayer, - MarkerClusterLayer, - AnimatedMarkerLayer, - TimeDimension, + ClusterLayer, + MarkerClusterLayer, + AnimatedMarkerLayer, + TimeDimension, TimeDimensionControl, TimeDimensionLayer, TimeDimensionLayerGeoJson, @@ -667,14 +599,14 @@ export { MapvLayer, StreamLayer, HeaterLayer, - ClusterLayer, - MarkerClusterLayer, - AnimatedMarkerLayer, - TimeDimension, + ClusterLayer, + MarkerClusterLayer, + AnimatedMarkerLayer, + TimeDimension, TimeDimensionControl, TimeDimensionLayer, TimeDimensionLayerGeoJson, TimeDimensionLayerWMS, TimeDimensionPlayer, TimeDimensionUtil -} +}; diff --git a/src/config/opensource/mapbox_index.js b/src/config/opensource/mapbox_index.js index 9920b7104..8cfeacd6b 100644 --- a/src/config/opensource/mapbox_index.js +++ b/src/config/opensource/mapbox_index.js @@ -115,6 +115,8 @@ import { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServi import { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer } from '../../service/Igserver/MRCS'; +import { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService } from '../../service/Igserver/G3D'; + import { EditDocFeature, EditLayerFeature, @@ -307,6 +309,7 @@ export { export { ContourNoteParam, ContourParam, ContourZValue, ContourRegionInfo, MeshingParam, NetAnalyse, NetAnalysisExtent, SlopLineParam }; export { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat }; export { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer }; +export { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService }; export { EditDocFeature, EditLayerFeature, diff --git a/src/config/opensource/openlayers_index.js b/src/config/opensource/openlayers_index.js index d3a3dff9b..1deed2aa8 100644 --- a/src/config/opensource/openlayers_index.js +++ b/src/config/opensource/openlayers_index.js @@ -198,7 +198,7 @@ import * as _ol_tilegrid_WMTS from 'ol/tilegrid/WMTS'; import * as _ol_xml from 'ol/xml'; import * as ol_has from 'ol/has'; -let ol = window['ol'] = {}; +let ol = (window['ol'] = {}); ol.color = {}; ol.colorlike = {}; ol.control = {}; @@ -391,7 +391,6 @@ ol.geom.Polygon.circular = _ol_geom_Polygon.circular; ol.geom.Polygon.fromCircle = _ol_geom_Polygon.fromCircle; ol.geom.Polygon.fromExtent = _ol_geom_Polygon.fromExtent; - //重写ol.geom.Polygon /** * Set the coordinates of the polygon. @@ -407,8 +406,7 @@ ol.geom.Polygon.prototype.setCoordinates = function (coordinates, opt_layout) { if (!this.flatCoordinates) { this.flatCoordinates = []; } - var ends = deflateCoordinatesArray( - this.flatCoordinates, 0, coordinates, this.stride, this.ends_); + var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_); this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1]; this.changed(); } @@ -551,7 +549,6 @@ ol.tilegrid.createXYZ = _ol_tilegrid.createXYZ; ol.xml.getAllTextContent = _ol_xml.getAllTextContent; ol.xml.parse = _ol_xml.parse; - import { ZDTileDebug, MapDocTileSource, @@ -629,22 +626,9 @@ import { goog } from '../../openlayers/extend'; -export { - Drag, - MilStd, - MilStdDrawTool, - MilStdModifyTool, - MilStdDragPan, - EnumMilstdType, - MilstdParams, - PolygonJSON, - ZDOverviewMap, - goog -}; +export { Drag, MilStd, MilStdDrawTool, MilStdModifyTool, MilStdDragPan, EnumMilstdType, MilstdParams, PolygonJSON, ZDOverviewMap, goog }; -import { - ServiceBase -} from '../../service/ServiceBase'; +import { ServiceBase } from '../../service/ServiceBase'; import { AnyLine, @@ -750,24 +734,11 @@ import { SlopLineParam } from '../../service/Igserver/extend'; -import { - CommonServiceBase, - Events, - CORS, - RequestTimeout, - FetchRequest, - IgsServiceBase, - JSONFormat -} from '../../service/baseserver'; +import { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat } from '../../service/baseserver'; -import { - ColorInfo, - GDBInfo, - MapDoc, - CatalogService, - TileLayer, - VectorLayer -} from '../../service/Igserver/MRCS'; +import { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer } from '../../service/Igserver/MRCS'; + +import { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService } from '../../service/Igserver/G3D'; import { EditDocFeature, @@ -832,7 +803,6 @@ import { MapServiceBase } from '../../service/Igserver/MRMS'; - import { CAllOtherDataItemInfoSource, CAnnInfo, @@ -863,11 +833,9 @@ import { ThemeOper, ThemesInfo } from '../../service/Igserver/theme'; -import { CoordinateElpTrans } from "../../service/Igserver/MRGS/CoordinateElpTrans"; +import { CoordinateElpTrans } from '../../service/Igserver/MRGS/CoordinateElpTrans'; -export { - ServiceBase -}; +export { ServiceBase }; export { AnyLine, @@ -961,33 +929,10 @@ export { mixin, createCanvasContext2D }; -export { - ContourNoteParam, - ContourParam, - ContourZValue, - ContourRegionInfo, - MeshingParam, - NetAnalyse, - NetAnalysisExtent, - SlopLineParam -}; -export { - CommonServiceBase, - Events, - CORS, - RequestTimeout, - FetchRequest, - IgsServiceBase, - JSONFormat -}; -export { - ColorInfo, - GDBInfo, - MapDoc, - CatalogService, - TileLayer, - VectorLayer -}; +export { ContourNoteParam, ContourParam, ContourZValue, ContourRegionInfo, MeshingParam, NetAnalyse, NetAnalysisExtent, SlopLineParam }; +export { CommonServiceBase, Events, CORS, RequestTimeout, FetchRequest, IgsServiceBase, JSONFormat }; +export { ColorInfo, GDBInfo, MapDoc, CatalogService, TileLayer, VectorLayer }; +export { G3DLayerType, M3DTileDataInfo, G3DMapDoc, G3DService }; export { EditDocFeature, EditLayerFeature, @@ -1040,14 +985,7 @@ export { TopAnalysis, CoordinateElpTrans }; -export { - GetDocImageService, - GetLayerImageService, - GetMapImageService, - GetMapInfoService, - GetTileImageService, - MapServiceBase -}; +export { GetDocImageService, GetLayerImageService, GetMapImageService, GetMapInfoService, GetTileImageService, MapServiceBase }; export { CAllOtherDataItemInfoSource, CAnnInfo, @@ -1080,38 +1018,38 @@ export { }; import { - GeoFeatureThemeLayer, - ThemeLayer, - RangeThemeLayer, - UniqueThemeLayer, - GraphThemeLayer, - graphThemeLayer, - RandomThemeLayer, - SimpleThemeLayer, - RankSymbolThemeLayer, - ThemeStyle + GeoFeatureThemeLayer, + ThemeLayer, + RangeThemeLayer, + UniqueThemeLayer, + GraphThemeLayer, + graphThemeLayer, + RandomThemeLayer, + SimpleThemeLayer, + RankSymbolThemeLayer, + ThemeStyle } from '../../openlayers/theme'; export { - GeoFeatureThemeLayer, - ThemeLayer, - RangeThemeLayer, - UniqueThemeLayer, - GraphThemeLayer, - graphThemeLayer, - RandomThemeLayer, - SimpleThemeLayer, - RankSymbolThemeLayer, - ThemeStyle + GeoFeatureThemeLayer, + ThemeLayer, + RangeThemeLayer, + UniqueThemeLayer, + GraphThemeLayer, + graphThemeLayer, + RandomThemeLayer, + SimpleThemeLayer, + RankSymbolThemeLayer, + ThemeStyle }; import { /* MapvLayer, */ MapvSource -} from '../../openlayers/overlay/index' +} from '../../openlayers/overlay/index'; export { /* MapvLayer, */ MapvSource -} +}; ol.source.Mapv = MapvSource; // ol.zondy.MapvLayer = MapvLayer; diff --git a/src/mapboxgl/build.txt b/src/mapboxgl/build.txt new file mode 100644 index 000000000..a9763644d --- /dev/null +++ b/src/mapboxgl/build.txt @@ -0,0 +1,58 @@ +yarn run v1.22.4 +$ npm run build-debug && npm run build-release + +> @mapgis/webclient-es6-mapboxgl@16.0.4 build-debug +> webpack --config webpack/mapbox-es6-debug-config.js + +asset webclient-es6-mapboxgl.js 2.57 MiB [compared for emit] (name: main) +runtime modules 937 bytes 4 modules +modules by path ./theme/ 935 KiB 74 modules +modules by path ./layer/*.js 50 KiB + ./layer/index.js 550 bytes [built] [code generated] + + 8 modules +modules by path ./overlay/ 65.6 KiB + modules by path ./overlay/*.js 50.2 KiB 4 modules + + 2 modules +modules by path ./*.js 6.18 KiB + ./index.js 1.08 KiB [built] [code generated] + ./MapExtend.js 5.1 KiB [built] [code generated] +modules by path ./core/*.js 5.8 KiB + ./core/Base.js 418 bytes [built] [code generated] + ./core/Util.js 5.39 KiB [built] [code generated] ++ 5 modules + +WARNING in ./index.js 11:0-12:20 +export 'FabricLayer' (reexported as 'FabricLayer') was not found in './overlay/index.js' (possible exports: DeckglLayer, EchartsLayer, MapvLayer) + +webpack 5.74.0 compiled with 1 warning in 16566 ms + +> @mapgis/webclient-es6-mapboxgl@16.0.4 build-release +> webpack --config webpack/mapbox-es6-release-config.js + +asset webclient-es6-mapboxgl.min.js 1.63 MiB [compared for emit] [minimized] [big] (name: main) 1 related asset +orphan modules 1.05 MiB [orphan] 96 modules +runtime modules 663 bytes 3 modules +built modules 2.37 MiB [built] + ./index.js + 96 modules 1.05 MiB [not cacheable] [built] [code generated] + ./node_modules/@mapgis/webclient-es6-service/dist-libs/webclient-es6-service.min.js 1.32 MiB [built] [code generated] + +WARNING in ./index.js 11:0-12:20 +export 'FabricLayer' (reexported as 'FabricLayer') was not found in './overlay/index.js' (possible exports: DeckglLayer, EchartsLayer, MapvLayer) + +WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). +This can impact web performance. +Assets: + webclient-es6-mapboxgl.min.js (1.63 MiB) + +WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance. +Entrypoints: + main (1.63 MiB) + webclient-es6-mapboxgl.min.js + + +WARNING in webpack performance recommendations: +You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application. +For more info visit https://webpack.js.org/guides/code-splitting/ + +webpack 5.74.0 compiled with 4 warnings in 27115 ms +Done in 58.38s. diff --git a/src/mapboxgl/old_package.json b/src/mapboxgl/old_package.json new file mode 100644 index 000000000..a5583ba93 --- /dev/null +++ b/src/mapboxgl/old_package.json @@ -0,0 +1,40 @@ +{ + "name": "@mapgis/webclient-es6-mapboxgl", + "version":"16.0.3", + "description": "", + "main1": "dist-libs/webclient-mapboxgl-plugin.min.js", + "module": "index.js", + "scripts": { + "build": "npm run build-debug && npm run build-release", + "build-debug": "webpack --config webpack/mapbox-es6-debug-config.js", + "build-release": "webpack --config webpack/mapbox-es6-release-config.js" + }, + "keywords": [ + "zondy", + "service", + "&", + "mapboxgl" + ], + "author": "Wuhan Zondy Cyber Science&Technology Co.Ltd.", + "license": "Apache-2.0", + "dependencies": { + "@mapgis/mapbox-gl": "^16.0.0", + "@mapgis/webclient-es6-service": "^16.0.0", + "core-js": "^3.21.1", + "echarts": "^4.8.0", + "mapv": "^2.0.56" + }, + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.4", + "babel-loader": "^8.2.3", + "babel-plugin-add-module-exports": "^1.0.4", + "css-loader": "^6.5.1", + "html-webpack-plugin": "^5.5.0", + "sass-loader": "^12.4.0", + "style-loader": "^3.3.1", + "ts-loader": "^9.2.6", + "webpack": "^5.65.0", + "webpack-cli": "^4.10.0" + } +} diff --git a/src/mapboxgl/package.json b/src/mapboxgl/package.json index de9083102..6390152aa 100644 --- a/src/mapboxgl/package.json +++ b/src/mapboxgl/package.json @@ -1,39 +1,40 @@ -{ - "name": "@mapgis/webclient-es6-mapboxgl", - "version": "15.6.1", - "description": "", - "main1": "dist-libs/webclient-mapboxgl-plugin.min.js", - "module": "index.js", - "scripts": { - "build": "npm run build-debug && npm run build-release", - "build-debug": "webpack --config webpack/mapbox-es6-debug-config.js", - "build-release": "webpack --config webpack/mapbox-es6-release-config.js" - }, - "keywords": [ - "zondy", - "service", - "&", - "mapboxgl" - ], - "author": "Wuhan Zondy Cyber Science&Technology Co.Ltd.", - "license": "Apache-2.0", - "dependencies": { - "@mapgis/mapbox-gl": "^1.9.9", - "@mapgis/webclient-es6-service": "^10.5.7", - "core-js": "^3.21.1", - "echarts": "^4.8.0", - "mapv": "^2.0.56" - }, - "devDependencies": { - "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.4", - "babel-loader": "^8.2.3", - "babel-plugin-add-module-exports": "^1.0.4", - "css-loader": "^6.5.1", - "html-webpack-plugin": "^5.5.0", - "sass-loader": "^12.4.0", - "style-loader": "^3.3.1", - "ts-loader": "^9.2.6", - "webpack": "^5.65.0" - } -} +{ + "name": "@mapgis/webclient-es6-mapboxgl", + "version":"16.0.4", + "description": "", + "main1": "dist-libs/webclient-mapboxgl-plugin.min.js", + "module": "index.js", + "scripts": { + "build": "npm run build-debug && npm run build-release", + "build-debug": "webpack --config webpack/mapbox-es6-debug-config.js", + "build-release": "webpack --config webpack/mapbox-es6-release-config.js" + }, + "keywords": [ + "zondy", + "service", + "&", + "mapboxgl" + ], + "author": "Wuhan Zondy Cyber Science&Technology Co.Ltd.", + "license": "Apache-2.0", + "dependencies": { + "@mapgis/mapbox-gl": "^16.0.0", + "@mapgis/webclient-es6-service": "^16.0.0", + "core-js": "^3.21.1", + "echarts": "^4.8.0", + "mapv": "^2.0.56" + }, + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.4", + "babel-loader": "^8.2.3", + "babel-plugin-add-module-exports": "^1.0.4", + "css-loader": "^6.5.1", + "html-webpack-plugin": "^5.5.0", + "sass-loader": "^12.4.0", + "style-loader": "^3.3.1", + "ts-loader": "^9.2.6", + "webpack": "^5.65.0", + "webpack-cli": "^4.10.0" + } +} diff --git a/src/mapboxgl/result.txt b/src/mapboxgl/result.txt new file mode 100644 index 000000000..50a2b6cf5 --- /dev/null +++ b/src/mapboxgl/result.txt @@ -0,0 +1 @@ +true diff --git a/src/service/.babelrc b/src/service/.babelrc new file mode 100644 index 000000000..9571d018a --- /dev/null +++ b/src/service/.babelrc @@ -0,0 +1,5 @@ +{ + "compact": false, + "ast": false, + "presets": [["es2015", { "modules": false }]] +} diff --git a/src/service/Igserver/G3D/G3DMapDoc.js b/src/service/Igserver/G3D/G3DMapDoc.js index d976c9cec..1d9b3b45e 100644 --- a/src/service/Igserver/G3D/G3DMapDoc.js +++ b/src/service/Igserver/G3D/G3DMapDoc.js @@ -278,9 +278,9 @@ class G3DMapDoc extends G3DService { mapdoc.GetDocInfo(function(res){ console.log('GetDocInfo'); console.log(res) - },false,false,function (error) { + },function (error) { console.log(error) - },false); + }); */ GetDocInfo(onSuccess, onError) { var me = this; @@ -320,9 +320,9 @@ class G3DMapDoc extends G3DService { mapdoc.GetLayerInfo(function(res){ console.log('GetLayerInfo'); console.log(res) - },false,false,function (error) { + },function (error) { console.log(error) - },false); + }); */ GetLayerInfo(onSuccess, onError) { var me = this; @@ -381,9 +381,9 @@ class G3DMapDoc extends G3DService { mapdoc.GetFeature(function(res){ console.log('GetFeature'); console.log(res) - },false,false,function (error) { + },function (error) { console.log(error) - },false); + }); */ GetFeature(onSuccess, onError) { var me = this; @@ -479,9 +479,9 @@ class G3DMapDoc extends G3DService { mapdoc.SetSystemLibraryByDoc(function(res){ console.log('SetSystemLibraryByDoc'); console.log(res) - },false,false,function (error) { + },function (error) { console.log(error) - },false); + }); */ SetSystemLibraryByDoc(onSuccess, onError) { var me = this; diff --git a/src/service/Igserver/MRFS/QueryServiceBase.js b/src/service/Igserver/MRFS/QueryServiceBase.js index 87ab4fab3..ae608873f 100644 --- a/src/service/Igserver/MRFS/QueryServiceBase.js +++ b/src/service/Igserver/MRFS/QueryServiceBase.js @@ -15,6 +15,7 @@ import { IgsServiceBase } from '../../baseserver/IServiceBase'; * @param {Object} [option.resultCallBack =null] 返回结果回调 * @param {Zondy.Object.QueryByLayerParameter} [option.queryParam = null] 查询参数信息 * @param {String} [option.requestType = GET] 请求方式{string} GET|POST + * @param {Object} [options.withCredentials = undefined] 添加用户凭证 */ class QueryServiceBase extends ServiceBase { constructor(option) { @@ -44,6 +45,8 @@ class QueryServiceBase extends ServiceBase { * @description 请求方式 GET|POST */ this.requestType = options.requestType !== undefined ? options.requestType : 'GET'; + // 添加证书参数 + this.withCredentials = options.withCredentials } /** @@ -89,12 +92,15 @@ class QueryServiceBase extends ServiceBase { } }); if (way === 'GET') { - service.processAsync(); + service.processAsync({ + withCredentials: this.withCredentials + }); } else { service.processAsync({ method: 'POST', data: JSON.stringify(dataObject), - headers: { 'Content-Type': 'text/plain;charset=UTF-8' } + headers: { 'Content-Type': 'text/plain;charset=UTF-8' }, + withCredentials: this.withCredentials }); } } diff --git a/src/service/Igserver/MRFWS/ClassBufferBySingleRing.js b/src/service/Igserver/MRFWS/ClassBufferBySingleRing.js index 9e164fb05..bdd104dab 100644 --- a/src/service/Igserver/MRFWS/ClassBufferBySingleRing.js +++ b/src/service/Igserver/MRFWS/ClassBufferBySingleRing.js @@ -1,122 +1,126 @@ -import { - Zondy -} from '../../common/Base'; -import { - ClassBufferBase -} from "./ClassBufferBase"; - -/** - * @author 基础平台/产品2部 龚跃健 - * @class module:分析服务.ClassBufferBySingleRing - * @description Zondy.Service.ClassBufferBySingleRing 类缓冲分析(单圈) - * @classdesc 类缓冲分析(单圈) - * @extends Zondy.Service.ClassBufferBase - * @param {Object} option 属性键值对 - * @param {Number} [option.leftRad = 0.001] 缓冲分析左半径 - * @param {Number} [option.rightRad = 0.001] 缓冲分析右半径 - * @param {Boolean} [option.isByAtt = true] 是否根据属性字段设置缓冲区半径 - * @param {String} [option.fldName = null] 属性字段名称,当isByAtt为true时使用 - * @param {Number} [option.dynPrjRad = 0] 动态投影半径,使用前必须设置父类Zondy.Service.ClassBufferBase公共属性 isDynPrj 为”true” - * @example - //缓存结果图层的基地址 - var resultBaseUrl = "gdbp://MapGisLocal/OpenLayerVecterMap/sfcls/"; - if (anaType == "rad") {//不允许根据属性字段设置缓冲区半径 - //实例化ClassBufferBySingleRing类 - var clsBufBySR = new Zondy.Service.ClassBufferBySingleRing({ - //IGServer所在ip地址 - ip: "develop.smaryun.com", - //IGServer请求端口号 - port: "6163", - //缓冲时要素左侧缓冲半径 - leftRad: 1, - //缓冲时要素右侧缓冲半径 - rightRad: 1, - //不允许根据属性字段设置缓冲区半径 - isByAtt: false - }); - } else if (anaType == "att") {//根据属性字段设置缓冲区半径 - //实例化ClassBufferBySingleRing类 - var clsBufBySR = new Zondy.Service.ClassBufferBySingleRing({ - //IGServer所在ip地址 - ip: "develop.smaryun.com", - //IGServer请求端口号 - port: "6163", - //允许根据属性字段设置缓冲区半径 - isByAtt: true - }); - clsBufBySR.fldName = "长度"; - } - //调用Zondy.Service.ClassBufferBase基类公共属性 - clsBufBySR.srcInfo = "gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/世界河流_1"; - var resultname = "singleBuffAnalysisResultLayer" + self.getCurentTime(); - clsBufBySR.desInfo = resultBaseUrl + resultname; - clsBufBySR.execute(function (res) { - console.log(res); - }, "post",function (error) { - console.log(error); - }); - */ -class ClassBufferBySingleRing extends ClassBufferBase { - constructor(option) { - var options = option || {}; - super(options); - - /** - * @private - * @member Zondy.Service.ClassBufferBySingleRing.prototype.leftRad - * @type {Number} - * @description 缓冲分析左半径 - * @default 0.001 - */ - this.leftRad = options.leftRad !== undefined ? options.leftRad : 0.001; - - /** - * @private - * @member Zondy.Service.ClassBufferBySingleRing.prototype.rightRad - * @type {Number} - * @description 缓冲分析右半径 - * @default 0.001 - */ - this.rightRad = options.rightRad !== undefined ? options.rightRad : 0.001; - - /** - * @private - * @member Zondy.Service.ClassBufferBySingleRing.prototype.isByAtt - * @type {Boolean} - * @description 是否根据属性字段设置缓冲区半径 - * @default true - */ - this.isByAtt = options.isByAtt !== undefined ? options.isByAtt : true; - - /** - * @private - * @member Zondy.Service.ClassBufferBySingleRing.prototype.fldName - * @type {String} - * @description 属性字段名称,当isByAtt为true时使用 - * @default null - */ - this.fldName = options.fldName !== undefined ? options.fldName : null; - - /** - * @private - * @member Zondy.Service.ClassBufferBySingleRing.prototype.dynPrjRad - * @type {Number} - * @description 动态投影半径,使用前必须设置父类Zondy.Service.ClassBufferBase公共属性 isDynPrj 为”true” - * @default 0 - */ - this.dynPrjRad = options.dynPrjRad !== undefined ? options.dynPrjRad : 0; - - /** - * @private - * @member Zondy.Service.ClassBufferBySingleRing.prototype.flowID - * @type {String} - * @description 矢量图层单圈缓冲区分析的工作流ID - * @default "600231" - */ - this.flowID = "600231"; - } -} -export { - ClassBufferBySingleRing -}; -Zondy.Service.ClassBufferBySingleRing = ClassBufferBySingleRing; \ No newline at end of file +import { Zondy } from '../../common/Base'; +import { ClassBufferBase } from './ClassBufferBase'; + +/** + * @author 基础平台/产品2部 龚跃健 + * @class module:分析服务.ClassBufferBySingleRing + * @description Zondy.Service.ClassBufferBySingleRing 类缓冲分析(单圈) + * @classdesc 类缓冲分析(单圈) + * @extends Zondy.Service.ClassBufferBase + * @param {Object} option 属性键值对 + * @param {Number} [option.leftRad = 0.001] 缓冲分析左半径 + * @param {Number} [option.rightRad = 0.001] 缓冲分析右半径 + * @param {Boolean} [option.isByAtt = true] 是否根据属性字段设置缓冲区半径 + * @param {String} [option.fldName = null] 属性字段名称,当isByAtt为true时使用 + * @param {Number} [option.dynPrjRad = 0] 动态投影半径,使用前必须设置父类Zondy.Service.ClassBufferBase公共属性 isDynPrj 为”true” + * @param {Boolean} [option.calcRealAreaAndPerimeter = true] 是否计算真实的面积和周长,如果设置为true,则面积和周长返回结果为平方米 + * @example + //缓存结果图层的基地址 + var resultBaseUrl = "gdbp://MapGisLocal/OpenLayerVecterMap/sfcls/"; + if (anaType == "rad") {//不允许根据属性字段设置缓冲区半径 + //实例化ClassBufferBySingleRing类 + var clsBufBySR = new Zondy.Service.ClassBufferBySingleRing({ + //IGServer所在ip地址 + ip: "develop.smaryun.com", + //IGServer请求端口号 + port: "6163", + //缓冲时要素左侧缓冲半径 + leftRad: 1, + //缓冲时要素右侧缓冲半径 + rightRad: 1, + //不允许根据属性字段设置缓冲区半径 + isByAtt: false + }); + } else if (anaType == "att") {//根据属性字段设置缓冲区半径 + //实例化ClassBufferBySingleRing类 + var clsBufBySR = new Zondy.Service.ClassBufferBySingleRing({ + //IGServer所在ip地址 + ip: "develop.smaryun.com", + //IGServer请求端口号 + port: "6163", + //允许根据属性字段设置缓冲区半径 + isByAtt: true + }); + clsBufBySR.fldName = "长度"; + } + //调用Zondy.Service.ClassBufferBase基类公共属性 + clsBufBySR.srcInfo = "gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/世界河流_1"; + var resultname = "singleBuffAnalysisResultLayer" + self.getCurentTime(); + clsBufBySR.desInfo = resultBaseUrl + resultname; + clsBufBySR.execute(function (res) { + console.log(res); + }, "post",function (error) { + console.log(error); + }); + */ +class ClassBufferBySingleRing extends ClassBufferBase { + constructor(option) { + var options = option || {}; + super(options); + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.leftRad + * @type {Number} + * @description 缓冲分析左半径 + * @default 0.001 + */ + this.leftRad = options.leftRad !== undefined ? options.leftRad : 0.001; + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.rightRad + * @type {Number} + * @description 缓冲分析右半径 + * @default 0.001 + */ + this.rightRad = options.rightRad !== undefined ? options.rightRad : 0.001; + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.isByAtt + * @type {Boolean} + * @description 是否根据属性字段设置缓冲区半径 + * @default true + */ + this.isByAtt = options.isByAtt !== undefined ? options.isByAtt : true; + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.fldName + * @type {String} + * @description 属性字段名称,当isByAtt为true时使用 + * @default null + */ + this.fldName = options.fldName !== undefined ? options.fldName : null; + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.dynPrjRad + * @type {Number} + * @description 动态投影半径,使用前必须设置父类Zondy.Service.ClassBufferBase公共属性 isDynPrj 为”true” + * @default 0 + */ + this.dynPrjRad = options.dynPrjRad !== undefined ? options.dynPrjRad : 0; + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.calcRealAreaAndPerimeter + * @type {Boolean} + * @description 是否计算真实的面积和周长,如果设置为true,则面积和周长返回结果为平方米 + * @default true + */ + this.calcRealAreaAndPerimeter = options.calcRealAreaAndPerimeter !== undefined ? options.calcRealAreaAndPerimeter : true; + + /** + * @private + * @member Zondy.Service.ClassBufferBySingleRing.prototype.flowID + * @type {String} + * @description 矢量图层单圈缓冲区分析的工作流ID + * @default "600231" + */ + this.flowID = '600231'; + } +} +export { ClassBufferBySingleRing }; +Zondy.Service.ClassBufferBySingleRing = ClassBufferBySingleRing; diff --git a/src/service/Igserver/MRFWS/OverlayByLayer.js b/src/service/Igserver/MRFWS/OverlayByLayer.js index 30d5e5ea5..cf53cfccb 100644 --- a/src/service/Igserver/MRFWS/OverlayByLayer.js +++ b/src/service/Igserver/MRFWS/OverlayByLayer.js @@ -1,75 +1,79 @@ -import { - Zondy -} from '../../common/Base'; -import { - OverlayBase -} from "./OverlayBase"; - -/** - * 图层叠加 - * @class module:分析服务.OverlayByLayer - * @classdesc 图层叠加 - * @description Zondy.Service.OverlayByLayer - * @extends Zondy.Service.OverlayBase - * @param {Object} option 属性键值对 - * @param {String} [option.srcInfo2 = null] 设置叠加图层URL - * @example - //缓存结果图层的基地址 - var resultBaseUrl = "gdbp://MapGisLocal/OpenLayerVecterMap/sfcls/"; - //结果图层的名称 - var resultname = resultBaseUrl + "overLayByLayerAnalysisResultLayer" + self.getCurentTime(); - //实例化OverlayByLayer类 - var overlayParam = new Zondy.Service.OverlayByLayer({ - //IGServer所在ip地址 - ip: "develop.smaryun.com", - //IGServer请求端口号 - port: "6163", - //设置被叠加图层URL - srcInfo1: "gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/世界河流", - //设置叠加图层URL - srcInfo2: "gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/世界政区", - //设置结果URL - desInfo: resultname, - //设置结果图层的图形参数信息 - infoOptType: 2, - //求交 - overType: 1, - //允许重算面积 - isReCalculate: true, - //容差半径 - radius: 0.05 - }); - overlayParam.execute(function (res) { - console.log(res); - }, "post",function (error) { - console.log(error); - }); - */ -class OverlayByLayer extends OverlayBase { - constructor(option) { - var options = option || {}; - super(options); - - /** - * @private - * @member Zondy.Service.OverlayByLayer.prototype.srcInfo2 - * @type {String} - * @description 设置叠加图层URL - * @default null - */ - this.srcInfo2 = options.srcInfo2 !== undefined ? options.srcInfo2 : null; - - /** - * @private - * @member Zondy.Service.OverlayByLayer.prototype.flowID - * @type {String} - * @description 工作流ID - * @default "600227" - */ - this.flowID = "600227"; - } -} -export { - OverlayByLayer -}; -Zondy.Service.OverlayByLayer = OverlayByLayer; \ No newline at end of file +import { Zondy } from '../../common/Base'; +import { OverlayBase } from './OverlayBase'; + +/** + * 图层叠加 + * @class module:分析服务.OverlayByLayer + * @classdesc 图层叠加 + * @description Zondy.Service.OverlayByLayer + * @extends Zondy.Service.OverlayBase + * @param {Object} option 属性键值对 + * @param {String} [option.srcInfo2 = null] 设置叠加图层URL + * @param {Boolean} [option.calcRealAreaAndPerimeter = true] 是否计算真实的面积和周长,如果设置为true,则面积和周长返回结果为平方米 + * @example + //缓存结果图层的基地址 + var resultBaseUrl = "gdbp://MapGisLocal/OpenLayerVecterMap/sfcls/"; + //结果图层的名称 + var resultname = resultBaseUrl + "overLayByLayerAnalysisResultLayer" + self.getCurentTime(); + //实例化OverlayByLayer类 + var overlayParam = new Zondy.Service.OverlayByLayer({ + //IGServer所在ip地址 + ip: "develop.smaryun.com", + //IGServer请求端口号 + port: "6163", + //设置被叠加图层URL + srcInfo1: "gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/世界河流", + //设置叠加图层URL + srcInfo2: "gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/世界政区", + //设置结果URL + desInfo: resultname, + //设置结果图层的图形参数信息 + infoOptType: 2, + //求交 + overType: 1, + //允许重算面积 + isReCalculate: true, + //容差半径 + radius: 0.05 + }); + overlayParam.execute(function (res) { + console.log(res); + }, "post",function (error) { + console.log(error); + }); + */ +class OverlayByLayer extends OverlayBase { + constructor(option) { + var options = option || {}; + super(options); + + /** + * @private + * @member Zondy.Service.OverlayByLayer.prototype.srcInfo2 + * @type {String} + * @description 设置叠加图层URL + * @default null + */ + this.srcInfo2 = options.srcInfo2 !== undefined ? options.srcInfo2 : null; + + /** + * @private + * @member Zondy.Service.OverlayByLayer.prototype.calcRealAreaAndPerimeter + * @type {Boolean} + * @description 是否计算真实的面积和周长,如果设置为true,则面积和周长返回结果为平方米 + * @default true + */ + this.calcRealAreaAndPerimeter = options.calcRealAreaAndPerimeter !== undefined ? options.calcRealAreaAndPerimeter : true; + + /** + * @private + * @member Zondy.Service.OverlayByLayer.prototype.flowID + * @type {String} + * @description 工作流ID + * @default "600227" + */ + this.flowID = '600227'; + } +} +export { OverlayByLayer }; +Zondy.Service.OverlayByLayer = OverlayByLayer; diff --git a/src/service/build.txt b/src/service/build.txt new file mode 100644 index 000000000..fb8aa997b --- /dev/null +++ b/src/service/build.txt @@ -0,0 +1,59 @@ +yarn run v1.22.4 +$ npm run build-debug && npm run build-release + +> @mapgis/webclient-es6-service@16.1.12 build-debug D:\code\web\package\webclient-javascript\src\service +> webpack --config webpack/service-debug-config.js + +Happy[js]: Version: 5.0.1. Threads: 4 (shared pool) +Happy[js]: All set; signaling webpack to proceed. +Hash: 50b1659383fa40e9be7b +Version: webpack 4.19.1 +Time: 6528ms +Built at: 2022/10/07 16:38:35 + Asset Size Chunks Chunk Names +webclient-es6-service.js 8.79 MiB main [emitted] main +[./ArcGis/index.js] 2.75 KiB {main} [built] +[./Igserver/index.js] 1.36 KiB {main} [built] +[./OGC/index.js] 634 bytes {main} [built] +[./OpenGeospatialConsortium/index.js] 278 bytes {main} [built] +[./base/crs/index.js] 260 bytes {main} [built] +[./base/format/geojson/index.js] 372 bytes {main} [built] +[./base/renderer/index.js] 1.88 KiB {main} [built] +[./base/style/index.js] 1.65 KiB {main} [built] +[./base/symbols/index.js] 5.98 KiB {main} [built] +[./baseserver/index.js] 1.15 KiB {main} [built] +[./clouddisk/index.js] 788 bytes {main} [built] +[./common/index.js] 7.65 KiB {main} [built] +[./datastore/elasticsearch/index.js] 2.13 KiB {main} [built] +[./datastore/postgis/index.js] 1.55 KiB {main} [built] +[./index.js] 3.96 KiB {main} [built] + + 573 hidden modules + +> @mapgis/webclient-es6-service@16.1.12 build-release D:\code\web\package\webclient-javascript\src\service +> webpack --config webpack/service-release-config.js + +Happy[js]: Version: 5.0.1. Threads: 4 (shared pool) +Happy[js]: All set; signaling webpack to proceed. +Hash: 18d670aa7b35ce20e8d9 +Version: webpack 4.19.1 +Time: 20926ms +Built at: 2022/10/07 16:38:58 + Asset Size Chunks Chunk Names +webclient-es6-service.min.js 1.32 MiB 0 [emitted] main + [4] ./common/index.js 7.65 KiB {0} [built] + [24] ./base/symbols/index.js 5.98 KiB {0} [built] +[196] ./index.js 3.96 KiB {0} [built] +[197] ./utils/index.js 249 bytes {0} [built] +[228] ./base/style/index.js 1.65 KiB {0} [built] +[244] ./base/renderer/index.js 1.88 KiB {0} [built] +[254] ./base/format/geojson/index.js 372 bytes {0} [built] +[256] ./base/crs/index.js 260 bytes {0} [built] +[317] ./baseserver/index.js 1.15 KiB {0} [built] +[322] ./Igserver/index.js 1.36 KiB {0} [built] +[380] ./OGC/index.js 634 bytes {0} [built] +[408] ./OpenGeospatialConsortium/index.js 278 bytes {0} [built] +[422] ./datastore/elasticsearch/index.js 2.13 KiB {0} [built] +[429] ./datastore/postgis/index.js 1.55 KiB {0} [built] +[435] ./clouddisk/index.js 788 bytes {0} [built] + + 440 hidden modules +Done in 31.23s. diff --git a/src/service/old_package.json b/src/service/old_package.json new file mode 100644 index 000000000..a2786cd16 --- /dev/null +++ b/src/service/old_package.json @@ -0,0 +1,39 @@ +{ + "name": "@mapgis/webclient-es6-service", + "version":"16.1.11", + "description": "mapgis ES6 format for igserver", + "main1": "dist-libs/webclient-es6-service.min.js", + "module": "index.js", + "scripts": { + "build": "npm run build-debug && npm run build-release", + "build-debug": "webpack --config webpack/service-debug-config.js", + "build-release": "webpack --config webpack/service-release-config.js" + }, + "author": "Wuhan Zondy Cyber Science&Technology Co.Ltd.", + "license": "Apache-2.0", + "dependencies": { + "@turf/turf": "^6.5.0", + "axios": "^0.26.0", + "core-js": "^3.21.1", + "fast-xml-parser": "^3.17.6", + "fetch-ie8": "^1.5.0", + "proj4": "^2.7.5", + "promise-polyfill": "^8.2.1", + "qs": "^6.9.4", + "svg-pathdata": "^6.0.0" + }, + "devDependencies": { + "babel-core": "^6.26.3", + "babel-eslint": "^10.1.0", + "babel-loader": "^7.1.2", + "babel-plugin-transform-class-properties": "^6.11.5", + "babel-plugin-transform-decorators-legacy": "^1.3.4", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-es2015": "^6.24.1", + "happypack": "^5.0.0", + "webpack": "4.19.1", + "webpack-cleanup-plugin": "0.4.2", + "webpack-cli": "2.1.5", + "webpack-parallel-uglify-plugin": "0.4.2" + } +} diff --git a/src/service/package.json b/src/service/package.json index 13ebcb242..83387af02 100644 --- a/src/service/package.json +++ b/src/service/package.json @@ -1,7 +1,7 @@ { "name": "@mapgis/webclient-es6-service", - "version": "15.6.1", - "description": "中地数码基于ES6语法针对igserver的服务封装", + "version": "16.0.2", + "description": "mapgis ES6 format for igserver", "main1": "dist-libs/webclient-es6-service.min.js", "module": "index.js", "scripts": { @@ -23,6 +23,13 @@ "svg-pathdata": "^6.0.0" }, "devDependencies": { + "babel-core": "^6.26.3", + "babel-eslint": "^10.1.0", + "babel-loader": "^7.1.2", + "babel-plugin-transform-class-properties": "^6.11.5", + "babel-plugin-transform-decorators-legacy": "^1.3.4", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-es2015": "^6.24.1", "happypack": "^5.0.0", "webpack": "4.19.1", "webpack-cleanup-plugin": "0.4.2", diff --git a/src/service/result.txt b/src/service/result.txt new file mode 100644 index 000000000..948299f47 --- /dev/null +++ b/src/service/result.txt @@ -0,0 +1 @@ +true diff --git a/src/service/yarn-error.log b/src/service/yarn-error.log new file mode 100644 index 000000000..ba921c436 --- /dev/null +++ b/src/service/yarn-error.log @@ -0,0 +1,63 @@ +Arguments: + C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js build + +PATH: + E:\GIS\OSM\osm2pgsql;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\develop\git\Git\cmd;C:\Users\Administrator\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramData\chocolatey\bin;E:\GIS\OSM\osmosis\bin;E:\GIS\PostGreSQL\bin;C:\Users\Administrator\AppData\Roaming\npm;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Local\Yarn\bin + +Yarn version: + 1.22.4 + +Node version: + 14.20.0 + +Platform: + win32 x64 + +Trace: + SyntaxError: D:\code\web\package\webclient-javascript\src\service\package.json: Unexpected token + in JSON at position 119 + at JSON.parse () + at C:\Program Files (x86)\Yarn\lib\cli.js:1625:59 + at Generator.next () + at step (C:\Program Files (x86)\Yarn\lib\cli.js:310:30) + at C:\Program Files (x86)\Yarn\lib\cli.js:321:13 + +npm manifest: + { + "name": "@mapgis/webclient-es6-service", + "version":"16.0.0", + "description": "中地数码基于ES6语法针对igserver的服务封�?, + "main1": "dist-libs/webclient-es6-service.min.js", + "module": "index.js", + "scripts": { + "build": "npm run build-debug && npm run build-release", + "build-debug": "webpack --config webpack/service-debug-config.js", + "build-release": "webpack --config webpack/service-release-config.js" + }, + "author": "Wuhan Zondy Cyber Science&Technology Co.Ltd.", + "license": "Apache-2.0", + "dependencies": { + "@turf/turf": "^6.5.0", + "axios": "^0.26.0", + "core-js": "^3.21.1", + "fast-xml-parser": "^3.17.6", + "fetch-ie8": "^1.5.0", + "proj4": "^2.7.5", + "promise-polyfill": "^8.2.1", + "qs": "^6.9.4", + "svg-pathdata": "^6.0.0" + }, + "devDependencies": { + "happypack": "^5.0.0", + "webpack": "4.19.1", + "webpack-cleanup-plugin": "0.4.2", + "webpack-cli": "2.1.5", + "webpack-parallel-uglify-plugin": "0.4.2" + } + } + +yarn manifest: + No manifest + +Lockfile: + No lockfile diff --git a/website/package.json b/website/package.json index e258348ce..19a1b9d42 100644 --- a/website/package.json +++ b/website/package.json @@ -18,7 +18,7 @@ "js-cookie": "^2.2.1", "less": "3.12.2", "less-loader": "7.0.2", - "node-sass": "4.12.0", + "node-sass": "4.14.1", "prismjs": "^1.20.0", "sass-loader": "10.1.1", "splitpanes": "^2.0.0", diff --git a/website/public/static/demo/cesium-new/example/tool/model-explosion.htm b/website/public/static/demo/cesium-new/example/tool/model-explosion.htm new file mode 100644 index 000000000..eca715ef9 --- /dev/null +++ b/website/public/static/demo/cesium-new/example/tool/model-explosion.htm @@ -0,0 +1,458 @@ + + + + + + + 模型爆炸(单图层) + + + + + + + + + + +
+
+ +
单值过滤-单方向
+
单值过滤-多方向
+
分段过滤-单方向
+
分段过滤-多方向
+
属性过滤-单方向
+
属性过滤-多方向
+ + + \ No newline at end of file diff --git a/website/public/static/demo/cesium-new/example/vectortile/mapgis-vectortile-3857.htm b/website/public/static/demo/cesium-new/example/vectortile/mapgis-vectortile-3857.htm new file mode 100644 index 000000000..0bb3fb80d --- /dev/null +++ b/website/public/static/demo/cesium-new/example/vectortile/mapgis-vectortile-3857.htm @@ -0,0 +1,83 @@ + + + + + + 地层分析 + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/website/public/static/demo/cesium-new/example/vectortile/mapgis-vectortile-4326.htm b/website/public/static/demo/cesium-new/example/vectortile/mapgis-vectortile-4326.htm new file mode 100644 index 000000000..5ee3faf79 --- /dev/null +++ b/website/public/static/demo/cesium-new/example/vectortile/mapgis-vectortile-4326.htm @@ -0,0 +1,117 @@ + + + + + + 地层分析 + + + + + + + + + + + +
+
+
改变布局属性
+
改变画笔属性
+
改变过滤属性
+
改变整体样式
+
+ + + \ No newline at end of file diff --git a/website/public/static/demo/cesium-new/gallery/tool/model-explosion.png b/website/public/static/demo/cesium-new/gallery/tool/model-explosion.png new file mode 100644 index 000000000..a0bd97a40 Binary files /dev/null and b/website/public/static/demo/cesium-new/gallery/tool/model-explosion.png differ diff --git a/website/public/static/demo/cesium-new/gallery/vectortile/mapgis-vectortile-3857.png b/website/public/static/demo/cesium-new/gallery/vectortile/mapgis-vectortile-3857.png new file mode 100644 index 000000000..ce0eb4621 Binary files /dev/null and b/website/public/static/demo/cesium-new/gallery/vectortile/mapgis-vectortile-3857.png differ diff --git a/website/public/static/demo/cesium-new/gallery/vectortile/mapgis-vectortile-4326.png b/website/public/static/demo/cesium-new/gallery/vectortile/mapgis-vectortile-4326.png new file mode 100644 index 000000000..9be1cd3c1 Binary files /dev/null and b/website/public/static/demo/cesium-new/gallery/vectortile/mapgis-vectortile-4326.png differ diff --git a/website/public/static/demo/cesium/example/analysis/analysis-cube.htm b/website/public/static/demo/cesium/example/analysis/analysis-cube.htm index 780105574..749605eff 100644 --- a/website/public/static/demo/cesium/example/analysis/analysis-cube.htm +++ b/website/public/static/demo/cesium/example/analysis/analysis-cube.htm @@ -1,234 +1,208 @@ + + + + 填挖方计算 + + + + + + + - - - - - - + /** + * @description 世界坐标转经纬度坐标 + * @param cartesian - {Object} 世界坐标 + * @return {Object} 经纬度坐标 + */ + function _cartesianToDegrees(cartesian) { + const { ellipsoid } = this.viewer.scene.globe; + // 将笛卡尔坐标转换为地理坐标 + const cartographic = ellipsoid.cartesianToCartographic(cartesian); + // 将弧度转为度的十进制度表示 + const longitude = this.Cesium.Math.toDegrees(cartographic.longitude); // 转换后的经度 + const latitude = this.Cesium.Math.toDegrees(cartographic.latitude); // 转换后的纬度 + const coor = { + lon: longitude, + lat: latitude, + height: cartographic.height + }; + return coor; + } + /*移除填挖方计算*/ + function stopCutFillM() { + //移除视图中所有的实体对象 + viewer.entities.removeAll(); + //停止交互式绘制工具 + drawElement.stopDrawing(); + } + + - -
-
-

参数

- - - - - - - - - - - - - - - -
x方向采样点个数 - -
y方向采样点个数 - -
填挖规整高度 - -
-
-
-

填挖结果

- - - - - - - - - - - - - - - - - - - -
高程范围: - -
表面积: - -
挖体积: - -
填体积: - -
+ +
+
+

参数

+ + + + + + + + + + + + + + + +
x方向采样点个数 + +
y方向采样点个数 + +
填挖规整高度 + +
+
+
+

填挖结果

+ + + + + + + + + + + + + + + + + + + +
高程范围: + +
表面积: + +
挖体积: + +
填体积: + +
+
-
- - - \ No newline at end of file + + diff --git a/website/public/static/demo/cesium/example/analysis/analysis-dynamiccut.htm b/website/public/static/demo/cesium/example/analysis/analysis-dynamiccut.htm index a3607ad74..b213decf6 100644 --- a/website/public/static/demo/cesium/example/analysis/analysis-dynamiccut.htm +++ b/website/public/static/demo/cesium/example/analysis/analysis-dynamiccut.htm @@ -1,104 +1,94 @@ + + + + 动态剖切 + + + + + + - - - - - + function change() { + distance = Number(document.getElementById('range').value); + dynaCut.distance = distance; + } + + - -
-
- - 剖切距离: - + +
+
+ 剖切距离: +
-
- - - \ No newline at end of file + + diff --git a/website/public/static/demo/cesium/example/m3d/m3d-underpipe.htm b/website/public/static/demo/cesium/example/m3d/m3d-underpipe.htm index 8400a04ca..37151e9be 100644 --- a/website/public/static/demo/cesium/example/m3d/m3d-underpipe.htm +++ b/website/public/static/demo/cesium/example/m3d/m3d-underpipe.htm @@ -1,92 +1,86 @@ + + + M3D-地下管线数据展示 + + + + + + + - - - - - + - function change() { - //获取拖动条值 - var transparent = document.getElementById("trans").value; - //修改场景球透明度 - webGlobe.viewer.scene.globe.transparent = transparent / 100; - } - - - - - -
-
- - 透明度: + + +
+
+ + 透明度: +
-
- -
- -
- - - \ No newline at end of file + +
+ +
+ + diff --git a/website/public/static/demo/cesium/helper/ogc/wmts/WMTS.md b/website/public/static/demo/cesium/helper/ogc/wmts/WMTS.md index 3ff5a6b51..9a1d4216c 100644 --- a/website/public/static/demo/cesium/helper/ogc/wmts/WMTS.md +++ b/website/public/static/demo/cesium/helper/ogc/wmts/WMTS.md @@ -11,9 +11,9 @@ ```js var tianditu = new Cesium.WebMapTileServiceImageryProvider({ - url: 'http://t0.tianditu.com/DataServer?T=vec_w&L={TileMatrix}&Y={TileRow}&X={TileCol}&tk=9c157e9585486c02edf817d2ecbc7752', + url: 'http://develop.smaryun.com:6163/igs/rest/ogc/beijing/WMTSServer/1.0.0/beijing/default/EPSG:4326_北京市_arcgis_GB/{TileMatrix}/{TileRow}/{TileCol}.png', maximumLevel: 19, - credit: new Cesium.Credit('3857') + credit: new Cesium.Credit('4326') }); webGlobe.viewer.imageryLayers.addImageryProvider(tianditu); ``` @@ -82,7 +82,93 @@ var lnglat = new Cesium.WebMapTileServiceImageryProvider({ 结果如下: ![kvp](./static/demo/cesium/helper/ogc/wmts/wmts-kvp.png) -## 3. WMTS 元数据信息不可信!! +## 3. MapGIS WMTS调用 + +### 3.1 v1 版本<=10.5.4(Java / NET版本) +1. restful + 1. 规则 + ``` js + @GetMapping("/WMTSServer/1.0.0/{layer}/default/{tileMatrixSet}/{tileMatrix}/{tileRow}/{tileCol}.{format}") + ``` + 2. 示例 + ``` js + >>> http://develop.smaryun.com:6163/igs/rest/ogc/beijing/WMTSServer/1.0.0/beijing/default/EPSG:4326_北京市_arcgis_GB/{z}/{y}/{x}.png + ``` +2. kvp + 1. 规则 + ``` js + ResponseEntity getWMTSServerKvpByServerName( + @PathVariable("serverName") String serverName, + @RequestParam(value = "service", required = false) String service, + @RequestParam(value = "version", required = false) String version, + @RequestParam(value = "request", required = false, defaultValue = "") String request, + @RequestParam(value = "layer", required = false) String layer, + @RequestParam(value = "style", required = false) String style, + @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "tileMatrixSet", required = false) String tileMatrixSet, + @RequestParam(value = "tileMatrix", required = false) String tileMatrix, + @RequestParam(value = "tileRow", required = false) String tileRow, + @RequestParam(value = "tileCol", required = false) String tileCol, + @RequestParam(value = "J", required = false) String j, + @RequestParam(value = "I", required = false) String i, + @RequestParam(value = "infoFormat", required = false) String infoFormat) + ``` + 2. 示例 + ``` js + `${protocol}://${ip}:${port}/igs/rest/ogc/beijing/WMTSServer?` + + 'service=WMTS' + + '&request=GetTile' + + '&version=1.0.0' + + '&style=default' + + '&tilematrixSet=EPSG:4326_北京市_arcgis_GB' + + '&format=image/png' + + '&layer=beijing' + + '&tilematrix={z}' + + '&tilerow={y}' + + '&tilecol={x}' + ``` +### 3.2 v2 版本>=10.5.6 (仅Java版本) +1. restful + 1. 规则 + ``` js + @GetMapping("/1.0.0/{layer}/default/{tileMatrixSet}/{tileMatrix}/{tileRow}/{tileCol}.{format}") + ``` + 2. 示例 + ``` js + >>> http://192.168.21.191:8089/igs/rest/services/OGC_4326_CHINA/WMTSServer/1.0.0/OGC_4326_CHINA/default/EPSG:4326_OGC_4326_CHINA_028mm_GB/{z}/{y}/{x}.png + ``` +2. kvp + 1. 规则 + ``` js + ResponseEntity getTileByKvp(@PathVariable("serviceName") String serviceName, + @RequestParam(value = "service", required = false) String service, + @RequestParam(value = "version", required = false) String version, + @RequestParam(value = "request", required = false) String request, + @RequestParam(value = "layer", required = false) String layer, + @RequestParam(value = "style", required = false) String style, + @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "tileMatrixSet", required = false) String tileMatrixSet, + @RequestParam(value = "tileMatrix", required = false) String tileMatrix, + @RequestParam(value = "tileRow", required = false) String tileRow, + @RequestParam(value = "tileCol", required = false) String tileCol) + ``` + 2. 示例 + ``` js + `http://192.168.21.191:8089/igs/rest/ogc/WMTSServer?` + + 'service=WMTS' + + '&request=GetTile' + + '&version=1.0.0' + + '&style=default' + + '&tilematrixSet=EPSG:4326_北京市_arcgis_GB' + + '&format=image/png' + + '&layer=OGC_4326_CHINA' + + '&tilematrix={z}' + + '&tilerow={y}' + + '&tilecol={x}' + ``` + + +## 4. WMTS 元数据信息不可信!! 与其说 WMTS 元数据信息不可信,本质上是说实际线下实操人员的操作不可信。以上面为例 @@ -91,7 +177,7 @@ var lnglat = new Cesium.WebMapTileServiceImageryProvider({ > 但是元数据信息描述里面的矩阵集居然有 2 类,其中一类是全球墨卡托, Orz.... > ![错误描述](./static/demo/cesium/helper/ogc/wmts/error-info.png) -### 3.1 出现过该场景的情况 +### 4.1 出现过该场景的情况 > 从下面数据情况几乎可以得出结论,无法避免不同平台不同版本带来的差异, `强烈推荐`使用`KVP`的方式`手动匹配`来统一处理,而不是自动解析 WMTS.xml 的元数据信息 diff --git a/website/public/static/demo/config/config-cesium-new.json b/website/public/static/demo/config/config-cesium-new.json index 1979f8817..3c20c4750 100644 --- a/website/public/static/demo/config/config-cesium-new.json +++ b/website/public/static/demo/config/config-cesium-new.json @@ -321,6 +321,14 @@ "icon": "measure-plot.png", "update": "最后更新时间:2022-03-14" }, + { + "name": "模型爆炸(单图层)", + "file": "model-explosion", + "diffcult": "1", + "detail": "", + "icon": "model-explosion.png", + "update": "最后更新时间:2022-08-10" + }, { "name": "模型编辑", "file": "tool-edit", @@ -370,6 +378,30 @@ "update": "最后更新时间:2022-04-13" } ] + }, + { + "name": "矢量瓦片", + "iconfont": "icon_igs", + "folder": "vectortile", + "leaffolder": true, + "childs": [ + { + "name": "矢量瓦片-3857", + "file": "mapgis-vectortile-3857", + "diffcult": "1", + "detail": "加载MapGIS-IgServer上传的矢量瓦片样式", + "icon": "mapgis-vectortile-3857.png", + "update": "最后更新时间:2020-10-12" + }, + { + "name": "矢量瓦片-4326", + "file": "mapgis-vectortile-4326", + "diffcult": "1", + "detail": "加载MapGIS-IgServer上传的矢量瓦片样式", + "icon": "mapgis-vectortile-4326.png", + "update": "最后更新时间:2020-10-12" + } + ] } ] } diff --git a/website/public/static/demo/config/config-headers.json b/website/public/static/demo/config/config-headers.json index c616d2152..af12bb58c 100644 --- a/website/public/static/demo/config/config-headers.json +++ b/website/public/static/demo/config/config-headers.json @@ -50,15 +50,18 @@ ] }, { - "title": "开发指南", + "title": "开发文档", "icon": "iconkaifazhinan", "links": [ [ - "开发指南" + "组件开发入门", + "Cesium开发文档", + "MapboxGL开文档", + "UI开文档" ] ], "hightlights": [[true]], - "routes": [["/guide/component/development_component", "", "", "", "", "", "", "", "", "", "", ""]] + "routes": [["/guide/component/development_component", "http://120.78.82.242:8891", "http://120.78.82.242:8892", "http://120.78.82.242:8893","", "", "", "", "", "", "", ""]] }, { "title": "常见问题", @@ -124,15 +127,16 @@ ] }, { - "title": "开发指南", + "title": "开发文档", "icon": "iconkaifazhinan", "links": [ [ + "开发入门", "开发指南" ] ], "hightlights": [[true]], - "routes": [["/guide/cesium/development_cesium", "", "", "", "", "", "", "", "", "", "", ""]] + "routes": [["/guide/cesium/MapGIS Client for JavaScript(Cesium)开发入门","/guide/cesium/development_cesium", "", "", "", "", "", "", "", "", "", "", ""]] }, { "title": "常见问题", @@ -260,10 +264,11 @@ ] }, { - "title": "开发指南", + "title": "开发文档", "icon": "iconkaifazhinan", "links": [ [ + "开发入门", "开发指南" ] ], @@ -374,15 +379,16 @@ ] }, { - "title": "开发指南", + "title": "开发文档", "icon": "iconkaifazhinan", "links": [ [ + "开发入门", "开发指南" ] ], "hightlights": [[true]], - "routes": [["/guide/leaflet/development_leaflet", "", "", "", "", "", "", "", "", "", "", ""]] + "routes": [["/guide/leaflet/MapGIS Client for JavaScript(Leaflet)开发入门","/guide/leaflet/development_leaflet", "", "", "", "", "", "", "", "", "", "", ""]] }, { "title": "开发示例", @@ -449,18 +455,19 @@ ] }, { - "title": "开发指南", + "title": "开发文档", "icon": "iconkaifazhinan", "links": [ [ + "开发入门", "开发指南" ] ], "hightlights": [[true]], - "routes": [["/guide/openlayers/development_ol", "", "", "", "", "", "", "", "", "", "", ""]] + "routes": [["/guide/openlayers/MapGIS Client for JavaScript(OpenLayers)开发入门","/guide/openlayers/development_ol", "", "", "", "", "", "", "", "", "", "", ""]] }, { - "title": "开发示例", + "title": "开发示例 - 组件", "icon": "iconzaixianshili", "links": [ [ @@ -531,5 +538,73 @@ ] } ] + }, + { + "title": "MapGISPlot", + "icon": "iconmap2", + "menus": [ + { + "title": "产品", + "icon": "iconchanpinjieshao" + }, + { + "title": "开发示例 - vue", + "icon": "iconzaixianshili", + "links": [ + [ + "标绘-二维", + "态势推演-二维", + "标绘-三维", + "态势推演-三维", + "标绘-二三维联动", + "态势推演-二三维联动" + ] + ], + "hightlights": [ + [false] + ], + "routes": [ + [ + "/storybook/index.html?path=/story/二维-图层-标绘-二维标绘--二维标绘", + "/storybook/index.html?path=/story/二维-图层-标绘-态势推演--态势推演", + "/storybook/index.html?path=/story/三维-图层-标绘-三维标绘--三维标绘", + "/storybook/index.html?path=/story/三维-图层-标绘-态势推演--态势推演", + "/storybook/index.html?path=/story/三维-场景子组件-二三维联动-标绘--标绘", + "/storybook/index.html?path=/story/三维-场景子组件-二三维联动-态势推演--态势推演" + ] + ] + }, + { + "title": "开发示例 - 纯JS", + "icon": "iconzaixianshili", + "links": [ + [ + "二维标绘", + "三维标绘" + ] + ], + "hightlights": [ + [false] + ], + "routes": [ + [ + "/gallery/webclient-plot#Plot2D", + "/gallery/webclient-plot#Plot3D" + ] + ] + }, + { + "title": "开发API", + "icon": "iconsanfangAPI", + "links": [["PLOT-API", "标绘图元管理工具"]], + "hightlights": [[false]], + "routes": [ + [ + "http://192.168.82.89:8093", + "http://192.168.82.89:8093/tutorial-9.%E5%88%A0%E9%99%A4%E6%A0%87%E7%BB%98%E5%9B%BE%E5%85%83%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81.html" + ] + ] + } + ] } ] diff --git a/website/public/static/demo/config/config-webclient-plot.json b/website/public/static/demo/config/config-webclient-plot.json new file mode 100644 index 000000000..798080d57 --- /dev/null +++ b/website/public/static/demo/config/config-webclient-plot.json @@ -0,0 +1,55 @@ +{ + "name": "webclient-plot", + "title": "MapGIS WebClient-Plot", + "mapmode": "webclient-plot", + "childs": [ + { + "name": "二维标绘", + "iconfont": "iconlayer", + "folder": "Plot2D", + "leaffolder": true, + "childs": [ + { + "name": "二维态势推演", + "file": "plot-animation-2d", + "diffcult": "2", + "detail": "", + "icon": "plot-animation-2d.png", + "update": "最后更新时间:2022-03-14" + } + ] + }, + { + "name": "三维标绘", + "iconfont": "iconterrain", + "folder": "Plot3D", + "leaffolder": true, + "childs": [ + { + "name": "标绘", + "file": "plot", + "diffcult": "1", + "detail": "", + "icon": "plot.png", + "update": "最后更新时间:2022-03-14" + }, + { + "name": "标绘 - 带地形", + "file": "plot-terrain", + "diffcult": "2", + "detail": "", + "icon": "plot.png", + "update": "最后更新时间:2022-03-14" + }, + { + "name": "三维态势推演", + "file": "plot-animation-3d", + "diffcult": "3", + "detail": "", + "icon": "plot-animation-3d.png", + "update": "最后更新时间:2022-03-14" + } + ] + } + ] +} diff --git a/website/public/static/demo/mapboxgl/helper/ogc/wmts/WMTS.md b/website/public/static/demo/mapboxgl/helper/ogc/wmts/WMTS.md index c990b364b..ce35b0764 100755 --- a/website/public/static/demo/mapboxgl/helper/ogc/wmts/WMTS.md +++ b/website/public/static/demo/mapboxgl/helper/ogc/wmts/WMTS.md @@ -9,6 +9,43 @@ > `restful调用`的核心是将所有的 级别 行列 图层 样式 的参数统一明码的标记在 url 请求中 > 使用这种方式 级别 行列号 都一定是`数字型` 这里很关键 , 常见的金字塔模型里面的级别 都`一般是整数表示`。 +```js +map.addLayer({ + id: 'wmts-layer', + type: 'raster', + source: { + type: 'raster', + tiles: [ + `${protocol}://${ip}:${port}/igs/rest/ogc/beijing/WMTSServer/1.0.0/beijing/default/EPSG:4326_北京市_arcgis_GB/{z}/{y}/{x}.png` + ], + tileSize: 256, + }, + paint: {} +}); +``` + +``` js +// 匹配规则 +@GetMapping("/WMTSServer/1.0.0/{layer}/default/{tileMatrixSet}/{tileMatrix}/{tileRow}/{tileCol}.{format}") +``` + +### 1.1 参数说明 + +| 参数 | 类型 | OGC-名称 | 图片说明 | +| :------------ | :----- | :------------ | :------------------------------------------------------------------- | +| layer | 字符串 | Layer | ![图层](./static/demo/mapboxgl/helper/ogc/wmts/layer.png) | +| style | 字符串 | Style | ![样式](./static/demo/mapboxgl/helper/ogc/wmts/style-type.png) | +| format | 字符串 | Format | ![样式](./static/demo/mapboxgl/helper/ogc/wmts/wmts-format.png) | +| tilematrixSet | 字符串 | TileMatrixSet | ![总称](./static/demo/mapboxgl/helper/ogc/wmts/tilematrixset-name.png) | + +![restful](./static/demo/mapboxgl/helper/ogc/wmts/restful.png) + +> 这一种是最常见的 WMTS 加载方式, 但这种方式一般只能处理全球裁瓦片的方式: 如经纬度 EPSG:4326/4490/4610 或者墨卡托 EPSG:3857 + +## 2. kvp + +> 目前 mapboxgl 支持有限的 kvp 方式调用,由于目前@mapgis/mapbox-gl仅仅支持了EPSG:3857/4326/4490/4610,因此对tilematrixSet的支持是有限的 + ```js map.addLayer({ id: 'wmts-layer', @@ -35,7 +72,7 @@ map.addLayer({ }); ``` -### 1.1 参数说明 +### 2.1 参数说明 | 参数 | 类型 | OGC-名称 | 图片说明 | | :------------ | :----- | :------------ | :------------------------------------------------------------------- | @@ -44,13 +81,6 @@ map.addLayer({ | format | 字符串 | Format | ![样式](./static/demo/mapboxgl/helper/ogc/wmts/wmts-format.png) | | tilematrixSet | 字符串 | TileMatrixSet | ![总称](./static/demo/mapboxgl/helper/ogc/wmts/tilematrixset-name.png) | -![restful](./static/demo/mapboxgl/helper/ogc/wmts/restful.png) - -> 这一种是最常见的 WMTS 加载方式, 但这种方式一般只能处理全球裁瓦片的方式: 如经纬度 EPSG:4326/4490/4610 或者墨卡托 EPSG:3857 - -## 2. kvp - -> 目前 mapboxgl 不支持 kvp 方式调用,如有需求请提交 [Github-Issues](https://github.com/MapGIS/WebClient-JavaScript/issues/new) ## 3. 错级瓦片 @@ -73,3 +103,89 @@ map.addLayer({ [在线链接](/#/demo/mapboxgl/mapgis-igserver/map/mapgisoffset) ![offset](./static/demo/mapboxgl/helper/ogc/wmts/offset.png) + +## 4. MapGIS WMTS调用 + +### 4.1 v1 版本<=10.5.4(Java / NET版本) +1. restful + 1. 规则 + ``` js + @GetMapping("/WMTSServer/1.0.0/{layer}/default/{tileMatrixSet}/{tileMatrix}/{tileRow}/{tileCol}.{format}") + ``` + 2. 示例 + ``` js + >>> http://develop.smaryun.com:6163/igs/rest/ogc/beijing/WMTSServer/1.0.0/beijing/default/EPSG:4326_北京市_arcgis_GB/{z}/{y}/{x}.png + ``` +2. kvp + 1. 规则 + ``` js + ResponseEntity getWMTSServerKvpByServerName( + @PathVariable("serverName") String serverName, + @RequestParam(value = "service", required = false) String service, + @RequestParam(value = "version", required = false) String version, + @RequestParam(value = "request", required = false, defaultValue = "") String request, + @RequestParam(value = "layer", required = false) String layer, + @RequestParam(value = "style", required = false) String style, + @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "tileMatrixSet", required = false) String tileMatrixSet, + @RequestParam(value = "tileMatrix", required = false) String tileMatrix, + @RequestParam(value = "tileRow", required = false) String tileRow, + @RequestParam(value = "tileCol", required = false) String tileCol, + @RequestParam(value = "J", required = false) String j, + @RequestParam(value = "I", required = false) String i, + @RequestParam(value = "infoFormat", required = false) String infoFormat) + ``` + 2. 示例 + ``` js + `${protocol}://${ip}:${port}/igs/rest/ogc/beijing/WMTSServer?` + + 'service=WMTS' + + '&request=GetTile' + + '&version=1.0.0' + + '&style=default' + + '&tilematrixSet=EPSG:4326_北京市_arcgis_GB' + + '&format=image/png' + + '&layer=beijing' + + '&tilematrix={z}' + + '&tilerow={y}' + + '&tilecol={x}' + ``` +### 4.2 v2 版本>=10.5.6 (仅Java版本) +1. restful + 1. 规则 + ``` js + @GetMapping("/1.0.0/{layer}/default/{tileMatrixSet}/{tileMatrix}/{tileRow}/{tileCol}.{format}") + ``` + 2. 示例 + ``` js + >>> http://192.168.21.191:8089/igs/rest/services/OGC_4326_CHINA/WMTSServer/1.0.0/OGC_4326_CHINA/default/EPSG:4326_OGC_4326_CHINA_028mm_GB/{z}/{y}/{x}.png + ``` +2. kvp + 1. 规则 + ``` js + ResponseEntity getTileByKvp(@PathVariable("serviceName") String serviceName, + @RequestParam(value = "service", required = false) String service, + @RequestParam(value = "version", required = false) String version, + @RequestParam(value = "request", required = false) String request, + @RequestParam(value = "layer", required = false) String layer, + @RequestParam(value = "style", required = false) String style, + @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "tileMatrixSet", required = false) String tileMatrixSet, + @RequestParam(value = "tileMatrix", required = false) String tileMatrix, + @RequestParam(value = "tileRow", required = false) String tileRow, + @RequestParam(value = "tileCol", required = false) String tileCol) + ``` + 2. 示例 + ``` js + `http://192.168.21.191:8089/igs/rest/ogc/WMTSServer?` + + 'service=WMTS' + + '&request=GetTile' + + '&version=1.0.0' + + '&style=default' + + '&tilematrixSet=EPSG:4326_北京市_arcgis_GB' + + '&format=image/png' + + '&layer=OGC_4326_CHINA' + + '&tilematrix={z}' + + '&tilerow={y}' + + '&tilecol={x}' + ``` + diff --git a/website/public/static/demo/webclient-plot/example/Plot3D/plot-terrain.htm b/website/public/static/demo/webclient-plot/example/Plot3D/plot-terrain.htm new file mode 100644 index 000000000..2d5bb662c --- /dev/null +++ b/website/public/static/demo/webclient-plot/example/Plot3D/plot-terrain.htm @@ -0,0 +1,188 @@ + + + + + + + 行业标绘 - 附带地形 + + + + + + + + + + + + +
+
+
+
基础符号
+ + + + + + + + + +
常规点
+ + + + + + + + + + + + + + + + + + + + + + +
常规线
+ + + + + + + + + + +
常规面
+ + +
算法符号
+ + + + + + + + + +
+ + + \ No newline at end of file diff --git a/website/public/static/demo/webclient-plot/example/Plot3D/plot.htm b/website/public/static/demo/webclient-plot/example/Plot3D/plot.htm new file mode 100644 index 000000000..9634cc9d7 --- /dev/null +++ b/website/public/static/demo/webclient-plot/example/Plot3D/plot.htm @@ -0,0 +1,208 @@ + + + + + + + 行业标绘 + + + + + + + + + + + + +
+
+
+
基础符号
+ + + + + + + + + +
常规点
+ + + + + + + + + + + + + + + + + + + + + + +
常规线
+ + + + + + + + + + +
常规面
+ + +
算法符号
+ + + + + + + + + +
+ +
+
+ 图元高度 + +
+
+
+ + + \ No newline at end of file diff --git a/website/public/static/libs/include-cesium-new-local.js b/website/public/static/libs/include-cesium-new-local.js new file mode 100644 index 000000000..191e0795f --- /dev/null +++ b/website/public/static/libs/include-cesium-new-local.js @@ -0,0 +1,123 @@ +(function () { + var r = new RegExp('(^|(.*?\\/))(include-cesium-new-local.js)(\\?|$)'), + s = document.getElementsByTagName('script'), + targetScript, + targetUrl; + for (var i = 0; i < s.length; i++) { + var src = s[i].getAttribute('src'); + if (src) { + var m = src.match(r); + if (m) { + targetUrl = src; + targetScript = s[i]; + break; + } + } + } + + function inputScript(url) { + var script = '