| | |
| | | methods: { |
| | | init3DMap() { |
| | | //地图初始化 |
| | | window.sg = new SmartEarth.SGWorld("mapdiv", { |
| | | url: SmartEarthRootUrl + "Workers/image/earth.jpg", |
| | | window.sgworld = new SmartEarth.SGWorld("mapdiv", { |
| | | |
| | | licenseServer: window.sceneConfig.licenseServer, |
| | | }); |
| | | |
| | | window.Viewer = window.sg._Viewer; |
| | | window.Viewer = window.sgworld._Viewer; |
| | | |
| | | // Viewer.camera.flyTo({ |
| | | // destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), |
| | | // }); |
| | | |
| | | Viewer.imageryLayers.addImageryProvider( |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: gaoDeBaseUrl[1].url, |
| | | maximumLevel: 18 |
| | | }) |
| | | ); |
| | | |
| | | Viewer._enableInfoOrSelection = false; |
| | | //显示fps |
| | | Viewer.scene.debugShowFramesPerSecond = false; |
| | | //导航控件 |
| | | window.sg.navControl("nav", false); |
| | | // window.sgworld.navControl("nav", false); |
| | | //比例尺 |
| | | window.sg.navControl("scale", false); |
| | | // window.sgworld.navControl("scale", false); |
| | | //开启深度检测 |
| | | // sg.Analysis.depthTestAgainstTerrain(true) |
| | | Viewer.scene.globe.depthTestAgainstTerrain = true; |
| | | |
| | | var option = { |
| | | url: window.sceneConfig.SGUrl, |
| | | layerName: window.sceneConfig.mptName, |
| | | requestVertexNormals: true, |
| | | }; |
| | | sg.Creator.sfsterrainprovider("", option, "", true, ""); |
| | | |
| | | window.elevationTool = new SmartEarth.ElevationTool(window.sg); |
| | | elevationTool.setContourColor("#F1D487"); |
| | | // window.elevationTool = new SmartEarth.ElevationTool(window.sg); |
| | | // elevationTool.setContourColor("#F1D487"); |
| | | |
| | | if (this.$store.state.previewLayer) { |
| | | var res = this.$store.state.previewLayer; |
| | | if (res.layer.indexOf('.png')) { |
| | | console.log(res.layer) |
| | | |
| | | if (res.url.indexOf('.png') != -1) { |
| | | var wkt = this.$wkt.parse(res.geom); |
| | | var height = this.getHeight(wkt.coordinates[2]) |
| | | console.log(wkt) |
| | | window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider( |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: res.layer, |
| | | url: res.url, |
| | | maximumLevel: 18 |
| | | }) |
| | | |
| | | ); |
| | | debugger |
| | | Viewer.camera.flyTo({ |
| | | destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), |
| | | }); |
| | | } else if (res.url.indexOf('.json') != -1) { |
| | | var tileset = Viewer.scene.primitives.add( |
| | | new Cesium.Cesium3DTileset({ |
| | | url: res.url, //192.168.20.106,to4 |
| | | maximumScreenSpaceError: 64, // 最大屏幕空间错误:16 |
| | | maximumMemoryUsage: 768, // 最大内存:512 |
| | | dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false |
| | | skipLevelOfDetail: true, // 在遍历时候跳过详情:false |
| | | }) |
| | | ); |
| | | tileset.readyPromise.then((tileset) => { |
| | | tileset.id = res.cnName; |
| | | tileset.layerId = res.id; |
| | | this.tileSet(tileset, 50) |
| | | Viewer.flyTo(tileset); |
| | | }); |
| | | } else { |
| | | |
| | | Viewer.imageryLayers.removeAll(); |
| | | var url = res.url.split(';') |
| | | |
| | | |
| | | sgworld.Creator.createImageryProvider('mpt影像', "wms", { |
| | | url: url[0], |
| | | layers: url[1] |
| | | }, "0", undefined, true, ""); |
| | | |
| | | } |
| | | } |
| | | }, |
| | | tileSet(tileset, height) { |
| | | //3dtile模型的边界球体 |
| | | var boundingSphere = tileset.boundingSphere; |
| | | //迪卡尔空间直角坐标=>地理坐标(弧度制) |
| | | var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center); |
| | | //地理坐标(弧度制)=>迪卡尔空间直角坐标 |
| | | var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height); |
| | | var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height); |
| | | //获得地面和offset的转换 |
| | | var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); |
| | | //修改模型矩阵 |
| | | tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); |
| | | }, |
| | | getHeight(level) { |
| | | if (level > 0 && level < 23) { |
| | | return this.levelArray[level] |