From 7a7608d68227404c2cee81589a0f53bd0d9a4c78 Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期一, 20 五月 2024 18:43:04 +0800 Subject: [PATCH] 调整时空地图 --- src/pages/characterMap/characterMap.vue | 195 +++++++++++++++++++++++++----------------------- 1 files changed, 103 insertions(+), 92 deletions(-) diff --git a/src/pages/characterMap/characterMap.vue b/src/pages/characterMap/characterMap.vue index 4807c5a..b613e8a 100644 --- a/src/pages/characterMap/characterMap.vue +++ b/src/pages/characterMap/characterMap.vue @@ -1,38 +1,28 @@ <template> - <view> - <headNav - :idIndex="idIndex" - text="涓尰浜虹墿鏁版嵁搴�" - /> - <el-button - class="getBack" - @click="getBack" - >杩斿洖</el-button> - <view - class="" - style="position: relative" - > + <view style="width: 100%;height: 100%;display: flex;flex-direction: column;"> + <headNav :idIndex="1 + ''" text="涓尰浜虹墿鏁版嵁搴�" /> + <el-button class="getBack" @click="goBack">杩斿洖</el-button> + <view style="flex: 1;overflow: hidden;"> <!-- 鍦板浘 --> <!-- <view id="spaceTime" style="height: 90vh;width: 100%;position: relative;"></view> --> <div id="map"></div> <!-- 璇︽儏 --> - <el-dialog - class="particulars" - :visible.sync="menuNav" - :modal="false" - > + <el-dialog class="particulars" :visible.sync="menuNav" :modal="false"> <view class="font-family" style="font-size: 0.26rem; padding-top: 0.16rem; font-weight: bold" - >{{ activityInfo.participants }}</view> - <ul style=" + >{{ activityInfo.participants }}</view + > + <ul + style=" border-bottom: 0.01rem solid #d8d8d8; padding: 0.16rem 0; font-size: 0.14rem; font-weight: 400; line-height: 0.28rem; - "> + " + > <li>鍑虹敓浜巤{ basicInfo.nativePlace }}</li> <li> {{ @@ -44,12 +34,14 @@ }} </li> </ul> - <ul style=" + <ul + style=" margin: 0.31rem 0 0.11rem 0; font-size: 0.14rem; font-weight: 400; line-height: 0.28rem; - "> + " + > <li>娲诲姩鍚嶇О锛歿{ activityInfo.activityName }}</li> <li>娲诲姩鍦扮偣锛歿{ activityInfo.activityAddr }}</li> <li>娲诲姩鍖洪棿锛歿{ activityInfo.time }}</li> @@ -61,14 +53,10 @@ src="https://img0.baidu.com/it/u=1845740325,2917001370&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1711731600&t=0b208ab46e1d33aa81ac31dd6bf627be" alt="" /> --> - <div - class="box" - style="width: 80%" - > - <span - class="span" - :style="{ marginLeft: spanML + 'rem' }" - >{{ span }}骞�</span> + <div class="box" style="width: 80%"> + <span class="span" :style="{ marginLeft: spanML + 'rem' }" + >{{ span }}骞�</span + > <div class="scales"> <view v-for="(item, index) in yearArr" @@ -78,10 +66,7 @@ ></view> </div> <div class="MX"></div> - <div - class="cursor" - :style="{ marginLeft: cursorML + 'rem' }" - ></div> + <div class="cursor" :style="{ marginLeft: cursorML + 'rem' }"></div> </div> </el-dialog> </view> @@ -92,8 +77,8 @@ import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; import { loadBMap } from "@/static/map.js"; -import "leaflet.chinatmsproviders"; import L from "leaflet"; +import "leaflet.chinatmsproviders"; import { getPersonInfo } from "@/api/index.js"; export default { data() { @@ -110,7 +95,7 @@ spanML: 0, cursorML: -0.05, activityInfo: {}, - basicInfo: {}, + basicInfo: {} }; }, @@ -132,7 +117,7 @@ initMap(info) { var map = L.map("map", { attributionControl: false, - preferCanvas: true, + preferCanvas: true }).setView([35.91667, 110.41667], 5); // L.tileLayer( @@ -143,26 +128,26 @@ .chinaProvider("TianDiTu.Normal.Map", { key: "76bc34ead7e30e663a4eded8aeaf5860", maxZoom: 18, - minZoom: 5, + minZoom: 5 }) .addTo(map); let DefaultIcon1 = L.icon({ iconUrl: this.icoName, iconSize: [24, 41], // 鍥炬爣鐨勫ぇ灏� 銆愬��1锛屽��2銆� 涓哄叿浣撲綘鑷畾涔夊浘鏍囩殑灏哄锛屾瘮濡傛垜鍥炬爣灏哄鏄�32脳52锛岃〃绀鸿鍥炬爣锛氬搴�32鍍忕礌锛岄珮搴︼細52鍍忕礌锛岄偅涔堝��1:灏辨槸32锛屽��2锛氬氨鏄�52 iconAnchor: [24, 41], // 鍥炬爣灏嗗搴旀爣璁扮偣鐨勪綅缃� 杩欎釜鏄噸鐐癸紝 銆愬��1锛屽��2銆戯紝鍊�1锛氫负鍥炬爣鍧愭爣绗竴涓��(鍗�32)鐨勪竴鍗婏紝鍊�2锛氫负鍥炬爣鍧愭爣绗簩涓��(鍗�52) - popupAnchor: [1, -24], // 璇ョ偣鏄浉瀵逛簬iconAnchor寮瑰嚭淇℃伅鐨勪綅缃� 杩欎釜鏄垜鎵嬪姩璋冨嚭鏉ョ殑锛屾枃妗i粯璁ゅ師濮嬪�兼槸[-1锛�-76]锛屾垜鏄幓涓�鍗婂�硷紝鍙栦竴鍗婂�艰皟鍑烘潵鐨� + popupAnchor: [1, -24] // 璇ョ偣鏄浉瀵逛簬iconAnchor寮瑰嚭淇℃伅鐨勪綅缃� 杩欎釜鏄垜鎵嬪姩璋冨嚭鏉ョ殑锛屾枃妗i粯璁ゅ師濮嬪�兼槸[-1锛�-76]锛屾垜鏄幓涓�鍗婂�硷紝鍙栦竴鍗婂�艰皟鍑烘潵鐨� }); let icon = L.divIcon({ - html: "<div class='map-circle-name'></div>", + html: "<div class='map-circle-name ripple'></div>", iconSize: [80, 80], - className: "map-circle", + className: "map-circle" }); this.map = map; if (info && info.length) { for (let i = 0; i < info.length; i++) { const item = info[i]; const marker1 = L.marker([item.ycoord, item.xcoord], { - icon: icon, + icon: icon }).addTo(map); marker1.on("click", (e) => { this.menuNav = true; @@ -173,8 +158,8 @@ }, // 杩斿洖鎸夐挳 - getBack() { - uni.navigateBack(); + goBack() { + this.$router.go(-1); }, aaa() { // 娓叉煋姣嶇嚎 @@ -194,7 +179,7 @@ getPersonInfoFun() { getPersonInfo({ id: this.$route.query.id, - type: "PERSON_SPACE_TIME", + type: "PERSON_SPACE_TIME" }).then((res) => { console.log(res, "res"); this.initMap(res.object.personSpaceTimeList); @@ -204,7 +189,7 @@ getBasicInfo() { getPersonInfo({ id: this.$route.query.id, - type: "PERSON_BASIC", + type: "PERSON_BASIC" }).then((res) => { console.log(res, "res"); this.basicInfo.name = res.object.personFieldList.find( @@ -272,40 +257,40 @@ const data = [ { name: "娴烽棬", - value: 9, + value: 9 }, { name: "閲戞槍", - value: 19, + value: 19 }, { name: "娉夊窞", - value: 21, + value: 21 }, { name: "琛㈠窞", - value: 177, + value: 177 }, { name: "寤婂潑", - value: 193, + value: 193 }, { name: "鑿忔辰", - value: 194, + value: 194 }, { name: "鍚堣偉", - value: 229, + value: 229 }, { name: "姝︽眽", - value: 273, + value: 273 }, { name: "鍟婁笁澶х熆鍙婅鍒板簳鏄皝寤哄+澶уか澶у笀鍌呭氨", - value: 279, - }, + value: 279 + } ]; const geoCoordMap = { 娴烽棬: [121.15, 31.89], @@ -335,7 +320,7 @@ 鑿忔辰: [115.480656, 35.23375], 鍚堣偉: [117.27, 31.86], 姝︽眽: ["浣犲ソ", 30.52], - 鍟婁笁澶х熆鍙婅鍒板簳鏄皝寤哄+澶уか澶у笀鍌呭氨: [125.03, 46.58], + 鍟婁笁澶х熆鍙婅鍒板簳鏄皝寤哄+澶уか澶у笀鍌呭氨: [125.03, 46.58] }; const convertData = function (data) { var res = []; @@ -344,7 +329,7 @@ if (geoCoord) { res.push({ name: data[i].name, - value: geoCoord.concat(data[i].value), + value: geoCoord.concat(data[i].value) }); } } @@ -352,7 +337,7 @@ }; option = { tooltip: { - trigger: "item", + trigger: "item" }, bmap: { center: [104.114129, 37.550339], // 璋冩暣鍦板浘涓績鐐逛綅缃� @@ -364,60 +349,60 @@ featureType: "water", elementType: "all", stylers: { - color: "#d1d1d1", - }, + color: "#d1d1d1" + } }, { featureType: "land", elementType: "all", stylers: { - color: "#f3f3f3", - }, + color: "#f3f3f3" + } }, { featureType: "manmade", elementType: "all", stylers: { - color: "#d1d1d1", - }, + color: "#d1d1d1" + } }, { featureType: "local", elementType: "all", stylers: { - color: "#d1d1d1", - }, + color: "#d1d1d1" + } }, { featureType: "arterial", elementType: "labels", stylers: { - visibility: "off", - }, + visibility: "off" + } }, { featureType: "boundary", elementType: "all", stylers: { - color: "#fefefe", - }, + color: "#fefefe" + } }, { featureType: "building", elementType: "all", stylers: { - color: "#d1d1d1", - }, + color: "#d1d1d1" + } }, { featureType: "label", elementType: "labels.text.fill", stylers: { - color: "#999999", - }, - }, - ], - }, + color: "#999999" + } + } + ] + } }, series: [ { @@ -434,11 +419,11 @@ return val[2] / 10; }, encode: { - value: 2, + value: 2 }, showEffectOn: "render", rippleEffect: { - brushType: "stroke", + brushType: "stroke" }, label: { formatter: "{b}", @@ -456,18 +441,18 @@ }, show: true, fontSize: 12, - borderRadius: 30, + borderRadius: 30 }, itemStyle: { shadowBlur: 10, - shadowColor: "#333", + shadowColor: "#333" }, emphasis: { - scale: true, + scale: true }, - zlevel: 1, - }, - ], + zlevel: 1 + } + ] }; let menuNav1 = this.menuNav; let menuNav2 = this.menuNav; @@ -493,8 +478,8 @@ this.menuNav = !this.menuNav; // 鏃剁┖鍦板浘鐨勬暟鎹� console.log(Arr); - }, - }, + } + } }; </script> @@ -504,7 +489,7 @@ width: 0.6rem; height: 0.24rem; top: 1rem; - left: 0.24rem; + left: 0.6rem; z-index: 99999; font-size: 0.12rem; display: flex; @@ -598,7 +583,7 @@ height: 100%; } #map { - height: 1080px; + height: 100%; width: 100%; margin: 0 auto; font-size: 14px !important; @@ -607,6 +592,32 @@ width: 20px; height: 20px; border-radius: 50%; - background-color: #2070bc; + background-color: rgb(222, 142, 102); +} + +::v-deep .ripple { + border-radius: 50%; + position: relative; + overflow: hidden; +} + +::v-deep .ripple::before { + content: ""; + position: absolute; + top: 50%; + left: 50%; + width: 150%; /* Ensure it covers the entire parent */ + height: 150%; + background: rgba(255, 255, 255, 0.5); + border-radius: 50%; + transform: translate(-50%, -50%) scale(1); + animation: ripple-animation 1s infinite linear; +} + +@keyframes ripple-animation { + to { + transform: translate(-50%, -50%) scale(0); + opacity: 0; + } } </style> -- Gitblit v1.9.1