| | |
| | | <template> |
| | | <div id="mapdiv" |
| | | class="previewBox"> |
| | | <div v-if="modelLayer" |
| | | class="modelLayer box_divm"> |
| | | <div |
| | | id="mapdiv" |
| | | class="previewBox" |
| | | > |
| | | <div |
| | | v-if="modelLayer" |
| | | class="modelLayer box_divm" |
| | | > |
| | | <div class="modelBox"> |
| | | <div style="float:right" |
| | | :title="$t('synthesis.undergroundMode')" |
| | | @click="setUndergroundMode"> |
| | | <div |
| | | style="float:right" |
| | | :title="$t('synthesis.undergroundMode')" |
| | | @click="setUndergroundMode" |
| | | > |
| | | <i class="el-icon-sunrise "></i> |
| | | </div> |
| | | </div> |
| | | <div class="modelBox"> |
| | | <el-tree :data="treeData" |
| | | show-checkbox |
| | | node-key="id" |
| | | ref="tree" |
| | | :default-expanded-keys="[1]" |
| | | :props="defaultProps" |
| | | @node-click="handleNodeClick" |
| | | @check="handleCheckChange"> |
| | | <el-tree |
| | | :data="treeData" |
| | | show-checkbox |
| | | node-key="id" |
| | | ref="tree" |
| | | :default-expanded-keys="[1]" |
| | | :props="defaultProps" |
| | | @node-click="handleNodeClick" |
| | | @check="handleCheckChange" |
| | | > |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | <div v-if="editModelFlag" |
| | | class="modelLayer box_divm"> |
| | | <el-form ref="form" |
| | | :model="modelForm" |
| | | label-width="80px"> |
| | | <div |
| | | v-if="editModelFlag" |
| | | class="modelLayer box_divm" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="modelForm" |
| | | label-width="80px" |
| | | > |
| | | <el-form-item> |
| | | <el-button size="small" |
| | | @click="locateTo">定位</el-button> |
| | | <el-button size="small" |
| | | @click="showTileset">显隐</el-button> |
| | | <el-button size="small" |
| | | @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 |
| | | size="small" |
| | | @click="locateTo" |
| | | >定位</el-button> |
| | | <el-button |
| | | size="small" |
| | | @click="showTileset" |
| | | >显隐</el-button> |
| | | <el-button |
| | | size="small" |
| | | @click="underground" |
| | | >地下</el-button> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml' && |
| | | $store.state.previewLayer.type !='cpt'" |
| | | size=" |
| | | small" |
| | | @click="pickupCoords" |
| | | >拾取</el-button> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml' && |
| | | $store.state.previewLayer.type !='cpt'" |
| | | size=" |
| | | small" |
| | | @click="reload" |
| | | > |
| | | 重载 |
| | | </el-button> |
| | | <el-button v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml'" |
| | | size="small" |
| | | @click="getModeKeyId">模型主键</el-button> |
| | | <el-button v-if="$store.state.previewLayer.type != '3dml'" |
| | | size="small" |
| | | @click="resave">保存</el-button> |
| | | <el-button |
| | | v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml'&& |
| | | $store.state.previewLayer.type !='cpt'" |
| | | size="small" |
| | | @click="getModeKeyId" |
| | | >模型主键</el-button> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml'&& |
| | | $store.state.previewLayer.type !='cpt'" |
| | | size="small" |
| | | @click="resave" |
| | | >保存</el-button> |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="经度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'"> |
| | | <el-input size="small" |
| | | v-model="modelForm.lon" |
| | | @input="update"></el-input> |
| | | <el-slider v-model="modelForm.lon" |
| | | @input="update" |
| | | :min="73" |
| | | :step="0.001" |
| | | :max="135"></el-slider> |
| | | <el-form-item |
| | | label="经度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'&& |
| | | $store.state.previewLayer.type !='cpt'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.lon" |
| | | @input="update" |
| | | ></el-input> |
| | | <el-slider |
| | | v-model="modelForm.lon" |
| | | @input="update" |
| | | :min="73" |
| | | :step="0.001" |
| | | :max="135" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="纬度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'"> |
| | | <el-input size="small" |
| | | v-model="modelForm.lat" |
| | | @input="update"></el-input> |
| | | <el-slider v-model="modelForm.lat" |
| | | @input="update" |
| | | :min="3" |
| | | :step="0.001" |
| | | :max="54"></el-slider> |
| | | <el-form-item |
| | | label="纬度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'&& |
| | | $store.state.previewLayer.type !='cpt'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.lat" |
| | | @input="update" |
| | | ></el-input> |
| | | <el-slider |
| | | v-model="modelForm.lat" |
| | | @input="update" |
| | | :min="3" |
| | | :step="0.001" |
| | | :max="54" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="高度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'"> |
| | | <el-input size="small" |
| | | v-model="modelForm.height" |
| | | @input="update"></el-input> |
| | | <el-slider v-model="modelForm.height" |
| | | :min="-800" |
| | | :step="1" |
| | | @input="update" |
| | | :max="8800"></el-slider> |
| | | <el-form-item |
| | | label="高度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'&& |
| | | $store.state.previewLayer.type !='cpt'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.height" |
| | | @input="update" |
| | | ></el-input> |
| | | <el-slider |
| | | v-model="modelForm.height" |
| | | :min="-800" |
| | | :step="1" |
| | | @input="update" |
| | | :max="8800" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="角度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'"> |
| | | <el-input size="small" |
| | | v-model="modelForm.yaw" |
| | | @input="update"></el-input> |
| | | <el-slider v-model="modelForm.yaw" |
| | | :min="0" |
| | | @input="update" |
| | | :step="0.1" |
| | | :max="360"></el-slider> |
| | | <el-form-item |
| | | label="角度:" |
| | | v-if="$store.state.previewLayer.type != '3dml'&& |
| | | $store.state.previewLayer.type !='cpt'" |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.yaw" |
| | | @input="update" |
| | | ></el-input> |
| | | <el-slider |
| | | v-model="modelForm.yaw" |
| | | :min="0" |
| | | @input="update" |
| | | :step="0.1" |
| | | :max="360" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="透明度:"> |
| | | <el-input size="small" |
| | | v-model="modelForm.alpha" |
| | | @input="update"></el-input> |
| | | <el-slider v-model="modelForm.alpha" |
| | | @input="update" |
| | | :min="0" |
| | | :step="0.01" |
| | | :max="1"></el-slider> |
| | | <el-input |
| | | size="small" |
| | | v-model="modelForm.alpha" |
| | | @input="update" |
| | | ></el-input> |
| | | <el-slider |
| | | v-model="modelForm.alpha" |
| | | @input="update" |
| | | :min="0" |
| | | :step="0.01" |
| | | :max="1" |
| | | ></el-slider> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <el-dialog :title="formInline.title" |
| | | :visible.sync="dialogVisible" |
| | | :modal="false" |
| | | :modal-append-to-body="false" |
| | | :close-on-click-modal="false" |
| | | :before-close="handleClose" |
| | | width="30%"> |
| | | <el-dialog |
| | | :title="formInline.title" |
| | | :visible.sync="dialogVisible" |
| | | :modal="false" |
| | | :modal-append-to-body="false" |
| | | :close-on-click-modal="false" |
| | | :before-close="handleClose" |
| | | width="30%" |
| | | > |
| | | <div style="height:63vh"> |
| | | <el-tabs v-model="activeName" |
| | | @tab-click="handleClick"> |
| | | <el-tab-pane label="属性" |
| | | name="first"> |
| | | <el-form ref="form" |
| | | :model="formInline" |
| | | label-width="80px"> |
| | | <el-tabs |
| | | v-model="activeName" |
| | | @tab-click="handleClick" |
| | | > |
| | | <el-tab-pane |
| | | label="属性" |
| | | name="first" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="formInline" |
| | | label-width="80px" |
| | | > |
| | | |
| | | <el-form-item :label="$t('common.name')"> |
| | | <el-input v-model="formInline.name"></el-input> |
| | | |
| | | </el-form-item> |
| | | <el-form-item :label="$t('common.type')"> |
| | | <el-select v-model="formInline.type" |
| | | style="width:100%"> |
| | | <el-option v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | <el-select |
| | | v-model="formInline.type" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | |
| | |
| | | |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button v-show="isShowModel" |
| | | type="success" |
| | | plain |
| | | size="small" |
| | | @click="InsertData">{{$t('common.increase')}}</el-button> |
| | | <el-button v-show="!isShowModel" |
| | | type="info" |
| | | plain |
| | | size="small" |
| | | @click="EditData">{{$t('common.update')}}</el-button> |
| | | <el-button |
| | | v-show="isShowModel" |
| | | type="success" |
| | | plain |
| | | size="small" |
| | | @click="InsertData" |
| | | >{{$t('common.increase')}}</el-button> |
| | | <el-button |
| | | v-show="!isShowModel" |
| | | type="info" |
| | | plain |
| | | size="small" |
| | | @click="EditData" |
| | | >{{$t('common.update')}}</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </el-tab-pane> |
| | | <el-tab-pane label="附件" |
| | | name="second"> |
| | | <el-form :model="fromfile" |
| | | class="demo-form-inline"> |
| | | <el-tab-pane |
| | | label="附件" |
| | | name="second" |
| | | > |
| | | <el-form |
| | | :model="fromfile" |
| | | class="demo-form-inline" |
| | | > |
| | | <el-form-item> |
| | | <el-input v-model="fromfile.file" |
| | | style="width: 300px; margin-right: 20px" |
| | | :placeholder="$t('common.choose')" |
| | | disabled></el-input> |
| | | <input name="file1" |
| | | type="file" |
| | | id="insertFile" |
| | | multiple="multiple" |
| | | style="display: none" |
| | | @change="insertFile( )" /> |
| | | <el-link @click="getInsertFile( )" |
| | | :underline="false"><i class="el-icon-folder-opened"></i></el-link> |
| | | <el-input |
| | | v-model="fromfile.file" |
| | | style="width: 300px; margin-right: 20px" |
| | | :placeholder="$t('common.choose')" |
| | | disabled |
| | | ></el-input> |
| | | <input |
| | | name="file1" |
| | | type="file" |
| | | id="insertFile" |
| | | multiple="multiple" |
| | | style="display: none" |
| | | @change="insertFile( )" |
| | | /> |
| | | <el-link |
| | | @click="getInsertFile( )" |
| | | :underline="false" |
| | | ><i class="el-icon-folder-opened"></i></el-link> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-row> |
| | | <el-col :span="3"> |
| | | <el-link class="elLink" |
| | | :underline="false" |
| | | @click="setAttachInsert">{{$t('common.append')}}</el-link> |
| | | <el-link |
| | | class="elLink" |
| | | :underline="false" |
| | | @click="setAttachInsert" |
| | | >{{$t('common.append')}}</el-link> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-link class="elLink" |
| | | :underline="false" |
| | | @click="setAttachDel">{{$t('common.delete')}}</el-link> |
| | | <el-link |
| | | class="elLink" |
| | | :underline="false" |
| | | @click="setAttachDel" |
| | | >{{$t('common.delete')}}</el-link> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table :data="tableData" |
| | | ref="filterTable" |
| | | height="calc(100% - 130px)" |
| | | border |
| | | style="width: 100%" |
| | | @selection-change="handleAttatchChange"> |
| | | <el-table-column type="selection" |
| | | width="70" /> |
| | | <el-table-column width="60" |
| | | type="index" |
| | | :label="$t('common.index')" /> |
| | | <el-table-column prop="name" |
| | | :label="$t('common.name')" /> |
| | | <el-table |
| | | :data="tableData" |
| | | ref="filterTable" |
| | | height="calc(100% - 130px)" |
| | | border |
| | | style="width: 100%" |
| | | @selection-change="handleAttatchChange" |
| | | > |
| | | <el-table-column |
| | | type="selection" |
| | | width="70" |
| | | /> |
| | | <el-table-column |
| | | width="60" |
| | | type="index" |
| | | :label="$t('common.index')" |
| | | /> |
| | | <el-table-column |
| | | prop="name" |
| | | :label="$t('common.name')" |
| | | /> |
| | | |
| | | <el-table-column prop="sizes" |
| | | :label="$t('common.size')" |
| | | :formatter="statSizeChange" /> |
| | | <el-table-column align="center" |
| | | :label="$t('common.operate')" |
| | | min-width="100"> |
| | | <el-table-column |
| | | prop="sizes" |
| | | :label="$t('common.size')" |
| | | :formatter="statSizeChange" |
| | | /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('common.operate')" |
| | | min-width="100" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-link v-if="matchState(scope, /[]/)" |
| | | @click="setAttatchDetail(scope.$index, scope.row)" |
| | | class="elLink">{{ $t('common.see') }}</el-link> |
| | | <el-link |
| | | v-if="matchState(scope, /[]/)" |
| | | @click="setAttatchDetail(scope.$index, scope.row)" |
| | | class="elLink" |
| | | >{{ $t('common.see') }}</el-link> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <map-sdk v-if='showMapVisible'></map-sdk> |
| | | </div> |
| | | </el-dialog> --> |
| | | <el-dialog title="预览" |
| | | :append-to-body="false" |
| | | :visible.sync="dialog.dialogVisible" |
| | | width="70%" |
| | | :close-on-click-modal="false"> |
| | | <div v-if="dialog.isPdf" |
| | | class="pdfClass"> |
| | | <iframe :src="dialog.src" |
| | | type="application/x-google-chrome-pdf" |
| | | width="100%" |
| | | height="100%"> |
| | | <el-dialog |
| | | title="预览" |
| | | :append-to-body="false" |
| | | :visible.sync="dialog.dialogVisible" |
| | | width="70%" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <div |
| | | v-if="dialog.isPdf" |
| | | class="pdfClass" |
| | | > |
| | | <iframe |
| | | :src="dialog.src" |
| | | type="application/x-google-chrome-pdf" |
| | | width="100%" |
| | | height="100%" |
| | | > |
| | | </iframe> |
| | | </div> |
| | | <div v-if="dialog.isJpg" |
| | | class="pdfClass"> |
| | | <div |
| | | v-if="dialog.isJpg" |
| | | class="pdfClass" |
| | | > |
| | | |
| | | <el-image style="width:100%; height:100%" |
| | | :src="dialog.src" |
| | | :preview-src-list="[dialog.src]"> |
| | | <el-image |
| | | style="width:100%; height:100%" |
| | | :src="dialog.src" |
| | | :preview-src-list="[dialog.src]" |
| | | > |
| | | </el-image> |
| | | |
| | | </div> |
| | | </el-dialog> |
| | | <div v-show="modelKeyFlag" |
| | | class="modelLayer box_divm" |
| | | v-drag> |
| | | <el-form ref="form" |
| | | :model="modelForm" |
| | | label-width="80px"> |
| | | <div |
| | | v-show="modelKeyFlag" |
| | | class="modelLayer box_divm" |
| | | v-drag |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="modelForm" |
| | | label-width="80px" |
| | | > |
| | | <el-form-item label="主键ID"> |
| | | <el-select v-model="modelLayerId"> |
| | | <el-option v-for="item in optionKey" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | <el-option |
| | | v-for="item in optionKey" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" |
| | | size="small" |
| | | @click="setSureKeyModelKey">{{$t('common.confirm')}}</el-button> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | @click="setSureKeyModelKey" |
| | | >{{$t('common.confirm')}}</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | components: { |
| | | undergroundModel |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | levelArray: [ |
| | | 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, |
| | |
| | | modelKeyFlag: false, |
| | | } |
| | | }, |
| | | mounted () { |
| | | mounted() { |
| | | this.init3DMap(); |
| | | }, |
| | | methods: { |
| | | setUndergroundMode () { |
| | | setUndergroundMode() { |
| | | if (window.UndergroundMode) { |
| | | this.$refs && |
| | | this.$refs.undergroundModel && |
| | |
| | | this.$refs.undergroundModel.open("地下模式", null,); |
| | | } |
| | | }, |
| | | refreshAttatchDetail () { |
| | | refreshAttatchDetail() { |
| | | this.dialog.src = ""; |
| | | this.dialog.dialogVisible = false; |
| | | this.dialog.isPdf = false; |
| | | this.dialog.isJpg = false; |
| | | }, |
| | | //附件查看 |
| | | setAttatchDetail (index, row) { |
| | | setAttatchDetail(index, row) { |
| | | this.refreshAttatchDetail() |
| | | var name = row.name; |
| | | if (name.indexOf('.pdf') != -1 || name.indexOf('.PDF') != -1) { |
| | |
| | | this.dialog.src = url |
| | | } |
| | | }, |
| | | async setAttachDel () { |
| | | async setAttachDel() { |
| | | var std = []; |
| | | for (var i in this.attacgSelection) { |
| | | std.push(this.attacgSelection[i].id); |
| | |
| | | } |
| | | this.getAttacthFlieList(); |
| | | }, |
| | | setAttachInsert () { |
| | | setAttachInsert() { |
| | | var token = getToken(); |
| | | var fs = document.getElementById("insertFile"); |
| | | if (fs.files.length == 0) { |
| | |
| | | ); |
| | | }, |
| | | //附件=>文件选择 |
| | | getInsertFile () { |
| | | getInsertFile() { |
| | | $('#insertFile').click(); |
| | | }, |
| | | insertFile () { |
| | | insertFile() { |
| | | var val = document.getElementById('insertFile').files; |
| | | if (!val || !val.length) return; |
| | | this.fromfile.file = val[0].name; |
| | | }, |
| | | matchState (state = "", reg) { |
| | | matchState(state = "", reg) { |
| | | var row = state.row; |
| | | var name = row.name; |
| | | if ( |
| | |
| | | |
| | | return false; |
| | | }, |
| | | statSizeChange (row, column) { |
| | | statSizeChange(row, column) { |
| | | return this.stateFormatSizes(row.sizes) |
| | | }, |
| | | stateFormatSizes (res) { |
| | | stateFormatSizes(res) { |
| | | if (res >= 1024) { |
| | | const val = parseFloat(res / 1024).toFixed(3); |
| | | return val + ' GB'; |
| | |
| | | } |
| | | }, |
| | | // 附件=>表格选择 |
| | | handleAttatchChange (val) { |
| | | handleAttatchChange(val) { |
| | | this.attacgSelection = val; |
| | | }, |
| | | //附件列表查询 |
| | | async getAttacthFlieList () { |
| | | async getAttacthFlieList() { |
| | | var obj = { |
| | | eventid: this.layerID, |
| | | tabName: "lf.sys_style" |
| | |
| | | } |
| | | this.tableData = res.result; |
| | | }, |
| | | handleClick () { |
| | | handleClick() { |
| | | if (this.activeName == "second") { |
| | | this.getAttacthFlieList(); |
| | | } |
| | | }, |
| | | async EditData () { |
| | | async EditData() { |
| | | const data = await comprehensive_updateModel(this.formInline) |
| | | |
| | | |
| | |
| | | |
| | | this.startModelData(); |
| | | }, |
| | | async InsertData () { |
| | | async InsertData() { |
| | | var std = { |
| | | "bak": this.formInline.bak, |
| | | "guid": this.formInline.Id, |
| | |
| | | |
| | | |
| | | }, |
| | | handleClose () { |
| | | handleClose() { |
| | | this.dialogVisible = false; |
| | | this.formInline = { |
| | | title: '', |
| | |
| | | this.activeName = "first" |
| | | }, |
| | | |
| | | async setShowModelInfo (result) { |
| | | async setShowModelInfo(result) { |
| | | var modelKey = 'id'; |
| | | |
| | | if (result.tileset) { |
| | |
| | | |
| | | this.dialogVisible = true; |
| | | }, |
| | | async startModelData () { |
| | | async startModelData() { |
| | | var obj = { |
| | | layerid: this.formInline.layerId, |
| | | modelid: this.formInline.Id |
| | |
| | | this.formInline.title = this.formInline.name; |
| | | } |
| | | }, |
| | | setChangeTileset (result) { |
| | | setChangeTileset(result) { |
| | | var value = this.$refs.tree.getCheckedNodes(); |
| | | var std = []; |
| | | for (var i in value) { |
| | |
| | | } |
| | | } |
| | | }, |
| | | setAddLayers (rs) { |
| | | setAddLayers(rs) { |
| | | |
| | | if (rs.serveType == "Tileset" || rs.serveType == "3DML") { |
| | | var url; |
| | |
| | | } |
| | | }, |
| | | |
| | | async getArgsTileset (tileset, rs) { |
| | | async getArgsTileset(tileset, rs) { |
| | | |
| | | if (rs.pubid > 0) { |
| | | |
| | |
| | | |
| | | } |
| | | }, |
| | | tileSet (tileset, height) { |
| | | tileSet(tileset, height) { |
| | | //3dtile模型的边界球体 |
| | | var boundingSphere = tileset.boundingSphere; |
| | | //迪卡尔空间直角坐标=>地理坐标(弧度制) |
| | |
| | | tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); |
| | | // Viewer.flyTo(tileset); |
| | | }, |
| | | reloadTile (tileset, res) { |
| | | reloadTile(tileset, res) { |
| | | var vm = JSON.parse(res) |
| | | var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); |
| | | var converter = Cesium.Transforms.eastNorthUpToFixedFrame; |
| | |
| | | |
| | | |
| | | |
| | | handleCheckChange (data, checked, indeterminate) { |
| | | handleCheckChange(data, checked, indeterminate) { |
| | | if (data.type == 1) { |
| | | this.getchilds(data); |
| | | this.setChangeTileset(this.childOption, checked); |
| | |
| | | this.setChangeTileset([data], checked); |
| | | } |
| | | }, |
| | | handleNodeClick (data) { |
| | | handleNodeClick(data) { |
| | | if (data.type == 2) { |
| | | this.currentData = data; |
| | | for (var j in Viewer.scene.primitives._primitives) { |
| | |
| | | } |
| | | } |
| | | }, |
| | | getchilds (source) { |
| | | getchilds(source) { |
| | | if (source.children) { |
| | | var child = source.children |
| | | for (var i in child) { |
| | |
| | | this.childOption.push(source) |
| | | } |
| | | }, |
| | | init3DMap () { |
| | | init3DMap() { |
| | | //地图初始化 |
| | | window.sgworld = new SmartEarth.SGWorld("mapdiv", { |
| | | licenseServer: window.sceneConfig.licenseServer, |
| | |
| | | } |
| | | } |
| | | }, |
| | | getModeKeyId () { |
| | | getModeKeyId() { |
| | | window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); |
| | | window.ModeKeyIdHandler.setInputAction((event) => { |
| | | |
| | |
| | | }, Cesium.ScreenSpaceEventType.LEFT_CLICK) |
| | | }, |
| | | |
| | | async resave () { |
| | | async resave() { |
| | | if (!this.modelForm.modelid) { |
| | | return this.$message('未选择模型主键ID'); |
| | | } |
| | |
| | | } |
| | | this.reload(); |
| | | }, |
| | | reload () { |
| | | reload() { |
| | | var json = JSON.stringify(this.modelForm); |
| | | var url = this.$store.state.previewLayer.url.replace("{host}", iisHost); |
| | | if (!url) return; |
| | |
| | | }, |
| | | |
| | | //拾取 |
| | | pickupCoords () { |
| | | pickupCoords() { |
| | | if (this.app.handler) { |
| | | this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); |
| | | this.app.handler = undefined; |
| | |
| | | }, Cesium.ScreenSpaceEventType.LEFT_CLICK); |
| | | }, |
| | | // 保留小数位 |
| | | toFixed (d, n) { |
| | | toFixed(d, n) { |
| | | var p = Math.pow(10, n); |
| | | |
| | | return Math.round(d * p) / p; |
| | | }, |
| | | update () { |
| | | update() { |
| | | if (!this.modelForm.lon || isNaN(this.modelForm.lon)) { |
| | | var args = this.getEditTilesetArgs(); |
| | | this.modelForm.lon = args.lon == null ? 0 : args.height; |
| | |
| | | this.setTilesetArgs(this.modelForm); |
| | | sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) |
| | | }, |
| | | setTilesetArgs (f) { |
| | | setTilesetArgs(f) { |
| | | |
| | | if (!this.app.tileset || this.app.isBusy) return; |
| | | |
| | |
| | | model._root.transform = matrix; |
| | | }, |
| | | //地下 |
| | | underground () { |
| | | underground() { |
| | | this.app.under = !this.app.under; |
| | | sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) |
| | | }, |
| | | //显隐 |
| | | showTileset () { |
| | | showTileset() { |
| | | if (!this.app.tileset) return; |
| | | this.app.tileset.show = !this.app.tileset.show; |
| | | }, |
| | | //定位 |
| | | locateTo () { |
| | | locateTo() { |
| | | if (!this.app.tileset) return; |
| | | Viewer.flyTo(this.app.tileset); |
| | | }, |
| | | createTileset (res) { |
| | | createTileset(res) { |
| | | res.url = res.url.replace('{host}', iisHost) |
| | | return new Cesium.Cesium3DTileset({ |
| | | url: res.url, |
| | |
| | | dynamicScreenSpaceError: true // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋 |
| | | }); |
| | | }, |
| | | setEditModelLayer (res) { |
| | | setEditModelLayer(res) { |
| | | this.editModelFlag = true; |
| | | if (res.json) { |
| | | var json = JSON.parse(res.json) |
| | |
| | | this.getTilesetArgs(); |
| | | } |
| | | }, |
| | | setModleLocatin () { |
| | | setModleLocatin() { |
| | | var res = this.$store.state.previewLayer; |
| | | var type = res.type; |
| | | |
| | |
| | | } |
| | | |
| | | }, |
| | | setModeLayerID (res) { |
| | | setModeLayerID(res) { |
| | | |
| | | var value = res.getPropertyNames(); |
| | | var std = []; |
| | |
| | | this.modelLayerId = this.optionKey[0].label; |
| | | this.modelKeyFlag = true; |
| | | }, |
| | | setSureKeyModelKey () { |
| | | setSureKeyModelKey() { |
| | | this.modelKeyFlag = false; |
| | | this.modelForm.modelid = this.modelLayerId |
| | | window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除事件 |
| | | }, |
| | | getTilesetArgs () { |
| | | getTilesetArgs() { |
| | | this.app.isBusy = true; |
| | | var cm = this.app.tileset._root.transform; |
| | | var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); |
| | |
| | | } |
| | | this.app.isBusy = false; |
| | | }, |
| | | getEditTilesetArgs () { |
| | | getEditTilesetArgs() { |
| | | this.app.isBusy = true; |
| | | var std = { |
| | | lon: 0, |
| | |
| | | return std |
| | | }, |
| | | |
| | | async setShowModelLayer () { |
| | | async setShowModelLayer() { |
| | | const data = await perms_selectLayers(); |
| | | if (data.code != 200) { |
| | | |
| | |
| | | }, Cesium.ScreenSpaceEventType.LEFT_CLICK) |
| | | } |
| | | }, |
| | | setTreeData (source) { |
| | | setTreeData(source) { |
| | | let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 |
| | | return cloneData.filter((father) => { |
| | | // 循环所有项 |
| | |
| | | // //修改模型矩阵 |
| | | // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); |
| | | // }, |
| | | getHeight (level) { |
| | | getHeight(level) { |
| | | if (level > 0 && level < 23) { |
| | | return this.levelArray[level] |
| | | } |