From 30e393df7b1d89c4172a7f4bec6e80e2dc00c373 Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期一, 05 八月 2024 10:14:49 +0800 Subject: [PATCH] 语义功能添加 --- src/assets/js/mapSdk/mapServe.js | 69 ++++++++++++++++++++++------------ 1 files changed, 44 insertions(+), 25 deletions(-) diff --git a/src/assets/js/mapSdk/mapServe.js b/src/assets/js/mapSdk/mapServe.js index 541dd94..89bd349 100644 --- a/src/assets/js/mapSdk/mapServe.js +++ b/src/assets/js/mapSdk/mapServe.js @@ -33,31 +33,16 @@ const pois = response.data.result.pois; const cnName = res.cnName + '_' + res.id; const modelLayer = new Cesium.PrimitiveCollection(); - modelLayer.name = cnName; + modelLayer.name = cnName; Viewer.scene.primitives.add(modelLayer); pois.map((item) => { - var geom = WKT.parse(item.geom); - var style = { - longitude: geom.coordinates[0], - latitude: geom.coordinates[1], - altitude: 0, - heading: 0, - pitch: 0, - roll: 0, - }; - const modelMatrix = mapConfig.getModelMatrix(style); - const url = '/glb/' + item.type + '.glb'; - modelLayer.add( - Cesium.Model.fromGltf({ - id: item.id, - url: url, - scale: 1, - minimumPixelSize: 20, - maximumScale: 20, - modelMatrix: modelMatrix, - primitive: item, - }) - ); + var geom = WKT.parse(item.geom).coordinates; + const terrain = config.terrain; + if (terrain.isShow && terrain.isUrl) { + this.addTerrainGLB(geom); + } else { + this.addGLB(item, geom, modelLayer); + } }); this.layerList.push({ id: res.id, @@ -66,6 +51,40 @@ serveType: this.serveType, }); }); + }, + addTerrainGLB(geom) { + var positions = [Cesium.Cartographic.fromDegrees(geom[0], geom[1])]; + var promise = Cesium.sampleTerrainMostDetailed(Viewer.terrainProvider, positions); + promise.then(updatedPositions => { + console.log(updatedPositions); + }) + // SmartEarth.Cesium.when(promise, (updatedPositions) => { + // var terrainHeight = updatedPositions[0].height; + // console.log(terrainHeight); + // }); + }, + addGLB(item, geom, modelLayer) { + var style = { + longitude: geom[0], + latitude: geom[1], + altitude: 0, + heading: 0, + pitch: 0, + roll: 0, + }; + const modelMatrix = mapConfig.getModelMatrix(style); + const url = '/glb/' + item.type + '.glb'; + modelLayer.add( + Cesium.Model.fromGltf({ + id: item.id, + url: url, + scale: 1, + minimumPixelSize: 20, + maximumScale: 20, + modelMatrix: modelMatrix, + primitive: item, + }) + ); }, addTdLayer(res) { @@ -155,8 +174,8 @@ } else if (item.serveType == 'Tileset') { item.layer.deleteObject(); this.layerList.splice(index, 1); - }else if (item.serveType == 'WFS') { - Viewer.scene.primitives.remove(item.layer) + } else if (item.serveType == 'WFS') { + Viewer.scene.primitives.remove(item.layer); this.layerList.splice(index, 1); } } -- Gitblit v1.9.3