echarts

echarts的一个很容易遇到的坑 

不清空的话 会导致echarts 认为 容器没有变化

重新回到页面以后需要执行这个 否则不会重新渲染

    dsiab_com = document.getElementById('sankeyContainer') 

dsiab_com!.removeAttribute("_echarts_instance_");

echarts地图的一些使用(中国地图)

//vue3+ts


<template>
  <div id="aa123"></div>
</template>
<script setup lang="ts">
import * as echarts from "echarts";
import AMapLoader from "@amap/amap-jsapi-loader";
import { onMounted } from "vue";
function randomData() {
  return Math.round(Math.random() * 500);
}
var scatterData: any = [];
const defaultProp: any = {
  四川省: [118.2, 39.13333],
  广东省: [115.48333, 38.03333],
  辽宁省: [122.15333, 31.2],
  宁夏省: [103.73333, 36.53333],
  安徽省: [115.5, 22.2],
  西藏省: [113.5, 21.8],
};
// const defaultProp: any = {
//   北京市: [118.2, 39.13333],
//   河北省: [115.48333, 38.03333],
//   上海市: [122.15333, 31.2],
//   甘肃省: [103.73333, 36.53333],
//   香港特别行政区: [115.5, 22.2],
//   澳门特别行政区: [113.5, 21.8],
// };
const setLocalProp = (data: any) => {
  return data.map((item: any, index: any) => {
    const { properties } = item;
    const { name } = properties;
    // if (defaultProp[name]) {
    //   properties.cp = defaultProp[name];
    // }
    return item;
  });
};
const data = [
  { name: "北京市", value: 100 },
  { name: "天津市", value: randomData() },
  { name: "上海市", value: randomData() },
  { name: "重庆市", value: randomData() },
  { name: "河北省", value: randomData() },
  { name: "河南省", value: randomData() },
  { name: "云南省", value: randomData() },
  { name: "辽宁省", value: randomData() },
  { name: "黑龙江", value: randomData() },
  { name: "湖南省", value: randomData() },
  { name: "安徽省", value: randomData() },
  { name: "山东省", value: randomData() },
  { name: "新疆省", value: randomData() },
  { name: "江苏省", value: randomData() },
  { name: "浙江省", value: randomData() },
  { name: "江西省", value: randomData() },
  { name: "湖北省", value: randomData() },
  { name: "广西省", value: randomData() },
  { name: "甘肃省", value: randomData() },
  { name: "山西省", value: randomData() },
  { name: "内蒙古", value: randomData() },
  { name: "陕西省", value: randomData() },
  { name: "吉林省", value: randomData() },
  { name: "福建省", value: randomData() },
  { name: "贵州省", value: randomData() },
  { name: "广东省", value: randomData() },
  { name: "青海省", value: randomData() },
  { name: "西藏省", value: randomData() },
  { name: "四川省", value: randomData() },
  { name: "宁夏省", value: randomData() },
  { name: "海南省", value: randomData() },
  { name: "台湾省", value: randomData() },
  { name: "香港市", value: randomData() },
  { name: "澳门市", value: randomData() },
];
var top5 = data
  .sort(function (a, b) {
    return b.value - a.value;
  })
  .slice(0, 5);
