4 files modified
1 files deleted
2 files added
| | |
| | | method: "get", |
| | | }); |
| | | }; |
| | | |
| | | export const getdetail = (id) => { |
| | | return request({ |
| | | url: `blade-hd/hd/detail?id=` + id, |
| | | method: "get", |
| | | }); |
| | | }; |
| | |
| | | <div class="mobileActivity_coutrol" :style="{ bottom: bottom + 'px' }"> |
| | | <ul> |
| | | <li |
| | | v-for="(item, index) in leftNavData" |
| | | v-for="(item, index) in ourLeftData" |
| | | :key="index" |
| | | @click="mobileActivityCoutrolClick(item)" |
| | | v-show="!item.notShow" |
| | |
| | | <script> |
| | | import { mapGetters } from "vuex"; |
| | | import moveWindow from "./move"; |
| | | import { getdetail } from "@/api/mobile/hd/hd"; |
| | | window.serviceMapSee = {}; |
| | | export default { |
| | | name: "mobileActivity", |
| | | computed: { |
| | |
| | | // 'drawALineLayerMany', |
| | | // 'drawAPointLayerMany' |
| | | ]), |
| | | ourLeftData() { |
| | | return [...this.serviceMap, ...this.leftNavData]; |
| | | }, |
| | | }, |
| | | data() { |
| | | const heig = 135; |
| | |
| | | // layer: "sceneLayer", |
| | | // imgSrc: "img/leftnav/map-panorama.png", |
| | | // // imgSrc: "img/mobile/blue.png", |
| | | // }, |
| | | ], |
| | | //底图 |
| | | serviceMap: [ |
| | | // { |
| | | // flag: true, |
| | | // label: "底图1", |
| | | // img: "/img/leftnav/way-checked.png", |
| | | // normal: "/img/leftnav/way.png", |
| | | // checked: "/img/leftnav/way-checked.png", |
| | | // layer: "wayLayer", |
| | | // imgSrc: "img/mobile/green.png", |
| | | // layer: null, |
| | | // }, |
| | | ], |
| | | }; |
| | |
| | | that.domMove.opens(false, true); |
| | | }, |
| | | ]); |
| | | |
| | | //绘画底图 |
| | | //获取详细信息,来获取底图 |
| | | // console.log(this.showActivityData, "see"); |
| | | that.serviceMap = []; |
| | | getdetail(this.showActivityData.opendata.id).then((res) => { |
| | | let name = res.data.data.mapname.split(","); |
| | | let url = res.data.data.url.split(","); |
| | | for (let k in name) { |
| | | let d = { |
| | | flag: true, |
| | | label: name[k], |
| | | img: "/img/leftnav/way-checked.png", |
| | | normal: "/img/leftnav/way.png", |
| | | checked: "/img/leftnav/way-checked.png", |
| | | layer: "wayLayer", |
| | | imgSrc: "img/mobile/green.png", |
| | | layer: "serviceMap" + that.serviceMap.length, |
| | | url: url[k], |
| | | to: "serviceMap", |
| | | }; |
| | | // this.leftNavData.shift(d); |
| | | // console.log(d, "see"); |
| | | // that.serviceMap.push(d); |
| | | // window.serviceMapSee[d.layer] = |
| | | // global.DC.ImageryLayerFactory.createArcGisImageryLayer({ |
| | | // url: url[k], |
| | | // }); |
| | | // global.viewer.addBaseLayer(window.serviceMapSee[d.layer], { |
| | | // iconUrl: "examples/images/icon/elec.png", |
| | | // name: d.layer, |
| | | // }); |
| | | } |
| | | // const baselayer_shaded = |
| | | // global.DC.ImageryLayerFactory.createArcGisImageryLayer({ |
| | | // url: "https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer", |
| | | // }); |
| | | // global.viewer.addBaseLayer(baselayer_shaded, { |
| | | // iconUrl: "examples/images/icon/elec.png", |
| | | // name: "电子", |
| | | // }); |
| | | |
| | | // console.log(window.serviceMapSee, "see"); |
| | | // } |
| | | }); |
| | | }; |
| | | } |
| | | }, |
| | |
| | | item.img = item.checked; |
| | | } else { |
| | | item.img = item.normal; |
| | | } |
| | | if (item.to == "serviceMap") { |
| | | console.log(item); |
| | | return; |
| | | } |
| | | this.$store.commit("showLineOrPoint", { |
| | | layer: item.layer, |
| | |
| | | margin-bottom: 6px; |
| | | font-weight: 400; |
| | | display: block; |
| | | width: 80px; |
| | | // width: 80px; |
| | | height: 30px; |
| | | line-height: 30px; |
| | | background-color: #fff; |
| | | border-radius: 15px; |
| | | text-align: center; |
| | | font-size: 0; |
| | | padding: 0 6px; |
| | | cursor: pointer; |
| | | |
| | | img { |
| New file |
| | |
| | | <template> |
| | | <div |
| | | id="mobileActivity" |
| | | :style="{ height: height + 'px' }" |
| | | :class="[openValue ? 'isOpens' : 'notOpens']" |
| | | v-if="showActivity" |
| | | > |
| | | <div class="mobileActivity_heard"> |
| | | <div class="mobileActivity_title">活动标题:{{ hdTitle }}</div> |
| | | <div class="mobileActivity_close" @click="closeActivity"> |
| | | <i class="el-icon-close"></i> |
| | | </div> |
| | | </div> |
| | | <div class="mobileActivity_in"> |
| | | <!-- <el-button type="primary" @click="init">open</el-button> |
| | | <el-button type="success" @click="closeInit">close</el-button>--> |
| | | <div class="mobileActivity_insmall"> |
| | | <!-- <img :src="imgs" alt="" class="mobileActivity_insmallimg" /> --> |
| | | <el-image |
| | | class="mobileActivity_insmallimg" |
| | | :src="useData.url" |
| | | :preview-src-list="useData.srcList" |
| | | ></el-image> |
| | | <div class="mobileActivity_insmallxiangqing"> |
| | | <div |
| | | class="mobileActivity_insmallxiangqingIn" |
| | | v-for="(item, index) in useData.smallData" |
| | | :key="index" |
| | | > |
| | | <span class="mobileActivity_insmallxiangqingIn_s"> |
| | | {{ item.lable }} |
| | | </span> |
| | | : {{ item.value }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="mobileActivity_detailed"> |
| | | <div |
| | | class="mobileActivity_detailedIn" |
| | | v-for="(item, index) in useData.detailedData" |
| | | :key="index" |
| | | > |
| | | <span class="mobileActivity_insmallxiangqingIn_s"> |
| | | {{ item.lable }} |
| | | </span> |
| | | : {{ item.value }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="mobileActivity_coutrol" :style="{ bottom: bottom + 'px' }"> |
| | | <ul> |
| | | <li |
| | | v-for="(item, index) in leftNavData" |
| | | :key="index" |
| | | @click="mobileActivityCoutrolClick(item)" |
| | | v-show="!item.notShow" |
| | | > |
| | | <img :src="item.img" alt /> |
| | | <span>{{ item.label }}</span> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapGetters } from "vuex"; |
| | | import moveWindow from "./move"; |
| | | export default { |
| | | name: "mobileActivity没底图", |
| | | computed: { |
| | | ...mapGetters([ |
| | | "showActivity", |
| | | "showActivityData", |
| | | // 'drawALineLayerMany', |
| | | // 'drawAPointLayerMany' |
| | | ]), |
| | | }, |
| | | data() { |
| | | const heig = 135; |
| | | const bottom = 150; |
| | | return { |
| | | useHeight: heig, |
| | | height: heig, |
| | | useBottom: bottom, |
| | | bottom: bottom, |
| | | openValue: false, |
| | | domMove: null, |
| | | start: 0, |
| | | end: 0, |
| | | hdTitle: "", |
| | | // url: "", |
| | | // srcList: [], |
| | | useData: {}, |
| | | leftNavData: [ |
| | | { |
| | | flag: true, |
| | | label: "线路", |
| | | // img: "/img/leftnav/tag.png", |
| | | img: "/img/leftnav/tag-checked.png", |
| | | normal: "/img/leftnav/tag.png", |
| | | checked: "/img/leftnav/tag-checked.png", |
| | | layer: "tagLayer", |
| | | imgSrc: "https://map.hit.edu.cn/images/tarrow_xq.png", |
| | | // imgSrc: "img/mobile/pink.png", |
| | | layer: "drawALineLayerMany", |
| | | }, |
| | | { |
| | | flag: true, |
| | | label: "标点", |
| | | img: "/img/leftnav/way-checked.png", |
| | | normal: "/img/leftnav/way.png", |
| | | checked: "/img/leftnav/way-checked.png", |
| | | layer: "wayLayer", |
| | | imgSrc: "img/mobile/green.png", |
| | | layer: "drawAPointLayerMany", |
| | | }, |
| | | // { |
| | | // flag: false, |
| | | // label: "实景", |
| | | // img: "/img/leftnav/scene.png", |
| | | // normal: "/img/leftnav/scene.png", |
| | | // checked: "/img/leftnav/scene-checked.png", |
| | | // layer: "sceneLayer", |
| | | // imgSrc: "img/leftnav/map-panorama.png", |
| | | // // imgSrc: "img/mobile/blue.png", |
| | | // }, |
| | | ], |
| | | }; |
| | | }, |
| | | watch: { |
| | | // openValue() { |
| | | // if (this.openValue) { |
| | | // let windowHeight = document.body.clientHeight; |
| | | // this.height = windowHeight / 2; |
| | | // } else { |
| | | // this.height = this.useHeight; |
| | | // } |
| | | // }, |
| | | showActivity() { |
| | | if (this.showActivity) { |
| | | this.inToInit(); // 初始化 |
| | | this.hdTitle = this.showActivityData.name; |
| | | |
| | | // new窗口对象 |
| | | const that = this; |
| | | const windowHeight = document.body.clientHeight; |
| | | this.doData(this.showActivityData); // 使用数据 |
| | | // 获取最大高度避免数据过少,空格多 |
| | | // let heard = document.querySelector(".mobileActivity_heard"); |
| | | // let ins = document.querySelector(".mobileActivity_in"); |
| | | // console.log(heard, ins, 77777); |
| | | this.checkDom("querySelector", ".mobileActivity_heard", (head) => { |
| | | this.checkDom("querySelector", ".mobileActivity_in", (ins) => { |
| | | console.log((head.offsetHeight + ins.offsetHeight) / 4); |
| | | doit(head.offsetHeight + ins.offsetHeight); |
| | | }); |
| | | }); |
| | | // return; |
| | | const doit = (maxheights) => { |
| | | this.domMove = new moveWindow({ |
| | | id: "mobileActivity", |
| | | minHeight: that.useHeight, |
| | | maxHeight: maxheights || windowHeight / 2, |
| | | critical: maxheights / 4, |
| | | fn: function (res) { |
| | | that.height = +res.height; |
| | | that.bottom = +res.height + 15; |
| | | // console.log(+res.height, "======="); |
| | | if (res.state != "on") { |
| | | that.openValue = res.state; |
| | | } |
| | | }, |
| | | }); |
| | | this.domMove.init(); |
| | | // console.log(this.domMove); |
| | | // 转移···添加点和线 |
| | | const addressOur = this.changeData( |
| | | this.useData.query, |
| | | "addressname", |
| | | "address" |
| | | ); |
| | | const lxOur = this.changeData(this.useData.query, "lxname", "lx"); |
| | | // console.log(addressOur, lxOur); |
| | | that.$store.dispatch("MSET_DRAWALINELAYERMANY", [ |
| | | lxOur, |
| | | addressOur, |
| | | this.useData.query, |
| | | function () { |
| | | that.domMove.opens(false, true); |
| | | }, |
| | | ]); |
| | | }; |
| | | } |
| | | }, |
| | | }, |
| | | mounted() {}, |
| | | methods: { |
| | | inToInit() { |
| | | // 初始化 |
| | | this.openValue = false; |
| | | this.height = this.useHeight; |
| | | this.bottom = this.useBottom; |
| | | for (const k in this.leftNavData) { |
| | | this.leftNavData[k].flag = true; |
| | | this.leftNavData[k].img = this.leftNavData[k].checked; |
| | | } |
| | | }, |
| | | // 处理主数据 |
| | | doData(val) { |
| | | const srcList = val.opendata.tpurl.split(","); |
| | | this.useData = { |
| | | data: val, |
| | | url: srcList[0], |
| | | srcList: srcList, |
| | | smallData: [ |
| | | { |
| | | lable: "主办方", |
| | | value: val.opendata.sponsor, |
| | | }, |
| | | { |
| | | lable: "承办方", |
| | | value: val.opendata.undertake, |
| | | }, |
| | | ], |
| | | detailedData: [ |
| | | { |
| | | lable: "活动时间", |
| | | value: val.opendata.time, |
| | | }, |
| | | { |
| | | lable: "活动详情", |
| | | value: val.opendata.context, |
| | | }, |
| | | ], |
| | | query: { |
| | | name: val.opendata.hdname, |
| | | bgImg: val.opendata.tpurl, |
| | | from: "活动", |
| | | websiteUrl: val.opendata.websiteurl, |
| | | telePhone: val.opendata.telephone, |
| | | introduce: val.opendata.context, |
| | | video: val.opendata.videourl, |
| | | // buts: ["定位"], |
| | | // 活动添加的字段 |
| | | addressname: val.opendata.addressname.split(";"), |
| | | address: val.opendata.address.split(";"), |
| | | lxname: val.opendata.lxname.split(";"), |
| | | lx: val.opendata.lx.split(";"), |
| | | lntLat: [ |
| | | val.opendata.address.split(";")[0].split(",")[0], |
| | | val.opendata.address.split(";")[0].split(",")[1], |
| | | ], |
| | | panoramaurl: val.opendata.panoramaurl, // 全景 |
| | | }, |
| | | }; |
| | | }, |
| | | // 启动监听事件 |
| | | init() { |
| | | this.domMove.init(); |
| | | }, |
| | | // 关闭监听事件 |
| | | closeInit() { |
| | | this.domMove.closeInit(); |
| | | }, |
| | | // 控制线路和点的显影 |
| | | mobileActivityCoutrolClick(item) { |
| | | item.flag = !item.flag; |
| | | if (item.flag == true) { |
| | | item.img = item.checked; |
| | | } else { |
| | | item.img = item.normal; |
| | | } |
| | | this.$store.commit("showLineOrPoint", { |
| | | layer: item.layer, |
| | | flag: item.flag, |
| | | }); |
| | | }, |
| | | changeData(data, name, value) { |
| | | const arr = []; |
| | | for (const k in data[name]) { |
| | | arr.push({ |
| | | name: data[name][k], |
| | | value: |
| | | name == "lxname" |
| | | ? data[value][k] |
| | | .split("(")[1] |
| | | .split(")")[0] |
| | | .split(",") |
| | | .join(";") |
| | | .split(" ") |
| | | .join(",") |
| | | : [+data[value][k].split(",")[0], +data[value][k].split(",")[1]], |
| | | }); |
| | | } |
| | | return arr; |
| | | }, |
| | | closeActivity() { |
| | | this.$store.commit("set_showActivity", { state: false }); |
| | | if (this.domMove) { |
| | | this.closeInit(); |
| | | } |
| | | // 关闭路线和点的图层 |
| | | this.$store.commit("removePolylineMany"); |
| | | // 关闭随地图弹窗 |
| | | this.$store.dispatch("closeMobileWindowsDom"); |
| | | // 显示右侧栏 |
| | | this.$store.commit("SET_SeeAndNotSee", true); |
| | | }, |
| | | checkDom(methods, name, fn) { |
| | | // 声明定时器 |
| | | var timer = null; |
| | | // 检查dom是否执行完成 |
| | | function checkDom() { |
| | | // let dom = that.$refs[name]; |
| | | const dom = document[methods](name); |
| | | if (dom) { |
| | | // 执行dom加载完成后的操作 |
| | | // 清除定时器 |
| | | if (!timer) { |
| | | clearTimeout(timer); |
| | | } |
| | | if (fn) { |
| | | // 回调函数 |
| | | fn(dom); |
| | | } else { |
| | | return dom; |
| | | } |
| | | } else { |
| | | // 自我调用 |
| | | timer = setTimeout(checkDom, 100); |
| | | } |
| | | } |
| | | // 首次执行 |
| | | checkDom(); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | #mobileActivity { |
| | | position: fixed; |
| | | bottom: 0px; |
| | | left: 0px; |
| | | width: 100%; |
| | | // height: 50px; |
| | | background-color: #fff; |
| | | z-index: 999; |
| | | transition: height 0.1s; |
| | | border-radius: 15px 15px 0 0; |
| | | .mobileActivity_heard { |
| | | height: 35px; |
| | | border-radius: 15px 15px 0 0; |
| | | width: 100%; |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | border-bottom: 1px solid rgba($color: #acacac, $alpha: 0.5); |
| | | box-shadow: 0 0px 10px -3px rgba($color: #acacac, $alpha: 0.5); |
| | | .mobileActivity_title { |
| | | width: 100%; |
| | | height: 100%; |
| | | line-height: 35px; |
| | | text-indent: 1rem; |
| | | } |
| | | .mobileActivity_close { |
| | | position: absolute; |
| | | right: 5px; |
| | | top: 5px; |
| | | font-size: 25px; |
| | | } |
| | | } |
| | | .mobileActivity_in { |
| | | width: 100%; |
| | | height: auto; |
| | | overflow: hidden; |
| | | padding-bottom: 5px; |
| | | .mobileActivity_insmall { |
| | | background-color: #fff; |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | .mobileActivity_insmallimg { |
| | | width: 90px; |
| | | height: 90px; |
| | | } |
| | | .mobileActivity_insmallxiangqing { |
| | | width: calc(100% - 110px); |
| | | height: 94px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | flex-direction: column; |
| | | .mobileActivity_insmallxiangqingIn { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | .mobileActivity_detailed { |
| | | background-color: rgba(202, 202, 202, 0.2); |
| | | padding: 3px 0 0 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | box-sizing: border-box; |
| | | .mobileActivity_detailedIn { |
| | | background-color: #fff; |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | padding: 5px; |
| | | margin: 0 0 3px 0; |
| | | } |
| | | } |
| | | .mobileActivity_insmallxiangqingIn_s { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .notOpens { |
| | | &::after { |
| | | content: ""; |
| | | display: block; |
| | | width: 20px; |
| | | height: 4px; |
| | | background-color: rgba(202, 202, 202, 1); |
| | | position: absolute; |
| | | top: -9px; |
| | | left: calc(50% - 10px); |
| | | border-radius: 5px; |
| | | } |
| | | } |
| | | |
| | | .isOpens { |
| | | &::after { |
| | | content: ""; |
| | | display: block; |
| | | width: 13px; |
| | | height: 4px; |
| | | background-color: rgba(202, 202, 202, 1); |
| | | position: absolute; |
| | | top: -9px; |
| | | left: calc(50% - 12px); |
| | | border-radius: 5px; |
| | | transform: rotate(30deg); |
| | | } |
| | | &::before { |
| | | content: ""; |
| | | display: block; |
| | | width: 13px; |
| | | height: 4px; |
| | | background-color: rgba(202, 202, 202, 1); |
| | | position: absolute; |
| | | top: -9px; |
| | | left: calc(50% - 4px); |
| | | border-radius: 5px; |
| | | transform: rotate(-30deg); |
| | | } |
| | | } |
| | | .mobileActivity_coutrol { |
| | | position: fixed; |
| | | bottom: 150px; |
| | | left: 0px; |
| | | z-index: 200; |
| | | background-color: #fff; |
| | | border-radius: 0 17px 17px 0; |
| | | transition: all 0.18s; |
| | | ul { |
| | | position: relative; |
| | | top: 3px; |
| | | } |
| | | li { |
| | | margin-bottom: 6px; |
| | | font-weight: 400; |
| | | display: block; |
| | | width: 80px; |
| | | height: 30px; |
| | | line-height: 30px; |
| | | background-color: #fff; |
| | | border-radius: 15px; |
| | | text-align: center; |
| | | font-size: 0; |
| | | cursor: pointer; |
| | | |
| | | img { |
| | | position: relative; |
| | | transition: all 0.5s; |
| | | width: 24px; |
| | | height: 24px; |
| | | vertical-align: middle; |
| | | margin-right: 10px; |
| | | image-rendering: -moz-crisp-edges; |
| | | image-rendering: -o-crisp-edges; |
| | | image-rendering: -webkit-optimize-contrast; |
| | | image-rendering: crisp-edges; |
| | | -ms-interpolation-mode: nearest-neighbor; |
| | | } |
| | | |
| | | span { |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | font-size: 14px; |
| | | color: #2f2f2f; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | class moveWindow { |
| | | constructor(data) { |
| | | this.id = data.id; |
| | | this.start = 0; |
| | | this.end = 0; |
| | | this.domHeight = 0; |
| | | this.domMove = null; |
| | | this.openValue = false; |
| | | this.useHeight = data.minHeight; |
| | | this.maxHeight = data.maxHeight; |
| | | this.height = data.minHeight; |
| | | this.critical = data.critical; |
| | | let that = this; |
| | | this.fn = |
| | | data.fn || |
| | | function (res) { |
| | | console.log("未设置回调函数"); |
| | | console.log(res); |
| | | }; |
| | | |
| | | this.ListenerTouchmove = function (window) { |
| | | let moseHeight = window.changedTouches[0].clientY; |
| | | // let windowHeight = document.body.clientHeight; //屏幕宽度 |
| | | let endOn = moseHeight; |
| | | let cha = +that.domHeight + that.start - +endOn; |
| | | if (cha >= that.maxHeight) { |
| | | cha = that.maxHeight; |
| | | } else if (cha <= that.useHeight) { |
| | | cha = that.useHeight; |
| | | } |
| | | let d = { |
| | | state: "on", |
| | | height: cha, |
| | | }; |
| | | that.fn(d); |
| | | }; |
| | | this.ListenerTouchstart = function (window) { |
| | | let moseHeight = window.changedTouches[0].clientY; |
| | | that.start = moseHeight; |
| | | that.domHeight = document |
| | | .getElementById(that.id) |
| | | .style.cssText.split("px")[0] |
| | | .split("height:")[1]; |
| | | }; |
| | | this.ListenerTouchend = function (window) { |
| | | let moseHeight = window.changedTouches[0].clientY; |
| | | that.end = moseHeight; |
| | | let cha, states; |
| | | if (that.end >= that.start) { |
| | | states = false; //方向 |
| | | cha = that.end - that.start; |
| | | } else { |
| | | states = true; //方向 |
| | | cha = that.start - that.end; |
| | | } |
| | | if (cha >= that.critical) { |
| | | //高 |
| | | that.opens(states, true); //程度 |
| | | } else if (cha < that.critical) { |
| | | //低 |
| | | that.opens(states, false); //程度 |
| | | } |
| | | }; |
| | | return this; |
| | | } |
| | | //启动监听事件 |
| | | init() { |
| | | // this.domMove = document.getElementById(this.id); |
| | | let that = this; |
| | | this.checkDom(that.id, (dom) => { |
| | | //检测是否有dom |
| | | that.domMove = dom; |
| | | that.domMove.addEventListener("touchmove", that.ListenerTouchmove); |
| | | // 结束位置靠滑动距离判断 |
| | | that.domMove.addEventListener("touchstart", that.ListenerTouchstart); |
| | | that.domMove.addEventListener("touchend", that.ListenerTouchend); |
| | | }); |
| | | } |
| | | //关闭监听事件 |
| | | closeInit() { |
| | | this.domMove = document.getElementById(this.id); |
| | | this.domMove.removeEventListener("touchmove", this.ListenerTouchmove); |
| | | // 结束位置靠滑动距离判断 |
| | | this.domMove.removeEventListener("touchstart", this.ListenerTouchstart); |
| | | this.domMove.removeEventListener("touchend", this.ListenerTouchend); |
| | | } |
| | | //输出事件 |
| | | opens(val, chengdu) { |
| | | if (chengdu) { |
| | | this.openValue = val; |
| | | if (val) { |
| | | this.height = this.maxHeight; |
| | | } else { |
| | | this.height = this.useHeight; |
| | | } |
| | | } else { |
| | | this.height = this.domHeight; |
| | | } |
| | | let d = { |
| | | state: this.openValue, |
| | | height: this.height, |
| | | }; |
| | | // console.log(val, this.height); |
| | | this.fn(d); |
| | | } |
| | | changeHeight() { |
| | | //抛出切换方法 |
| | | this.openValue = !this.openValue; |
| | | if (this.openValue) { |
| | | this.height = this.maxHeight; |
| | | } else { |
| | | this.height = this.useHeight; |
| | | } |
| | | let d = { |
| | | state: this.openValue, |
| | | height: this.height, |
| | | }; |
| | | // console.log(val, this.height); |
| | | this.fn(d); |
| | | } |
| | | checkDom(name, fn) { |
| | | // 声明定时器 |
| | | var timer = null; |
| | | // 检查dom是否执行完成 |
| | | function checkDom() { |
| | | // let dom = that.$refs[name]; |
| | | let dom = document.getElementById(name); |
| | | if (dom) { |
| | | // 执行dom加载完成后的操作 |
| | | // 清除定时器 |
| | | if (!timer) { |
| | | clearTimeout(timer); |
| | | } |
| | | if (fn) { |
| | | //回调函数 |
| | | fn(dom); |
| | | return; |
| | | } else { |
| | | return dom; |
| | | } |
| | | } else { |
| | | // 自我调用 |
| | | timer = setTimeout(checkDom, 100); |
| | | } |
| | | } |
| | | // 首次执行 |
| | | checkDom(); |
| | | } |
| | | // 结束位置是一半判断 |
| | | // domMove.addEventListener("touchend", function (window) { |
| | | // let moseHeight = window.changedTouches[0].clientY; |
| | | // let windowHeight = document.body.clientHeight; |
| | | // let cha = windowHeight - moseHeight; |
| | | // console.log(cha, "最后位置"); |
| | | // let centerPoint = |
| | | // (windowHeight / 2 - +that.useHeight) / 2 + +that.useHeight; |
| | | // if (cha >= centerPoint) { |
| | | // cha = windowHeight / 2; |
| | | // } else if (cha < centerPoint) { |
| | | // cha = that.useHeight; |
| | | // } |
| | | // that.height = cha; |
| | | // }); |
| | | } |
| | | |
| | | export default moveWindow; |
| | |
| | | ], |
| | | // areaLayer: null, |
| | | // mapCenter: [115.871863, 28.743861, 160.0], |
| | | // mapCenter: [114.04062292 - 0.00035, 27.62666834 + 0.0025, 160.0], |
| | | mapCenter: [116.35381525 - 0.00035, 27.95839468 + 0.0025, 160.0], |
| | | mapCenter: [114.04062292 - 0.00035, 27.62666834 + 0.0025, 160.0], |
| | | // mapCenter: [116.35381525 - 0.00035, 27.95839468 + 0.0025, 160.0], |
| | | // 控制4层缩放 |
| | | // onelayerNum: 80, |
| | | // towlayerNum: 120, |
| | |
| | | |
| | | intervallayerNum: 15, |
| | | frislayertHeight: 160, // 默认高度 |
| | | useSuofang: true, //是否缩放 |
| | | useSuofang: false, //是否缩放 true 去掉了缩放, |
| | | addOthers: true, //加入了活动底图以及抚州底图 |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | var that = this; |
| | | |
| | | // let viewer; |
| | | if (this.addOthers) { |
| | | //抚州视角数据 |
| | | this.mapCenter = [116.35381525 - 0.00035, 27.95839468 + 0.0025, 160.0]; |
| | | this.onelayerNum = 100; |
| | | this.towlayerNum = 300; |
| | | this.threelayerNum = 500; |
| | | this.forlayerNum = 700; |
| | | this.fivelayerNum = null; |
| | | this.sixlayerNum = null; |
| | | |
| | | this.intervallayerNum = 100; |
| | | this.frislayertHeight = 700; // 默认高度 |
| | | } |
| | | window.initViewer = () => { |
| | | global.viewer = new global.DC.Viewer("mobile-viewer-container", { |
| | | contextOptions: { |
| | |
| | | // conBack(200); |
| | | // } |
| | | // const usMun = that.forlayerNum ? that.forlayerNum : that.threelayerNum; |
| | | const usMun = that.sixlayerNum; |
| | | const usMun = that.sixlayerNum |
| | | ? that.sixlayerNum |
| | | : that.fivelayerNum |
| | | ? that.fivelayerNum |
| | | : that.forlayerNum; |
| | | if (window.height1s > usMun && isSet) { |
| | | if (that.useSuofang) { |
| | | return; |
| | |
| | | }; |
| | | window.butbut = function () { |
| | | // return; |
| | | if (that.useSuofang) { |
| | | return; |
| | | } |
| | | // if (that.useSuofang) { |
| | | // return; |
| | | // } |
| | | // 放大 |
| | | document.querySelector(".dc-zoom-controller").children[0].onclick = |
| | | function () { |
| | | if (that.useSuofang) { |
| | | return; |
| | | } |
| | | if (that.dimension == "2.5D") { |
| | | window.height2s = Math.ceil( |
| | | global.viewer.camera.positionCartographic.height |
| | |
| | | // 缩小 |
| | | document.querySelector(".dc-zoom-controller").children[2].onclick = |
| | | function () { |
| | | if (that.useSuofang) { |
| | | return; |
| | | } |
| | | if (that.dimension == "2.5D") { |
| | | window.height3s = Math.ceil( |
| | | global.viewer.camera.positionCartographic.height |
| | |
| | | }; |
| | | var isCameraTime = null; |
| | | global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, (e) => { |
| | | // window.height4s = Math.ceil( |
| | | // global.viewer.camera.positionCartographic.height |
| | | // ); |
| | | // if (ii == 1 && startHeight == 0) { |
| | | // startHeight = window.height4s; |
| | | // } |
| | | // ii++; |
| | | // cutHeight = window.height4s - startHeight; |
| | | // that.heights = window.height4s; |
| | | // that.heights1 = cutHeight; |
| | | // console.log(cutHeight); |
| | | |
| | | if (that.useSuofang) { |
| | | return; |
| | | } |
| | |
| | | } |
| | | ii++; |
| | | cutHeight = window.height4s - startHeight; |
| | | that.heights = window.height4s; |
| | | that.heights1 = cutHeight; |
| | | // console.log(cutHeight); |
| | | // that.heights = window.height4s; |
| | | // that.heights1 = cutHeight; |
| | | // return; |
| | | if (isCameraTime) { |
| | | clearTimeout(isCameraTime); |
| | |
| | | that.$store.commit("set_zoomRange", [ |
| | | that.onelayerNum, |
| | | // that.forlayerNum ? that.forlayerNum : that.threelayerNum, |
| | | that.sixlayerNum, |
| | | that.sixlayerNum |
| | | ? that.sixlayerNum |
| | | : that.fivelayerNum |
| | | ? that.fivelayerNum |
| | | : that.forlayerNum, |
| | | that.useSuofang, |
| | | that.addOthers, |
| | | ]); // 送入移动端缩放范围 |
| | | that.$store.commit("MSET_DIMENSION", "2.5D"); // 切换2.5D设置 |
| | | } else if (that.dimension == "3D") { |
| | |
| | | maximumLevel: 18 |
| | | }) |
| | | ) |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | url: "http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS", |
| | | layer: "fzsw2019", |
| | | style: "default", |
| | | tileMatrixSetID: "default028mm", |
| | | format: "image/jpgpng", |
| | | tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(), |
| | | maximumLevel: 19, |
| | | tileMatrixLabels: [ |
| | | "0", |
| | | "1", |
| | | "2", |
| | | "3", |
| | | "4", |
| | | "5", |
| | | "6", |
| | | "7", |
| | | "8", |
| | | "9", |
| | | "10", |
| | | "11", |
| | | "12", |
| | | "13", |
| | | "14", |
| | | "15", |
| | | "16", |
| | | "17", |
| | | "18", |
| | | "19", |
| | | ], |
| | | }) |
| | | ); |
| | | |
| | | window.tilesetLayer.show = false // 隐藏3d图形 |
| | | window.newLayer = window.usetowpointfive() // 添加2.5d图形贴片 |
| | | window.wallLayer.show = false // 打开瀑布 |
| | | window.startPointFn() // 移动默认视角 |
| | | window.areaLayer.show = true // 绿布 |
| | | if (state.zoomRange[2]) { |
| | | if (state.zoomRange[3]) { |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | url: "http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS", |
| | | layer: "fzsw2019", |
| | | style: "default", |
| | | tileMatrixSetID: "default028mm", |
| | | format: "image/jpgpng", |
| | | tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(), |
| | | maximumLevel: 19, |
| | | tileMatrixLabels: [ |
| | | "0", |
| | | "1", |
| | | "2", |
| | | "3", |
| | | "4", |
| | | "5", |
| | | "6", |
| | | "7", |
| | | "8", |
| | | "9", |
| | | "10", |
| | | "11", |
| | | "12", |
| | | "13", |
| | | "14", |
| | | "15", |
| | | "16", |
| | | "17", |
| | | "18", |
| | | "19", |
| | | ], |
| | | }) |
| | | ); |
| | | // 2.5D视角限制 |
| | | // global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 50 |
| | | // // 最大 |
| | |
| | | window.drawALineLayerMany = null |
| | | state.isOpenDrawALineMany = false |
| | | } |
| | | if (window.drawALineLayerMany) { |
| | | window.drawALineLayerMany.remove() |
| | | window.drawALineLayerMany = null |
| | | if (window.drawAPointLayerMany) { |
| | | window.drawAPointLayerMany.remove() |
| | | window.drawAPointLayerMany = null |
| | | state.isOpenDrawALineMany = false |
| | | } |
| | | }, |