From bf9ae048b9006d58f29674b9d70ee01d8e3c0b59 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 04 Dec 2023 17:10:18 +0800
Subject: [PATCH] 移动端,不同校区的逻辑适配
---
src/components/mobilemap/index.vue | 124 +++++++++++++++++++++++++++++--
src/components/mobileCortrolButtom/index.vue | 74 ++----------------
src/components/mobileLeftNav/index.vue | 23 +++++
src/components/map/index.vue | 1
4 files changed, 146 insertions(+), 76 deletions(-)
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 47e1069..90b5bea 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -44,7 +44,6 @@
let architecturePolygon = null
let select = null
-
let campusLayers = [
{
key: 1,
diff --git a/src/components/mobileCortrolButtom/index.vue b/src/components/mobileCortrolButtom/index.vue
index 9d5a97d..88dffdb 100644
--- a/src/components/mobileCortrolButtom/index.vue
+++ b/src/components/mobileCortrolButtom/index.vue
@@ -4,15 +4,16 @@
mobileCortrolButtom
-->
<!-- <div class="m-l-inbut" @click="mubiao"><i class="el-icon-s-help"></i></div> -->
- <div class="m-l-inbut" v-show="false">
+ <div class="m-l-inbut" v-show="true">
<!-- <i class="el-icon-s-flag"></i> -->
<el-dropdown trigger="click" @command="handleCommand">
<span class="el-dropdown-link icons">
<i class="el-icon-s-flag icon"></i>
</span>
<el-dropdown-menu slot="dropdown">
- <el-dropdown-item v-for="(item, index) in tabTable" :key="index" :command="item">{{ item.title
- }}</el-dropdown-item>
+ <el-dropdown-item v-for="(item, index) in tabTable" :key="index" :command="item">
+ {{ item.dictValue }}
+ </el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
@@ -81,7 +82,7 @@
])
},
created () {
- // this.getStreet();
+ this.getStreet()
},
mounted () {
// eslint-disable-next-line no-undef
@@ -220,44 +221,7 @@
// 测试fllyTo
},
handleCommand (command) {
- const that = this
- const position = [+command.lnt + 0.00027, +command.lat + 0.00048, 450]
- // 定位
- // this.$store.commit("MSETCC_SETCC", {
- // lntLat: position,
- // });
- // this.$store.dispatch("mapFlyTo", {
- // //飞入
- // lntLat: [...position, 450],
- // heading: 0,
- // pitch: -90,
- // roll: 0,
- // noOpen: true,
- // });
- global.viewer.camera.setView({
- // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
- // fromDegrees()方法,将经纬度和高程转换为世界坐标
- // eslint-disable-next-line new-cap
- destination: new global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
- // 114.0351,
- // 27.6314,
- // 200.0
- position[0],
- position[1],
- position[2]
- ),
- orientation: {
- heading: global.DC.Namespace.Cesium.Math.toRadians(
- that.dimensionData.heading
- ),
- pitch: global.DC.Namespace.Cesium.Math.toRadians(
- that.dimensionData.pitch
- ),
- // heading: data.heading,
- // pitch: data.pitch,
- roll: that.dimensionData.roll
- }
- })
+ this.$parent.setCampusValue(command.dictKey)
},
openBigPopupAfter () {
this.$store.commit('MSET_BIGPOPUPAFTER', true)
@@ -274,30 +238,10 @@
// });
},
getStreet () {
- const that = this
getListarc().then((res) => {
- const title = []
- const data = res.data.data
- for (let k = 0; k < data.length; k++) {
- title.push({
- title: data[k].dictValue,
- flag: false,
- key: data[k].dictKey,
- child: [],
- lnt: that.ccData[k].lnt,
- lat: that.ccData[k].lat
- })
- }
- // res.data.data.forEach((item) => {
- // title.push({
- // title: item.dictValue,
- // flag: false,
- // key: item.dictKey,
- // child: [],
- // });
- // });
- this.tabTable = title
- this.$store.commit('MSET_POPUPTABLENAME', title)
+ this.tabTable = res.data.data
+
+ this.$parent.setCampusValue(res.data.data[0].dictKey)
})
}
},
diff --git a/src/components/mobileLeftNav/index.vue b/src/components/mobileLeftNav/index.vue
index fb13256..c37027b 100644
--- a/src/components/mobileLeftNav/index.vue
+++ b/src/components/mobileLeftNav/index.vue
@@ -271,12 +271,31 @@
// });
// },
- initialize () {
+ initialize (campus) {
+ var that = this
+
+ this.leftNavData[0].flag = true
+ this.leftNavData[0].img = this.leftNavData[0].checked
+ this.leftNavData[4].flag = true
+ this.leftNavData[4].img = this.leftNavData[4].checked
+
+ this.leftNavBQ.setVisible(true)
+ this.leftNavCR.setVisible(true)
+
+ this.leftNavBQ.getSource().clear()
+ this.leftNavDL.getSource().clear()
+ this.leftNavSJ.getSource().clear()
+ this.leftNavHD.getSource().clear()
+ this.leftNavTC.getSource().clear()
+ this.leftNavCR.getSource().clear()
+
var that = this
const ourNum = that.leftNavData.length
for (let n = 0; n < ourNum; n++) {
const ourD = that.leftNavData[n]
- const d = ourD.type ? { lifetype: ourD.type } : {}
+ const d = ourD.type ? { lifetype: ourD.type, campus } : {
+ campus
+ }
ourD.methods(d).then((res) => {
let imgUrl = null
let sateName = null
diff --git a/src/components/mobilemap/index.vue b/src/components/mobilemap/index.vue
index 7ed28b2..b5675ce 100644
--- a/src/components/mobilemap/index.vue
+++ b/src/components/mobilemap/index.vue
@@ -38,18 +38,62 @@
import { mapGetters } from 'vuex'
import { getBuildClock } from '@/api/mobile/buildsClock/buildsClock' // 楼栋详情
+import OlView from "ol/View.js"
+
+import OlLayerTile from "ol/layer/Tile.js"
+
+import XYZ from "ol/source/XYZ"
+
import VectorLayer from "ol/layer/Vector"
import VectorSource from "ol/source/Vector"
+import { OverviewMap, defaults } from "ol/control"
import { Polygon } from 'ol/geom'
import Feature from 'ol/Feature.js'
import Point from 'ol/geom/Point.js'
import { Icon, Style, Fill, Text, Stroke, Circle } from 'ol/style.js'
+import TilegridTileGrid from "ol/tilegrid/TileGrid"
let architecturePolygon = null
let select = null
let sitePositionLayer = null
+
+let campusLayers = [
+ {
+ key: 1,
+ tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksd1/MapServer/tile/{z}/{y}/{x}",
+ center: [112.63716735643777, -0.087080937773012637833],
+ resolution: 0.00014276766034981682,
+ origin: [-400.0, 399.9999999999998],
+ resolutions: [
+ 0.00019035688046642243, 0.00014276766034981682, 0.00009517844023321122,
+ 0.00004758922011660561,
+ ],
+ fullExtent: [
+ 112.51302281804038, -0.17416638494176828, 112.76131189483516,
+ 0.000004509395743004334,
+ ],
+ polygonUrl: 'https://fkxt.jxstnu.edu.cn/changjing/lkarcgisapp'
+ },
+ {
+ key: 2,
+ tileUrl: "https://dev.jxpskj.com:8023/arcgis156/rest/services/cc/MapServer/tile/{z}/{y}/{x}",
+ center: [115.79624983, 28.6416099],
+ resolution: 0.000007138383017490841,
+ origin: [-400.0, 400.0],
+ resolutions: [
+ 0.000014276766034981682, 0.000007138383017490841, 0.00000475892201166056,
+ 0.00000237946100583028,
+ ],
+ fullExtent: [
+ 115.76861782444642, 28.63584422760626, 115.82432471553928, 28.663308794331794,
+ ],
+ polygonUrl: ''
+ }
+]
+
+let campusLoadLayer
export default {
name: 'mobilemapBox',
@@ -87,7 +131,8 @@
width: 0,
height: 0
},
- map2D: this.$store.state.openlayerData.openlayers.map2D
+ map2D: this.$store.state.openlayerData.openlayers.map2D,
+ campusValue: ''
}
},
@@ -102,18 +147,26 @@
this.bigPopup.height = '0'
this.bigPopup.display = 'none'
}
+ },
+
+ campusValue: {
+ handler (newData) {
+ this.$nextTick(() => {
+ this.campusCut(newData)
+
+ this.$refs.mobileLeftNav.initialize(newData)
+
+ this.createdLayers(newData)
+ })
+ }
}
},
-
mounted () {
const that = this
this.map2D.setTarget('sceneview')
- this.map2D.getView().setResolution(0.00009517844023321122)
this.$nextTick(() => {
- that.$refs.mobileLeftNav.initialize()
-
sitePositionLayer = new VectorLayer({
// 图标图层
zIndex: 99,
@@ -122,7 +175,6 @@
this.map2D.addLayer(sitePositionLayer)
- this.createdLayers()
this.map2D.on("singleclick", function (event) {
let flag = true
@@ -206,9 +258,13 @@
select = null
},
- createdLayers () {
+ createdLayers (campusKey) {
const that = this
+ let curCampus = campusLayers.find(item => item.key == campusKey)
+ if (architecturePolygon) {
+ this.map2D.removeLayer(architecturePolygon)
+ }
architecturePolygon = new VectorLayer({
// 图标图层
source: new VectorSource(),
@@ -218,7 +274,7 @@
axios
.get(
- 'https://fkxt.jxstnu.edu.cn/changjing/lkarcgisapp?where=1%3D1&text=&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&returnTrueCurves=false&resultOffset=&resultRecordCount=&f=pjson'
+ curCampus.polygonUrl + '?where=1%3D1&text=&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&returnTrueCurves=false&resultOffset=&resultRecordCount=&f=pjson'
)
.then((resultData) => {
resultData.data.features.forEach((item) => {
@@ -298,6 +354,58 @@
)
}
},
+
+ campusCut (campusKey) {
+ if (campusLoadLayer) this.map2D.removeLayer(campusLoadLayer)
+ let curCampus = campusLayers.find(item => item.key == campusKey)
+
+ const tileGrid = new TilegridTileGrid({
+ tileSize: 256,
+ origin: curCampus.origin,
+ extent: curCampus.fullExtent,
+ resolutions: curCampus.resolutions,
+ })
+ // 瓦片数据源
+ const tileArcGISXYZ = new XYZ({
+ tileGrid: tileGrid,
+ projection: "EPSG:4326",
+ url: curCampus.tileUrl,
+ })
+
+ campusLoadLayer = new OlLayerTile({
+ source: tileArcGISXYZ,
+ })
+
+ this.map2D.addLayer(campusLoadLayer)
+
+
+ this.map2D.controls = defaults().extend([
+ // 添加一个鹰眼控件
+ new OverviewMap({
+ // 实例化一个OverviewMap类的对象,并加入到地图中
+ collapsed: false,
+ view: new OlView({
+ // 初始化中心点坐标
+ center: curCampus.center,
+ }),
+ layers: [
+ campusLoadLayer
+ ]
+ })
+ ])
+
+ this.map2D.setView(new OlView({
+ // 初始化中心点坐标
+ center: curCampus.center,
+ resolution: curCampus.resolution,
+ projection: "EPSG:4326",
+ extent: curCampus.fullExtent,
+ }))
+ },
+
+ setCampusValue (val) {
+ this.campusValue = val
+ }
}
}
</script>
--
Gitblit v1.9.3