| | |
| | | */ |
| | | |
| | | <template> |
| | | <div class="tool-ranging"> |
| | | <div class="header" |
| | | @mousedown="move" |
| | | :class="{'move': moveFlag}"> |
| | | <div class="tool-area" ref="toolAreaBox"> |
| | | <div class="header" @mousedown="move" :class="{'move': moveFlag}"> |
| | | <div class="title"> |
| | | <img class="icon deblurring" |
| | | src="/img/icon/dtcj.png" |
| | | alt=""> |
| | | <span> |
| | | 地图测面 |
| | | </span> |
| | | <img class="icon deblurring" src="/img/icon/tool-area.png" alt /> |
| | | <span>地图测面</span> |
| | | </div> |
| | | <img class="close" |
| | | src="/img/navicon/close.png" |
| | | alt="" |
| | | @click="closeModel"> |
| | | <img class="close" src="/img/navicon/close.png" alt @click="closeModel" /> |
| | | </div> |
| | | <div class="content"> |
| | | <el-button type="primary" |
| | | size="mini" |
| | | @click.stop="calcDistance"> |
| | | 开始 |
| | | </el-button> |
| | | <el-button type="primary" size="mini" @click.stop="calcDistance">开始</el-button> |
| | | |
| | | <el-button type="danger" |
| | | size="mini" |
| | | @click.stop="deactivate"> |
| | | 清除 |
| | | </el-button> |
| | | <el-button type="danger" size="mini" @click.stop="deactivate">清除</el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | import { mapGetters } from 'vuex' |
| | | |
| | | export default { |
| | | data () { |
| | | return { |
| | | moveFlag: false |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters([ |
| | | 'viewer' |
| | |
| | | created () { |
| | | }, |
| | | methods: { |
| | | move (e) { |
| | | const that = this |
| | | const odiv = this.$refs.toolAreaBox // 获取目标元素 |
| | | // 算出鼠标相对元素的位置 |
| | | const disX = e.clientX - odiv.offsetLeft |
| | | const disY = e.clientY - odiv.offsetTop |
| | | |
| | | const disH = odiv.offsetHeight |
| | | const disW = odiv.offsetWidth |
| | | |
| | | document.onmousemove = (e) => { |
| | | that.moveFlag = true |
| | | // 鼠标按下并移动的事件 |
| | | // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 |
| | | let left = e.clientX - disX |
| | | let top = e.clientY - disY |
| | | |
| | | // 绑定元素位置到positionX和positionY上面 |
| | | |
| | | if (left >= window.innerWidth - disW) { |
| | | left = window.innerWidth - disW |
| | | } |
| | | |
| | | if (left <= 0) { |
| | | left = 0 |
| | | } |
| | | |
| | | if (top >= window.innerHeight - disH) { |
| | | top = window.innerHeight - disH |
| | | } |
| | | |
| | | if (top <= 60) { |
| | | top = 60 |
| | | } |
| | | |
| | | // 移动当前元素 |
| | | odiv.style.left = (left) + 'px' |
| | | odiv.style.top = (top) + 'px' |
| | | odiv.style.bottom = 'auto' |
| | | } |
| | | document.onmouseup = (e) => { |
| | | that.moveFlag = false |
| | | document.onmousemove = null |
| | | document.onmouseup = null |
| | | } |
| | | }, |
| | | |
| | | calcDistance () { |
| | | this.viewer.measure.areaSurface() |
| | | }, |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | <style lang="scss" scoped> |
| | | .move { |
| | | cursor: move; |
| | | } |
| | | </style> |