From e733164e1c779b3aef7245936b9daf7875bf791e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 14 Dec 2023 17:12:33 +0800
Subject: [PATCH] 解决屏幕缩放导致鼠标位置不准确的问题,右侧,切换校区后的显示BUG
---
src/components/map/index.vue | 166 +++++++++++++++++++++++++++++--------------------------
1 files changed, 88 insertions(+), 78 deletions(-)
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 8501a1e..73bdbc9 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -6,7 +6,7 @@
<mapPopup />
- <!-- <campusBuildingSearch ref="campusBuildingSearch" /> -->
+ <campusBuildingSearch ref="campusBuildingSearch" />
<campusNav ref="campusNavRoute" v-show="campusNavFlag" />
@@ -40,40 +40,41 @@
import { Icon, Style, Fill, Text, Stroke, Circle } from 'ol/style.js'
import TilegridTileGrid from "ol/tilegrid/TileGrid"
-
let architecturePolygon = null
let select = 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,
+ tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksdhjzxq/MapServer/tile/{z}/{y}/{x}",
+ center: [112.605918275550715, -0.0457081387615907618595],
+ resolution: 0.00003807137609328448,
origin: [-400.0, 399.9999999999998],
resolutions: [
- 0.00019035688046642243, 0.00014276766034981682, 0.00009517844023321122,
- 0.00004758922011660561,
+ 0.00015228550437313792, 0.00007614275218656896, 0.00003807137609328448,
+ 0.00001903568804664224, 0.00000951784402332112, 0.00000475892201166056
],
fullExtent: [
- 112.51302281804038, -0.17416638494176828, 112.76131189483516,
- 0.000004509395743004334,
- ]
+ 112.51303616638316, -0.103420786429659, 112.67880038471827,
+ 0.000004508906477476281
+ ],
+ 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],
+ tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksdflxq/MapServer/tile/{z}/{y}/{x}",
+ center: [112.6102242373625, -0.0741745423945008147645],
+ resolution: 0.00003807137609328448,
+ origin: [-400.0, 399.9999999999998],
resolutions: [
- 0.000014276766034981682, 0.000007138383017490841, 0.00000475892201166056,
- 0.00000237946100583028,
+ 0.00015228550437313792, 0.00007614275218656896, 0.00003807137609328448,
+ 0.00001903568804664224, 0.00000951784402332112, 0.00000475892201166056
],
fullExtent: [
- 115.76861782444642, 28.63584422760626, 115.82432471553928, 28.663308794331794,
- ]
+ 112.51302551881798, -0.16235359398493399, 112.72742295590702, 0.000004509195932360471
+ ],
+ polygonUrl: 'https://fkxt.jxstnu.edu.cn/changjing/fllkarcgisapp'
}
]
@@ -159,7 +160,22 @@
this.campusCut(newData)
this.$nextTick(() => {
+ this.$store.commit('SET_DETAILSPOPUP', false)
+ this.$store.commit('SET_MONITORPOPUP', false)
+ this.$store.commit('SET_PANORAMAPOPUP', false)
+
+ this.$store.dispatch('delVisitedViews', this.$route)
+
+ this.$store.commit('SET_ARCNAVBARFLAG', false)
+ this.$store.commit('SET_SEARCHPOPUPFLAG', false)
+
+ this.$router.push('/pcLayout/default')
+
this.$refs.leftNav.initialize(newData)
+
+ this.$refs.campusNavRoute.closeModel()
+
+ this.createdLayers(newData)
})
}
}
@@ -192,29 +208,30 @@
'orgNavBarFlag',
'arcNavBarFlag',
'searchPopupFlag',
- 'calenderShow'
+ 'calenderShow',
+ 'closeMapClick'
])
},
mounted () {
const that = this
- this.map2D.setTarget('viewer-container')
this.$nextTick(() => {
- this.$refs.leftNav.initialize()
-
- this.createdLayers()
+ this.map2D.setTarget('viewer-container')
that.map2D.on('pointermove', that.mouseMoveEvent)
this.map2D.on("singleclick", function (event) {
+ if (that.closeMapClick) return
+
let flag = true
+
that.map2D.forEachFeatureAtPixel(
- event.pixel,
+ [event.originalEvent.offsetX, event.originalEvent.offsetY],
(feature) => {
if (flag == false) {
return
}
- if (feature.values_.type == 'point') {
+ if (feature.values_.type == 'point' || feature.values_.type == 'navigationPoint') {
flag = false
}
@@ -224,9 +241,15 @@
})
})
},
+
methods: {
- createdLayers () {
+ createdLayers (campusKey) {
const that = this
+ let curCampus = campusLayers.find(item => item.key == campusKey)
+
+ if (architecturePolygon) {
+ this.map2D.removeLayer(architecturePolygon)
+ }
architecturePolygon = new VectorLayer({
// 图标图层
@@ -237,7 +260,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) => {
@@ -267,6 +290,8 @@
let flag = true
var that = this
+ if (that.closeMapClick) return
+
if (select != null && select.values_.type == 'polygon') {
select.setStyle(new Style({
@@ -280,19 +305,19 @@
select = null
that.map2D.forEachFeatureAtPixel(
- event.pixel,
+ [event.originalEvent.offsetX, event.originalEvent.offsetY],
(feature) => {
if (flag == false) {
return
}
- if (feature.values_.type == 'point') {
+ if (feature.values_.type == 'point' || feature.values_.type == 'navigationPoint') {
flag = false
return
}
- if (select != null) {
- if (feature != select) {
+ if (feature.values_.type == 'polygon') {
+ if (select != null && feature != select) {
select.setStyle(new Style({
fill: new Fill({
@@ -303,26 +328,27 @@
select = null
}
+
+ if (select == null) {
+ select = feature
+
+ select.setStyle(
+ new Style({
+
+ fill: new Fill({
+ color: 'rgba(108, 245, 113, 0.6)'
+ }),
+
+ stroke: new Stroke({
+ color: 'rgba(3, 255, 13, 1)',
+ width: 1,
+ }),
+
+ })
+ )
+ }
}
- if (select == null) {
- select = feature
-
- select.setStyle(
- new Style({
-
- fill: new Fill({
- color: 'rgba(108, 245, 113, 0.6)'
- }),
-
- stroke: new Stroke({
- color: 'rgba(3, 255, 13, 1)',
- width: 1,
- }),
-
- })
- )
- }
}
)
},
@@ -333,37 +359,21 @@
this.$store.commit('CLEAR_ALL', null)
- getDetail({ mechanismname: event.target.values_.attributes['楼栋号'] }).then((res) => {
+ getDetail({ mechanismname: event.target.values_.attributes['楼栋号'], campus: this.layoutElement.campusValue }).then((res) => {
if (JSON.stringify(res.data.data) == '{}') return
let result = res.data.data
- that.$store.commit('SET_MONITORPOPUP', false)
- that.$store.commit("SET_PANORAMAPOPUP", false)
+ let curLngLat = this.map2D.getCoordinateFromPixel([event.event.originalEvent.offsetX, event.event.originalEvent.offsetY])
- this.$store.commit('SET_STATENAME', result.mechanismname)
- this.$store.commit('SET_PANORAMAURL', result.panoramaurl)
- this.$store.commit('SET_INTRODUCETEXT', result.introduce)
-
- let imgArr = result.tpurl.split(',')
-
- this.$store.commit('SET_POPUPBGURL', imgArr[0])
- this.$store.commit('SET_POPUPIMGATLAS', imgArr)
- this.$store.commit('SET_POPUPQRURL', result.codeurl)
-
- this.$store.commit("SET_POINTPOSITION", [
- Number(event.event.coordinate[0]),
- Number(event.event.coordinate[1]),
- Number(0),
- Number(0),
- Number(-90),
- Number(0),
- ])
-
- this.$store.commit("SET_DETAILSPOPUP", true)
+ this.$store.dispatch('setOurDataInPoput', {
+ item: result,
+ lng: curLngLat[0],
+ lat: curLngLat[1]
+ })
this.openPopups({
- lng: Number(event.event.coordinate[0]),
- lat: Number(event.event.coordinate[1]),
+ lng: Number(curLngLat[0]),
+ lat: Number(curLngLat[1]),
item: result,
event
})
@@ -382,21 +392,21 @@
mapClick (e) {
this.$refs.campusNavRoute.shortcutShow(e)
- // this.$refs.campusBuildingSearch.shortcutShow(e)
+ this.$refs.campusBuildingSearch.shortcutShow(e)
},
campusCut (campusKey) {
if (campusLoadLayer) this.map2D.removeLayer(campusLoadLayer)
let curCampus = campusLayers.find(item => item.key == campusKey)
- const tileGrid = new TilegridTileGrid({
+ let tileGrid = new TilegridTileGrid({
tileSize: 256,
origin: curCampus.origin,
extent: curCampus.fullExtent,
resolutions: curCampus.resolutions,
})
// 瓦片数据源
- const tileArcGISXYZ = new XYZ({
+ let tileArcGISXYZ = new XYZ({
tileGrid: tileGrid,
projection: "EPSG:4326",
url: curCampus.tileUrl,
--
Gitblit v1.9.3