| | |
| | | @click="SchoolClick(item.id)" |
| | | class="flex flex-center font-family school" |
| | | :style="{ |
| | | marginRight: index === dynasty.length - 1 ? '0' : '0.03rem' |
| | | marginRight: index === dynasty.length - 1 ? '0' : '0.03rem', |
| | | }" |
| | | style=" |
| | | font-weight: 500; |
| | |
| | | </el-card> |
| | | <!-- echarts里面的数据点击后弹框 --> |
| | | |
| | | <div class="mapBox" id="mapBox"> |
| | | <div class="mapBox" id="mapBox" v-loading="mapLoading"> |
| | | <div id="map"></div> |
| | | <el-card |
| | | class="box-card echartsTrue" |
| | |
| | | " |
| | | :style="{ |
| | | marginRight: index === dynasty1.length - 1 ? '0' : '0.03rem', |
| | | background: dynasty1Color == item.id ? '#244A7B' : '#597AA5' |
| | | background: dynasty1Color == item.id ? '#244A7B' : '#597AA5', |
| | | }" |
| | | > |
| | | {{ item.dynastyChs }} |
| | |
| | | import { loadBMap } from "@/static/map.js"; |
| | | import L from "leaflet"; |
| | | import "leaflet.chinatmsproviders"; |
| | | |
| | | import * as echarts from "echarts"; |
| | | import "echarts/extension/bmap/bmap"; |
| | | import { getRetrieval, getDynasty } from "@/api/index.js"; |
| | | import { getRetrieval, getDynasty, getPreCount } from "@/api/index.js"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | loading: true, |
| | | mapLoading: true, |
| | | // echarts元素点击时出来的弹窗和坐标 |
| | | keyword: "", |
| | | isEchTrue: false, |
| | |
| | | information: [ |
| | | { |
| | | label: "姓名", |
| | | content: "李时珍" |
| | | content: "李时珍", |
| | | }, |
| | | { |
| | | label: "别名", |
| | | content: "东丽先生" |
| | | content: "东丽先生", |
| | | }, |
| | | { |
| | | label: "籍贯", |
| | | content: "湖北" |
| | | content: "湖北", |
| | | }, |
| | | { |
| | | label: "医学分科", |
| | | content: "中药,针灸" |
| | | content: "中药,针灸", |
| | | }, |
| | | { |
| | | label: "小传", |
| | | content: |
| | | "李时珍(约1518年~1593 年), 字东璧, 晚年自号濒湖山人, 湖广黄州府薪州(今湖北省薪春县) 人, 明代著名医药学家。 与“ 医圣” 万密斋齐名, 古有“ 万密斋的方, 李时珍的药” 之说。 后为楚干府..." |
| | | } |
| | | "李时珍(约1518年~1593 年), 字东璧, 晚年自号濒湖山人, 湖广黄州府薪州(今湖北省薪春县) 人, 明代著名医药学家。 与“ 医圣” 万密斋齐名, 古有“ 万密斋的方, 李时珍的药” 之说。 后为楚干府...", |
| | | }, |
| | | ], |
| | | // 下面的朝代1 |
| | | dynasty1Color: "", |
| | |
| | | { |
| | | name: "夏朝", |
| | | coord: "2070BC", |
| | | id: 1 |
| | | id: 1, |
| | | }, |
| | | { |
| | | name: "商朝", |
| | | id: 2, |
| | | coord: "1600BC" |
| | | coord: "1600BC", |
| | | }, |
| | | { |
| | | name: "西周", |
| | | id: 3, |
| | | coord: "1600BC" |
| | | coord: "1600BC", |
| | | }, |
| | | { |
| | | name: "春秋战国", |
| | | id: 4, |
| | | coord: "770BC" |
| | | coord: "770BC", |
| | | }, |
| | | { |
| | | name: "秦朝", |
| | | id: 5, |
| | | coord: "221BC" |
| | | coord: "221BC", |
| | | }, |
| | | { |
| | | name: "汉朝", |
| | | id: 6, |
| | | coord: "202BC" |
| | | coord: "202BC", |
| | | }, |
| | | { |
| | | name: "三国两晋南北朝", |
| | | id: 7, |
| | | coord: "184" |
| | | coord: "184", |
| | | }, |
| | | { |
| | | name: "隋朝", |
| | | id: 8, |
| | | coord: "581" |
| | | coord: "581", |
| | | }, |
| | | { |
| | | name: "唐朝", |
| | | id: 9, |
| | | coord: "618" |
| | | coord: "618", |
| | | }, |
| | | { |
| | | name: "五代十国", |
| | | id: 10, |
| | | coord: "907" |
| | | coord: "907", |
| | | }, |
| | | { |
| | | name: "辽夏金", |
| | | id: 11, |
| | | coord: "907" |
| | | coord: "907", |
| | | }, |
| | | { |
| | | name: "宋朝", |
| | | id: 12, |
| | | coord: "960" |
| | | coord: "960", |
| | | }, |
| | | { |
| | | name: "元朝", |
| | | id: 13, |
| | | coord: "1271" |
| | | coord: "1271", |
| | | }, |
| | | { |
| | | name: "明朝", |
| | | id: 14, |
| | | coord: "1368" |
| | | coord: "1368", |
| | | }, |
| | | { |
| | | name: "清朝", |
| | | id: 15, |
| | | coord: "1636" |
| | | } |
| | | coord: "1636", |
| | | }, |
| | | ], |
| | | // 标题顶部栏需要的东西 |
| | | idIndex: 0, |
| | |
| | | { |
| | | name: "夏", |
| | | color: "#90BBD8", |
| | | id: 1 |
| | | id: 1, |
| | | }, |
| | | { |
| | | name: "商", |
| | | color: "#EDD28B", |
| | | id: 2 |
| | | id: 2, |
| | | }, |
| | | { |
| | | name: "西周", |
| | | color: "#CF746D", |
| | | id: 3 |
| | | id: 3, |
| | | }, |
| | | { |
| | | name: "秦", |
| | | color: "#9CC27A", |
| | | id: 4 |
| | | id: 4, |
| | | }, |
| | | { |
| | | name: "汉", |
| | | color: "#5B6CB9", |
| | | id: 5 |
| | | id: 5, |
| | | }, |
| | | { |
| | | name: "隋", |
| | | color: "#8860A8", |
| | | id: 6 |
| | | id: 6, |
| | | }, |
| | | { |
| | | name: "唐", |
| | | color: "#DE8E66", |
| | | id: 7 |
| | | id: 7, |
| | | }, |
| | | { |
| | | name: "明", |
| | | color: "#DE8E66", |
| | | id: 8 |
| | | } |
| | | id: 8, |
| | | }, |
| | | ], |
| | | // 搜索后是否显示弹框 |
| | | isSearch: false, |
| | |
| | | id: 1, |
| | | name: "李时珍", |
| | | birthAndDeath: "1518-1593", |
| | | source: "国图规范档,CBDB,上图古籍数据库 籍贯:湖北" |
| | | source: "国图规范档,CBDB,上图古籍数据库 籍贯:湖北", |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: "李时珍", |
| | | birthAndDeath: "1518-1593", |
| | | source: "国图规范档,CBDB,上图古籍数据库 籍贯:湖北" |
| | | } |
| | | ] |
| | | source: "国图规范档,CBDB,上图古籍数据库 籍贯:湖北", |
| | | }, |
| | | ], |
| | | }; |
| | | }, |
| | | onLoad(options) { |
| | |
| | | nikeName: item?.ALIAS[0]?.content2, |
| | | nativePlace: item?.content1, |
| | | barnch: item?.MEDICAL_BRANCH[0]?.content1, |
| | | medical: item?.MEDICAL_EXPERTISE[0]?.content1 |
| | | medical: item?.MEDICAL_EXPERTISE[0]?.content1, |
| | | }; |
| | | this.$nextTick(() => { |
| | | this.isTop = |
| | |
| | | getDataList() { |
| | | this.SearchArr = []; |
| | | this.loading = true; |
| | | this.mapLoading = true; |
| | | // 这里改成了分页的接口,需要调用多次取出所有数据 |
| | | let times = 0; |
| | | getPreCount({ |
| | | keyword: this.keyword, |
| | | dynasty: this.dynasty1Color, |
| | | }).then(async (res) => { |
| | | const totalCount = res.object; |
| | | console.log(totalCount, "totalCount"); |
| | | if (totalCount % 200 == 0) { |
| | | times = totalCount / 200 - 1; |
| | | } else { |
| | | times = Math.floor(totalCount / 200); |
| | | } |
| | | console.log(times, "times"); |
| | | if (times == 0 || times < 0) times = 1; |
| | | let markerList = []; |
| | | for (let i = 1; i <= times; i++) { |
| | | const curData = await this.getDataPageInfo(i); |
| | | if (curData) { |
| | | markerList = [...markerList, ...curData]; |
| | | } |
| | | if (i == times) { |
| | | console.log(markerList, "markerList"); |
| | | 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; |
| | | this.loading = false; |
| | | this.mapLoading = false; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 问题: |
| | | // 搜索结果不对 |
| | | // 点击地图标点出现弹框,拖动地图时应关闭弹框 |
| | | |
| | | getRetrieval({ |
| | | keyword: this.keyword, |
| | | dynasty: this.dynasty1Color, |
| | | page: 1, |
| | | pageSize: 1000 |
| | | }).then((res) => { |
| | | this.loading = false; |
| | | if (res.object) { |
| | | 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) { |
| | | const currentDynasty = this.dynasty1.find( |
| | | (f) => f.id == item.PERIOD[0].content1 |
| | | ); |
| | | if (currentDynasty) { |
| | | item.dynastyInfo = currentDynasty; |
| | | } |
| | | 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; |
| | | } else { |
| | | this.initMap([]); |
| | | } |
| | | }); |
| | | // getRetrieval({ |
| | | // keyword: this.keyword, |
| | | // dynasty: this.dynasty1Color, |
| | | // page: 1, |
| | | // pageSize: 200, |
| | | // }).then((res) => { |
| | | // this.loading = false; |
| | | // if (res.object) { |
| | | // 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) { |
| | | // const currentDynasty = this.dynasty1.find( |
| | | // (f) => f.id == item.PERIOD[0].content1 |
| | | // ); |
| | | // if (currentDynasty) { |
| | | // item.dynastyInfo = currentDynasty; |
| | | // } |
| | | // 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; |
| | | // } else { |
| | | // this.initMap([]); |
| | | // } |
| | | // }); |
| | | }, |
| | | |
| | | async getDataPageInfo(count) { |
| | | const res = await getRetrieval({ |
| | | keyword: this.keyword, |
| | | dynasty: this.dynasty1Color, |
| | | page: count, |
| | | pageSize: 200, |
| | | }); |
| | | if (res.object) { |
| | | 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) { |
| | | const currentDynasty = this.dynasty1.find( |
| | | (f) => f.id == item.PERIOD[0].content1 |
| | | ); |
| | | if (currentDynasty) { |
| | | item.dynastyInfo = currentDynasty; |
| | | } |
| | | markerList.push({ ...citem, ...item }); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | return markerList; |
| | | } else { |
| | | return []; |
| | | } |
| | | }, |
| | | onMapMoveEnd() { |
| | | console.log("地图拖动了"); |
| | | this.isEchTrue = false; |
| | |
| | | } |
| | | var map = L.map("map", { |
| | | preferCanvas: true, |
| | | attributionControl: false |
| | | attributionControl: false, |
| | | }).setView([34.3227, 108.5525], 5); |
| | | map.on("moveend", this.onMapMoveEnd); |
| | | map.on("zoomend", function () { |
| | |
| | | .chinaProvider("TianDiTu.Normal.Map", { |
| | | key: "76bc34ead7e30e663a4eded8aeaf5860", |
| | | maxZoom: 18, |
| | | minZoom: 3 |
| | | 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弹出信息的位置 这个是我手动调出来的,文档默认原始值是[-1,-76],我是去一半值,取一半值调出来的 |
| | | popupAnchor: [1, -24], // 该点是相对于iconAnchor弹出信息的位置 这个是我手动调出来的,文档默认原始值是[-1,-76],我是去一半值,取一半值调出来的 |
| | | }); |
| | | |
| | | let icon = L.divIcon({ |
| | | html: "<div class='map-circle-name '></div>", |
| | | iconSize: [80, 80], |
| | | className: "map-circle" |
| | | className: "map-circle", |
| | | }); |
| | | this.map = map; |
| | | if (markerList.length) { |
| | |
| | | let icon = L.divIcon({ |
| | | html: `<div class='${currentClassName} ripple'></div>`, |
| | | iconSize: [80, 80], |
| | | className: "map-circle" |
| | | className: "map-circle", |
| | | }); |
| | | const temp_mark = L.marker([item.yCoord, item.xCoord], { |
| | | icon: icon |
| | | icon: icon, |
| | | }).addTo(map); |
| | | temp_mark.on("click", (e) => { |
| | | setTimeout(() => { |
| | |
| | | nikeName: item?.ALIAS[0]?.content2, |
| | | nativePlace: item?.content1, |
| | | barnch: item?.MEDICAL_BRANCH[0]?.content1, |
| | | medical: item?.MEDICAL_EXPERTISE[0]?.content1 |
| | | medical: item?.MEDICAL_EXPERTISE[0]?.content1, |
| | | }; |
| | | this.isTop = e.containerPoint.y - 275 + "px"; |
| | | this.isLeft = e.containerPoint.x - 171 + "px"; |
| | |
| | | // 查看更多>> |
| | | viewMoreClick() { |
| | | uni.navigateTo({ |
| | | url: "/pages/character/detail" |
| | | url: "/pages/character/detail", |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |