本文介绍: 把基础地图画出来, 然后地图添加点击事件, 拿到经纬度 ,根据经纬度位置进行动态添加图标

实现思路:把基础地图画出来, 然后地图添加点击事件, 拿到经纬度 ,根据经纬度的位置进行动态的添加图标。

效果图

 

 

 

 代码

<template>
  <div id="china-echart" style="height: 500px; width: 500px"></div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import axios from "axios";
import * as echarts from "echarts";
import imgTest from "../../assets/image/icotu.png";

onMounted(() => {
 mapList()
});
const mapList = ()=>{
  let chartDom:any = document.getElementById("china-echart");
  let myChart = echarts.init(chartDom);
  let option;
  myChart.showLoading();
  axios.get("/geo/china-s.json").then((usaJson) => {
    myChart.hideLoading();
    echarts.registerMap("china", usaJson.data);
    //拼接自定义图标路径
    let symbolImg = 'image://'+ imgTest
     option = {
      geo: {
        map: 'china',
        roam: true,
        label:{
          normal:{
            show: true, //省份名称
            color: '#d9d6d6'
          }
        },
        itemStyle: {
          color: '#004981',   // 背景颜色
          borderColor: 'rgb(54,192,118)'   // 边框颜色
        }
      },
      series: [
        {
          type: 'effectScatter',   //  指明图表类型:带涟漪效果散点图
          coordinateSystem: 'geo', //  指明绘制在geo坐标系上
          symbol: symbolImg, //自定义展示图标
          symbolSize:50,
          //定以一个数组后期点击时候里面添加新数据
          data:[]
        },
      ]
    };

    //使用制定的配置项和数据显示图表
    myChart.setOption(option);
  });
   //地图点击事件
  myChart.on( 'click',function (e:any) {
    //拿到点击对应的经纬度
    let lagLog = myChart.convertFromPixel('geo', [e.event.offsetX, e.event.offsetY])
    //拿到点击区域对应名字
    let title = e.name
    //把经纬度和name 存在一个对象中
    let myDataObj = {name:title,value:lagLog};
    //把拿到的myDataObj动态的添加到option里面seriesdata数据if(option.series[0].data){
      option.series[0].data = []
      option.series[0].data.push(myDataObj)
      myChart.setOption(option);
    }else if(option.series[0].data.value == lagLog && option.series[0].data) {
      option.series[0].data= []
      console.log( option.series[0].data)
      myChart.setOption(option);
    }else {
      option.series[0].data.push(myDataObj)
      myChart.setOption(option);
    }
  })
}
</script>

原文地址:https://blog.csdn.net/weixin_44761131/article/details/128485251

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29208.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注