From 077feba634b75aee3c1fc8e561b2d2aeb95e3305 Mon Sep 17 00:00:00 2001 From: y505174330 <505174330@qq.com> Date: 星期六, 18 五月 2024 15:37:00 +0800 Subject: [PATCH] 1 --- src/pages/territory/territory.vue | 248 ++++++++++++++++++++++++++++--------------------- 1 files changed, 143 insertions(+), 105 deletions(-) diff --git a/src/pages/territory/territory.vue b/src/pages/territory/territory.vue index 8e94f77..d359b3d 100644 --- a/src/pages/territory/territory.vue +++ b/src/pages/territory/territory.vue @@ -1,7 +1,11 @@ <template> <view class="pageBox"> <!-- 椤堕儴瀵艰埅 --> - <headNav :idIndex="idIndex" text="涓尰鍦板煙鍖昏氨" /> + <headNav + :idIndex="idIndex" + text="涓尰鍦板煙鍖昏氨" + style="z-index:999" + /> <view class="flex flex-center" style="width: 100%; margin: 0.2rem 0 0.34rem; justify-content: flex-start" @@ -11,9 +15,14 @@ placehold="杈撳叆濮撳悕/鍒悕/鏈濅唬/浼犱富鑱屼笟鎼滅储" @onSearch="onSearch" :isAvancedTrue="false" + :keyword="keyword" /> <ul class="flex"> - <li style="" v-for="(item, index) in dynasty" :key="item.id"> + <li + style="" + v-for="(item, index) in dynasty" + :key="item.id" + > <view @click="SchoolClick(item.id)" class="flex flex-center font-family school" @@ -41,7 +50,10 @@ border-radius: 50%; " ></view> - <view class="" style="color: #2c2c2c; font-size: 0.12rem">{{ + <view + class="" + style="color: #2c2c2c; font-size: 0.12rem" + >{{ item.name }}</view> </view> @@ -61,7 +73,10 @@ top: 2.2rem; " > - <div slot="header" class="clearfix"> + <div + slot="header" + class="clearfix" + > <span>浜虹墿 ({{ SearchArr.length }})</span> <el-button style=" @@ -72,14 +87,26 @@ " @click="isSearch = false" type="text" - >鍏抽棴</el-button - > + >鍏抽棴</el-button> </div> - <view class="" style="overflow: auto; height: 2.5rem"> - <ul class="information" v-for="(item, index) in SearchArr" :key="index"> - <li style="font-size: 0.18rem; font-weight: 700">{{ item.name }}</li> - <li>鐢熷崚骞�: {{ item.birthAndDeath }}</li> - <li>鏉ユ簮: {{ item.source }}</li> + <view + class="" + style="overflow: auto; height: 2.5rem" + > + <ul + class="information" + v-for="(item, index) in SearchArr" + :key="index" + @click="showCard(item)" + > + <li style="font-size: 0.18rem; font-weight: 700"> + {{ item.name ? item.name : "-" }} + </li> + <li> + 鐢熷崚骞�: + {{ item.birthAndDeath ? item.birthAndDeath : "-" }} + </li> + <li>鏉ユ簮: {{ item.source ? item.source : "-" }}</li> <li v-if="SearchArr.length - 1 !== index" style="margin: 0.1rem 0; border-bottom: 1px solid #d8d8d8" @@ -99,8 +126,13 @@ " :style="{ top: isTop, left: isLeft }" > - <div slot="header" class="clearfix"> - <span>{{ information[0].content }}</span> + <div + slot="header" + class="clearfix" + > + <span v-if="currentMark">{{ + currentMark.name ? currentMark.name : "-" + }}</span> <el-button style=" float: right; @@ -110,24 +142,30 @@ " @click="isEchTrue = false" type="text" - >鍏抽棴</el-button - > + >鍏抽棴</el-button> </div> - <ul class="information"> - <li v-for="(item, index) in information" :key="index"> - {{ item.label }}: {{ item.content }} + <ul + class="information" + v-if="currentMark" + > + <li> + 濮撳悕: + {{ currentMark.name ? currentMark.name : "-" }} </li> + <li>鍒悕: {{ currentMark.nikeName ? currentMark.nikeName : "-" }}</li> + <li> + 绫嶈疮: {{ currentMark.nativePlace ? currentMark.nativePlace : "-" }} + </li> + <li>鍖诲鍒嗙: {{ currentMark.barnch ? currentMark.barnch : "-" }}</li> + <li>灏忎紶: {{ currentMark.medical ? currentMark.medical : "-" }}</li> </ul> <el-button class="flex" @click="viewMoreClick" style="width: 100%; padding: 3px 0; font-size: 0.12rem; color: #597aa5" type="text" - >鏌ョ湅鏇村>></el-button - > + >鏌ョ湅鏇村>></el-button> </el-card> - <!-- echarts鍦板浘 --> - <!-- <view id="main" style="width: 100vw; position: relative"></view> --> <div id="map"></div> <!-- 鏈濅唬 --> <view @@ -177,10 +215,13 @@ import L from "leaflet"; import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; +import "leaflet.chinatmsproviders"; +import { getRetrieval } from "@/api/index.js"; export default { data() { return { // echarts鍏冪礌鐐瑰嚮鏃跺嚭鏉ョ殑寮圭獥鍜屽潗鏍� + keyword: "", isEchTrue: false, isLeft: 0, isTop: 0, @@ -329,6 +370,7 @@ ], // 鎼滅储鍚庢槸鍚︽樉绀哄脊妗� isSearch: false, + currentMark: null, SearchArr: [ { id: 1, @@ -355,101 +397,94 @@ // this.innt(); // }); // }) - this.initMap(); + this.getDataList(); }, methods: { + showCard(info) { + console.log(info); + console.log(this.markerList); + console.log(this.map); + const item = this.markerList.find((f) => f.id == info.id); + var latlng = L.latLng(item.yCoord, item.xCoord); + this.map.setView(latlng, 10); + }, + getDataList() { + getRetrieval({ keyword: this.keyword, dynasty: "" }).then((res) => { + let markerList = []; + const listData = res.object.personList; + for (let i = 0; i < listData.length; i++) { + const item = listData[i]; + if (item.NATIVE_PLACE?.length > 0) { + item.NATIVE_PLACE.forEach((citem) => { + if (citem.xCoord && citem.yCoord) { + markerList.push({ ...citem, ...item }); + } + }); + } + } + this.initMap(markerList); + this.SearchArr = markerList.map((item) => ({ + birthAndDeath: item?.BIRTH_YEAR[0]?.content1 + ? item?.BIRTH_YEAR[0]?.content1 + + "-" + + item?.DEATH_YEAR[0]?.content1 + : "-", + name: item?.NAME[0]?.content1, + source: "-", + id: item.id, + })); + this.markerList = markerList; + }); + }, //鍒濆鍖栧湴鍥� - initMap() { - // var map = L.map("map", { - - // center: [34.26, 108.96], - - // zoom: 4, - - // maxZoom: 18, //鏈�澶х缉鏀惧眰绾� - - // minZoom: 1, //鏈�灏忕缉鏀惧眰绾� - - // tileSize: 256, //鍒囩墖澶у皬 - - // attributionControl: false, // 绉婚櫎鍙充笅瑙抣eaflet鏍囪瘑 - - // zoomControl: false, //绂佺敤 + - 鎸夐挳 - - // maxBounds: bounds, //璁剧疆杈圭晫 - - // preferCanvas: true, //榛樿浣跨敤svg娓叉煋锛岃缃甤anvas娓叉煋 - - // doubleClickZoom: false, //鍏抽棴鍙屽嚮缂╂斁 - - // // dragging: false, //榧犳爣绉诲姩浜嬩欢 - // }); + initMap(markerList) { var map = L.map("map", { - attributionControl: false, preferCanvas: true, - withPopup: L.latLng(34.261, 108.96), - }).setView([39.91667, 116.41667], 4); - - // L.tileLayer( - // "http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}" - // ).addTo(map); - L.tileLayer( - "http://t0.tianditu.gov.cn/vec_c/wmts?tk=36ef7d20eba483627b043f0909c493ee" - ).addTo(map); + attributionControl: false, + }).setView([39.91667, 116.41667], 3); L.tileLayer - .wmts( - "http://t{s}.tianditu.gov.cn/vec_c/wmts?tk=36ef7d20eba483627b043f0909c493ee", - { - layer: "vec", // 鐭㈤噺鍥惧眰 - style: "default", - tilematrixset: "c", // 缂╂斁绾у埆 - format: "tiles", - attribution: "Map Data © 2023 Tencent", - subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"], - } - ) + .chinaProvider("TianDiTu.Normal.Map", { + key: "76bc34ead7e30e663a4eded8aeaf5860", + maxZoom: 18, + minZoom: 3, + }) .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]锛屾垜鏄幓涓�鍗婂�硷紝鍙栦竴鍗婂�艰皟鍑烘潵鐨� }); - const marker1 = L.marker([34.261, 108.96], { - icon: DefaultIcon1, - }).addTo(map); - L.marker([39.90609, 116.38543], { - icon: DefaultIcon1, - }) - .addTo(map) - .bindPopup(this.popContent); //鍖椾含 - L.marker([29.55546, 106.5448], { - icon: DefaultIcon1, - }).addTo(map); // 閲嶅簡 - L.marker([30.56781, 114.30222], { - icon: DefaultIcon1, - }).addTo(map); //婀栧寳 - L.marker([18.23522, 109.51085], { - icon: DefaultIcon1, - }).addTo(map); //娴峰崡 - - marker1.on("click", (e) => { - this.isEchTrue = true; - console.log(document.querySelector(".echartsTrue").offsetWidth); - console.log(document.querySelector(".echartsTrue").offsetHeight); - this.$nextTick(() => { - this.isTop = - e.containerPoint.y - - document.querySelector(".echartsTrue").offsetHeight / 2 + - "px"; - this.isLeft = - e.containerPoint.x - - document.querySelector(".echartsTrue").offsetWidth / 2 + - "px"; - }); - }); + this.map = map; + if (markerList.length) { + for (let i = 0; i < markerList.length; i++) { + const item = markerList[i]; + const temp_mark = L.marker([item.yCoord, item.xCoord], { + icon: DefaultIcon1, + }).addTo(map); + temp_mark.on("click", (e) => { + this.isEchTrue = true; + this.currentMark = { + name: item?.WEAK_NAME[0]?.content1, + nikeName: item?.ALIAS[0]?.content2, + nativePlace: item?.content1, + barnch: item?.MEDICAL_BRANCH[0]?.content1, + medical: item?.MEDICAL_EXPERTISE[0]?.content1, + }; + this.$nextTick(() => { + this.isTop = + e.containerPoint.y - + document.querySelector(".echartsTrue").offsetHeight / 2 + + "px"; + this.isLeft = + e.containerPoint.x - + document.querySelector(".echartsTrue").offsetWidth / 2 + + "px"; + }); + }); + } + } }, // 鐐瑰嚮涓嬮潰鐨勬湞浠f寜閽� @@ -458,9 +493,11 @@ this.dynasty1Color = id; }, onSearch(val) { - console.log(val); - // this.isSearch = true; + this.keyword = val.text; + this.map.invalidateSize(); + + this.getDataList(); }, // 鐐瑰嚮涓婇潰鐨勬湞浠f寜閽� SchoolClick(id) { @@ -601,5 +638,6 @@ width: 100%; margin: 0 auto; font-size: 14px !important; + /* z-index: -1 !important; */ } </style> -- Gitblit v1.9.1