| | |
| | | @click="underground" |
| | | >地下</el-button> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml'" |
| | | size="small" |
| | | @click="pickupCoords" |
| | | >拾取</el-button> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml'" |
| | | size="small" |
| | | @click="reload" |
| | | > |
| | |
| | | >保存</el-button> |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="经度:"> |
| | | <el-form-item |
| | | label="经度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.lon" |
| | |
| | | :max="135" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="纬度:"> |
| | | <el-form-item |
| | | label="纬度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.lat" |
| | |
| | | :max="54" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="高度:"> |
| | | <el-form-item |
| | | label="高度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.height" |
| | |
| | | :max="8800" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="角度:"> |
| | | <el-form-item |
| | | label="角度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.yaw" |
| | |
| | | } else { |
| | | url = modelUrl + "/" + res.url |
| | | } |
| | | |
| | | var tileset = Viewer.scene.primitives.add( |
| | | new Cesium.Cesium3DTileset({ |
| | | name: res.cnName, |
| | |
| | | tileset.id = res.cnName; |
| | | tileset.layerId = res.id; |
| | | tileset.pubid = res.pubid; |
| | | that.getArgsTileset(tileset, res); |
| | | if (res.bak != '3dml') { |
| | | that.getArgsTileset(tileset, res); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | }, |
| | |
| | | if (data.code != 200) { |
| | | |
| | | } else { |
| | | this.reloadTile(tileset, data.result.json) |
| | | |
| | | |
| | | this.tileSet(tileset, parseFloat(res.elev)) |
| | | |
| | | } |
| | | } else { |
| | | this.tileSet(tileset, parseFloat(res.elev)) |
| | |
| | | var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); |
| | | //修改模型矩阵 |
| | | tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); |
| | | Viewer.flyTo(tileset); |
| | | // Viewer.flyTo(tileset); |
| | | }, |
| | | reloadTile(tileset, res) { |
| | | var vm = JSON.parse(res) |
| | |
| | | window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); |
| | | |
| | | |
| | | |
| | | if (this.$store.state.previewLayer) { |
| | | var res = this.$store.state.previewLayer; |
| | | var type = res.type; |
| | |
| | | if (window.pickedFeature && window.pickedFeature.getProperty) { |
| | | |
| | | this.setModeLayerID(pickedFeature); |
| | | } else { |
| | | this.modelForm.modelid = 'id3dml' |
| | | window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除事件 |
| | | } |
| | | } |
| | | } |
| | |
| | | var that = this; |
| | | Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { |
| | | that.modelForm = JSON.parse(json); |
| | | |
| | | var pos = Cesium.Cartesian3.fromDegrees(parseFloat(that.modelForm.lon), parseFloat(that.modelForm.lat), parseFloat(that.modelForm.height)); |
| | | |
| | | |
| | |
| | | var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); |
| | | that.app.tileset._root.transform = matrix; |
| | | Viewer.flyTo(ts); |
| | | |
| | | that.app.isBusy = false; |
| | | }); |
| | | }, |
| | |
| | | update() { |
| | | if (!this.modelForm.lon || isNaN(this.modelForm.lon)) { |
| | | var args = this.getEditTilesetArgs(); |
| | | this.modelForm.lon = args.lon; |
| | | this.modelForm.lon = args.lon == null ? 0 : args.height; |
| | | return |
| | | } |
| | | if (!this.modelForm.lat || isNaN(this.modelForm.lat)) { |
| | | var args = this.getEditTilesetArgs(); |
| | | this.modelForm.lat = args.lat; |
| | | this.modelForm.lat = args.lat == null ? 0 : args.height; |
| | | return |
| | | } |
| | | if (!this.modelForm.height || isNaN(this.modelForm.height)) { |
| | | var args = this.getEditTilesetArgs(); |
| | | this.modelForm.height = args.height; |
| | | this.modelForm.height = args.height == null ? 0 : args.height; |
| | | return |
| | | } |
| | | if (!this.modelForm.yaw || isNaN(this.modelForm.yaw)) { |
| | |
| | | setTilesetArgs(f) { |
| | | |
| | | if (!this.app.tileset || this.app.isBusy) return; |
| | | |
| | | debugger |
| | | var pos = Cesium.Cartesian3.fromDegrees(parseFloat(f.lon), parseFloat(f.lat), parseFloat(f.height)); |
| | | |
| | | var converter = Cesium.Transforms.eastNorthUpToFixedFrame; |
| | |
| | | } else { |
| | | this.getTilesetArgs(); |
| | | } |
| | | |
| | | }, |
| | | setModleLocatin() { |
| | | var res = this.$store.state.previewLayer; |
| | | var type = res.type; |
| | | if (this.modelType.indexOf(type) != -1) { |
| | | this.setEditModelLayer(res) |
| | | if (type != '3dml') { |
| | | this.setEditModelLayer(res) |
| | | } else { |
| | | this.editModelFlag = true; |
| | | } |
| | | |
| | | } |
| | | |
| | | }, |
| | |
| | | }, |
| | | getEditTilesetArgs() { |
| | | this.app.isBusy = true; |
| | | var std = { |
| | | lon: 0, |
| | | lat: 0, |
| | | height: 0, |
| | | } |
| | | |
| | | if (!this.app.tileset._root) return std; |
| | | var cm = this.app.tileset._root.transform; |
| | | var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); |
| | | var carto = Cesium.Cartographic.fromCartesian(cartesian); |
| | | var std = { |
| | | lon: null, |
| | | lat: null, |
| | | height: null, |
| | | } |
| | | |
| | | |
| | | if (carto) { |
| | | std.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7); |
| | |
| | | pickedFeature = sgworld.Viewer.scene.pick(event.position); |
| | | if (Cesium.defined(pickedFeature)) { |
| | | if (pickedFeature.primitive instanceof Cesium.Cesium3DTileset) { |
| | | if (pickedFeature && pickedFeature.getProperty) { |
| | | |
| | | if (pickedFeature) { |
| | | pickedColor = pickedFeature.color |
| | | pickedFeature.color = Cesium.Color.RED.withAlpha(0.3); |
| | | |