scatterData = [];
for (var i = 0; i < top5.length; i++) {
  if (i == 1) {
    scatterData.push({
      name: top5[i].name,
      value: [118.2, 39.13333, 300],
    });
  } else {
    scatterData.push({
      name: top5[i].name,
      value: [113.54909, 22.198951, 300],
    });
  }
}
const linesData: any = [
  {
    fromName: "澳门市",
    toName: "北京市",
    //两个地点的坐标
    coords: [
      [113.54909, 22.198951],
      [118.2, 39.13333],
    ],
    value: 1000,
    lineStyle: { color: "yellow" },
  },
];
//初始化echarts实例
onMounted(() => {
  var dsiab_com = document.getElementById("aa123");
  dsiab_com!.removeAttribute("_echarts_instance_");
  AMapLoader.load({
    //首次调用 load
    key: "73e9f6e21ecf8bbac0f517afb49e875a", //首次load key为必填
    version: "2.0",
    AMapUI: {
      version: "1.1",
    },
  }).then((a) => {
    // @ts-ignore
    AMapUI.loadUI(["geo/DistrictExplorer"], function (DistrictExplorer: any) {
      var districtExplorer = new DistrictExplorer();
      districtExplorer.loadAreaNode(
        100000,
        function (error: any, areaNode: any) {
          if (error) {
            console.error(error);
            return;
          }
          let mapJson = { type: "", features: "" };
          let features = areaNode.getSubFeatures();
          mapJson.type = "FeatureCollection";
          mapJson.features = setLocalProp(features);
          // @ts-ignore
          echarts.registerMap("china", mapJson);
          var myChart = echarts.init(document.getElementById("aa123")!);
          myChart.setOption({
            title: {
              text: "Population Density of Hong Kong (2011)",
            },
            tooltip: {
              trigger: "item",
              formatter: "{b}<br/>{c} (p / km2)",
            },
            // toolbox: {
            //   show: true,
            //   orient: "vertical",
            //   left: "right",
            //   top: "center",
            //   feature: {
            //     dataView: { readOnly: false },
            //     restore: {},
            //     saveAsImage: {},
            //   },
            // },
            visualMap: {
              min: 800,
              max: 50000,
              text: ["High", "Low"],
              realtime: false,
              calculable: true,
              inRange: {
                color: ["lightskyblue", "yellow", "orangered"],
              },
            },
            geo: {
              show: true,
              map: "china",
              label: {
                normal: {
                  show: true,
                },
                emphasis: {
                  show: true,
                },
              },
              roam: false,
            },
            series: [
              //地图名称颜色数值的数据  map 已经有地图了 但是可以控制每个城市的颜色和数值和显示名字
              {
                name: "香港18区人口密度",
                type: "map",
                map: "china",
                label: {
                  show: true,
                },
                // 这个value值 会有一个颜色的范围  也可以自定义一下
                data: data,
              },
              //散点的数据
              // 数据要注意 数组中的前两个是坐标 是不可以瞎写的必须看看地图的坐标在写   第三个是散点的值 可以控制显示大小的
              {
                name: "Top 5",
                type: "effectScatter",
                coordinateSystem: "geo",
                data: scatterData,
                symbolSize: function (val: any) {
                  return val[2] / 10;
                },
                showEffectOn: "render",
                rippleEffect: {
                  brushType: "stroke",
                },
                hoverAnimation: true,
                label: {
                  normal: {
                    formatter: "{b}",
                    position: "left",
                    show: false,
                  },
                },
                itemStyle: {
                  normal: {
                    color: "yellow",
                    shadowBlur: 10,
                    shadowColor: "yellow",
                  },
                },
                zlevel: 999,
              },
              //散点间的连线的数据
              //lineStyle 的color 会有别的影响 百度也可以搜出来 如果想控制的话 我是在data中加上
              {
                type: "lines",
                zlevel: 1,
                effect: {
                  show: true,
                  period: 5, //箭头指向速度,值越小速度越快
                  trailLength: 0, //特效尾迹长度[0,1]值越大,尾迹越长重
                  color: "blue", //图标颜色
                  // symbol: path,		//图标样式
                  symbolSize: 10, //图标大小
                },
                lineStyle: {
                  width: 10,
                  // @ts-ignore
                  color: "rgba(255,255,255,1)",
                  opacity: 1,
                  curveness: 0.3,
                  // normal: {
                  //   // color: "#FEAE6F",
                  //   color: "#ffffff",
                  //   width: 5,
                  //   curveness: 0.3,
                  // },
                },
                data: linesData,
              },
            ],
          });
        }
      );
    });
  });
});

//使用制定的配置项和数据显示图表
</script>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}
#aa123 {
  height: 800px;
  width: 1300px;
}
nav {
  padding: 30px;
}

nav a {
  font-weight: bold;
  color: #2c3e50;
}

nav a.router-link-exact-active {
  color: #42b983;
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值