import WKT from 'terraformer-wkt-parser'; var pwTool = { modelLayer: null, initGlb(result) { if(!this.modelLayer){ this.getModelLayer(); } var res= result.pois for (var i in res) { var val = res[i] var std =[]; for(var key in val){ if(key != "geom"){ std.push({ name:key, value:val[key] }) } } var geom = WKT.parse(val.geom) var style = { longitude: geom.coordinates[0], latitude: geom.coordinates[1], altitude: 0, heading: 0, pitch: 0, roll: 0, } var modelMatrix = this.getModelMatrix(style); var model = this.modelLayer.add(Cesium.Model.fromGltf({ id: val.id, url: imgUrl+"data/glb/"+val.type+".glb", scale: 1, minimumPixelSize: 20, maximumScale: 20, modelMatrix: modelMatrix, primitive: val })); model.primitive=val; model.name = val.name; // var model = Viewer.entities.add({ // name: 'build', // position: Cesium.Cartesian3.fromDegrees(geom.coordinates[0], geom.coordinates[1], 1), // label: { //文字标签 // text: val.name, // font: '14px', // pixelOffset: new Cesium.Cartesian3(0, -30, 0), // // 字体颜色 // fillColor: Cesium.Color.BLACK, // // 背景颜色 // backgroundColor: Cesium.Color.AQUA, // // 是否显示背景颜色 // showBackground: true, // // 字体边框 // outline: true, // // 字体边框颜色 // outlineColor: Cesium.Color.WHITE, // }, // billboard: { //图标 // image: imgUrl + '/img/img1.png', // width: 32, // height: 32, // }, // properties: val // }); // model.properties = res; } // var wkt = this.$wkt.parse(val1) // if (!this.modelLayer) { // this.getModelLayer(); // } // for (var i in res) { // var data = res[i] // var style = { // longitude: data.geometry.coordinates[0], // latitude: data.geometry.coordinates[1], // altitude: 0, // heading: 0, // pitch: 0, // roll: 0, // } // var modelMatrix = this.getModelMatrix(style); // var model = this.modelLayer.add(Cesium.Model.fromGltf({ // id: data.id, // url: "http://192.168.20.83/JiangSu/Data/glb/路障.glb", // scale: 1, // minimumPixelSize: 20, // maximumScale: 20, // modelMatrix: modelMatrix, // primitive: data.properties // })); // model.primitive=data.properties; // model.name = data.properties.name; // } }, removeGlb(res) { // var entities = Viewer.entities._entities._array; // for (var i = 0; i < entities.length; i++) { // if (entities[i].name == 'build') { // Viewer.entities.remove(entities[i]) // i-- // } // } if (!this.modelLayer) return var primitives = this.modelLayer._primitives for (var i in res) { for (var j = 0; j < primitives.length; j++) { if (res[i].id == primitives[j].id) { this.modelLayer.remove(primitives[j]); j-- } } } }, getModelMatrix(res) { var headingPitchRoll = new Cesium.HeadingPitchRoll(res.heading, res.pitch, res.roll); var position = Cesium.Cartesian3.fromDegrees(res.longitude, res.latitude, res.altitude); var modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame( position, headingPitchRoll, Cesium.Ellipsoid.WGS84, Cesium.Transforms.eastNorthUpToFixedFrame, new Cesium.Matrix4()); return modelMatrix; }, getModelLayer() { if (this.modelLayer == null) { this.modelLayer = new Cesium.PrimitiveCollection(); this.modelLayer.id = "model_layer"; window.Viewer.scene.primitives.add(this.modelLayer); } }, } export default pwTool;