YM
2024-07-26 fe85e4208e502c78e3494a460617ae8753f51341
src/pages/characterMap/characterMap.vue
@@ -1,8 +1,10 @@
<template>
  <view style="width: 100%;height: 100%;display: flex;flex-direction: column;">
    <headNav :idIndex="1 + ''" text="中医人物数据库" />
  <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 style="flex: 1; overflow: hidden">
      <!-- 地图 -->
      <!-- <view id="spaceTime" style="height: 90vh;width: 100%;position: relative;"></view> -->
      <div id="map"></div>
@@ -25,9 +27,13 @@
        >
          <li>出生于{{ basicInfo.nativePlace || "-" }}</li>
          <li>
            <span v-if="basicInfo.birthYear">{{basicInfo.birthYear}}</span>
            <span v-if="basicInfo.nativePlace">{{basicInfo.nativePlace}}</span>
            <span v-if="basicInfo.nowPlace">(今{{basicInfo.nowPlace}})</span>
            <span v-if="basicInfo.birthYear">{{ basicInfo.birthYear }}</span>
            <span v-if="basicInfo.nativePlace">{{
              basicInfo.nativePlace
            }}</span>
            <span v-if="basicInfo.nowPlace"
              >(今{{ basicInfo.nowPlace }})</span
            >
          </li>
        </ul>
        <ul
@@ -97,7 +103,7 @@
        deathYear: "",
        nativePlace: "",
        nowPlace: "",
      }
      },
    };
  },
@@ -118,7 +124,7 @@
    initMap(info) {
      var map = L.map("map", {
        attributionControl: false,
        preferCanvas: true
        preferCanvas: true,
      }).setView([35.91667, 110.41667], 5);
      // L.tileLayer(
@@ -129,26 +135,33 @@
        .chinaProvider("TianDiTu.Normal.Map", {
          key: "76bc34ead7e30e663a4eded8aeaf5860",
          maxZoom: 18,
          minZoom: 5
          minZoom: 5,
        })
        .addTo(map);
      L.tileLayer
        .chinaProvider("TianDiTu.Normal.Annotion", {
          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弹出信息的位置  这个是我手动调出来的,文档默认原始值是[-1,-76],我是去一半值,取一半值调出来的
        popupAnchor: [1, -24], // 该点是相对于iconAnchor弹出信息的位置  这个是我手动调出来的,文档默认原始值是[-1,-76],我是去一半值,取一半值调出来的
      });
      let icon = L.divIcon({
        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;
@@ -180,7 +193,7 @@
    getPersonInfoFun() {
      getPersonInfo({
        id: this.$route.query.id,
        type: "PERSON_SPACE_TIME"
        type: "PERSON_SPACE_TIME",
      }).then((res) => {
        this.initMap(res.object.personSpaceTimeList);
      });
@@ -189,7 +202,7 @@
    getBasicInfo() {
      getPersonInfo({
        id: this.$route.query.id,
        type: "PERSON_BASIC"
        type: "PERSON_BASIC",
      }).then((res) => {
        this.basicInfo.name = res.object.personFieldList.find(
          (f) => f.fieldName == "WEAK_NAME"
@@ -250,40 +263,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],
@@ -313,7 +326,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 = [];
@@ -322,7 +335,7 @@
          if (geoCoord) {
            res.push({
              name: data[i].name,
              value: geoCoord.concat(data[i].value)
              value: geoCoord.concat(data[i].value),
            });
          }
        }
@@ -330,7 +343,7 @@
      };
      option = {
        tooltip: {
          trigger: "item"
          trigger: "item",
        },
        bmap: {
          center: [104.114129, 37.550339], // 调整地图中心点位置
@@ -342,60 +355,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: [
          {
@@ -412,11 +425,11 @@
              return val[2] / 10;
            },
            encode: {
              value: 2
              value: 2,
            },
            showEffectOn: "render",
            rippleEffect: {
              brushType: "stroke"
              brushType: "stroke",
            },
            label: {
              formatter: "{b}",
@@ -434,18 +447,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;
@@ -468,8 +481,8 @@
      // 修改 Vue 组件的数据,例如显示菜单导航
      this.menuNav = !this.menuNav;
      // 时空地图的数据
    }
  }
    },
  },
};
</script>