在vue中使用echarts渲染地图,geo点击某个区域可高亮,取消

一、安装echarts

npm install echarts --save

二、main.js引入注册

import Vue from "vue";

import * as echarts from "echarts";

Vue.prototype.$echarts = echarts;

三、vue文件中使用echarts

<template>
    <div class="page-warp">
      
       <div ref="mapEchart" class="map-box"></div>
    </div>
</template>

<script>
import geoJson from "地图数据json文件";

export default {
    data() {
        return {
            markerData: [
           
                {
                    name: "测试地址1",
                    value: [118.77,32.00],
                },
                {
                    name: "测试地址1",
                    value: [118.73,31.91],
                },
                {
                    name: "测试地址2",
                    value: [118.88,31.91],
                },
                {
                    name: "测试地址3",
                    value: [118.77,32.02],
                },
                {
                    name: "测试地址4",
                    value: [118.86,32.06],
                },
            ],
            features: [],
        };
    },
    mounted() {
        this.$nextTick(() => {
            this.getInitEchart();
            this.getMapId();
        });
    },
    methods: {
        getMapId() {
            this.features = this.$echarts.getMap("geoJson").geoJson.features;
        },
        getInitEchart() {
            let that = this;
            let myChart = this.$echarts.init(this.$refs.mapEchart);
            // var img = new Image();
            var canvas = document.createElement("canvas");
            // var ctx = canvas.getContext("2d");

            canvas.width = myChart.getWidth() * window.devicePixelRatio;
            canvas.height = myChart.getHeight() * window.devicePixelRatio;

            // var fullImage = new Image();
            // img.onload = function () {
            //     ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
            //     fullImage.src = canvas.toDataURL();
            //     setTimeout(function () {
            //         myChart.resize();
            //     }, 100);
            // };
            // img.src = require("");//背景图地址可以不加

            this.$echarts.registerMap("geoJson", geoJson);
            let option = {
                tooltip: {
                    show: false,
                    trigger: "item",
                    axisPointer: {
                        type: "shadow",
                    },
                },

                grid: {
                    height: "100%",
                    width: "100%",
                },
                geo: {
                    map: "nantong",
                    aspectScale: 0.9,
                    silent: false,
                    label: {
                        show: false,
                        emphasis: {
                            show: false, // 高亮状态下显示区域名称
                            areaColor: "rgba(35, 99, 150,0.1)",
                        },
                    },
                    top: "center",
                    left: "center",
                    roam: false, //禁止拖拽
                    selectedMode: "single", //单选
                    clickable: true,
                    animationDurationUpdate: 0,
                    scaleLimit: {
                        min: 1,
                        max: 1,
                    },
                    zoom: 1.02,
                    itemStyle: {
                        normal: {
                            areaColor: {
                              //   image: img,//背景图
                                repeat: "repeat",
                                label: {
                                    show: false,
                                },
                            },
                            shadowColor: "#246496",
                            shadowBlur: 0,
                            shadowOffsetX: 0,
                            shadowOffsetY: 10,
                            borderColor: "#0fcef9",
                            borderWidth: 2,
                        },
                        emphasis: {
                            areaColor: "rgba(35, 99, 150,0.1)",
                            borderWidth: 1,
                            color: "green",
                            label: {
                                show: false,
                            },
                        },
                    },
                    select: {
                        disabled: false, //可以被选中
                        label: {
                            show: false,
                        },
                        //相关配置项很多,可以参考echarts官网
                        itemStyle: {
                            areaColor: "rgba(35, 99, 150,0.1)",
                        },
                    },
                },

                series: [
               
                    {
                        //底部图片
                        type: "custom",
                        coordinateSystem: "geo",
                        clickable: true,
                        data: that.markerData,
                        renderItem: function (params, api) {
                            return {
                                type: "image",
                                name: "",
                                style: {
                                    image: require("@/assets/images/图片.png"),
                                    width: 30,
                                    height: 94,
                                    x: api.coord([
                                        that.markerData[params.dataIndex].value[0],
                                        that.markerData[params.dataIndex].value[1],
                                    ])[0],
                                    y: api.coord([
                                        that.markerData[params.dataIndex].value[0],
                                        that.markerData[params.dataIndex].value[1],
                                    ])[1],
                                },
                            };
                        },
                    },

                    {
                        //头部文字
                        type: "custom",
                        coordinateSystem: "geo",
                        clickable: true,
                        data: that.markerData,

                        renderItem: function (params, api) {
                            let x = api.coord([
                                that.markerData[params.dataIndex].value[0],
                                that.markerData[params.dataIndex].value[1],
                            ])[0];
                            let y = api.coord([
                                that.markerData[params.dataIndex].value[0],
                                that.markerData[params.dataIndex].value[1],
                            ])[1];

                            return {
                                type: "text",
                                name: "文字",
                                style: {
                                    text: that.markerData[params.dataIndex].name,
                                    backgroundColor: "rgba(0,0,0,0.5)",
                                    padding: [10, 15, 10, 40],
                                    borderRadius: 15,
                                    x: x - 30,
                                    y: y,
                                    fill: "#fff",
                                },
                            };
                        },
                    },
                    {
                        //头部图片
                        type: "custom",
                        coordinateSystem: "geo",
                        clickable: true,
                        data: that.markerData,
                        renderItem: function (params, api) {
                            let x = api.coord([
                                that.markerData[params.dataIndex].value[0],
                                that.markerData[params.dataIndex].value[1],
                            ])[0];
                            let y = api.coord([
                                that.markerData[params.dataIndex].value[0],
                                that.markerData[params.dataIndex].value[1],
                            ])[1];
                            return {
                                type: "image",
                                name: "",
                                style: {
                                    image: require("@/assets/images/图片.png"),
                                    width: 20,
                                    height: 20,
                                    x: x - 20,
                                    y: y + 4,
                                },
                            };
                        },
                    },
                ],
            };
            myChart.on("click", function (data) {
                console.log("data: ", data);
                myChart.dispatchAction({//点击高亮设置
                    type: "select",
                    // geo 中名称
                    name: data.name,
                });
              
            });
            myChart.clear();
            myChart.setOption(option);
            window.onresize = function () {
                myChart.resize();
            };
        },
     
    },
};
</script>

<style lang="scss" scoped>
.page-warp {
width:100%;
height:100vh;
.map-box{
width:100%;
height:100%;
}
  }
</style>

四、显示效果图:

**

在这里插入图片描述
点击效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/333892.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql原理--锁

1.解决并发事务带来问题的两种基本方式 上一章唠叨了事务并发执行时可能带来的各种问题&#xff0c;并发事务访问相同记录的情况大致可以划分为3种&#xff1a; (1). 读-读 情况&#xff1a;即并发事务相继读取相同的记录。 读取操作本身不会对记录有一毛钱影响&#xff0c;并不…

聚铭入选“2023中国数字安全能力图谱(精选版)”安全运营领域

近日&#xff0c;国内权威数字安全领域第三方调研机构数世咨询正式发布《2023年度中国数字安全能力图谱&#xff08;精选版&#xff09;》。聚铭网络作为国内领先的安全运营商&#xff0c;凭借在细分领域突出优势&#xff0c;成功入选该图谱“安全运营”领域代表厂商。 据悉&a…

6.4.2转换文件

6.4.2转换文件 利用Swf2VideoConverter2可以很方便地将Flash动画(*.swf)转换为其它的视频格式。 1&#xff0e;单击“添加”按钮&#xff0c;在弹出的下拉菜单中选择“添加文件”&#xff0c;在弹出的“Open Swf Files(打开Swf文件)”窗口中选择swf文件(如&#xff1a;那些花…

使用nginx搭建网页

一、实验要求 网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com…

element中Table表格控件单选、多选功能进一步优化

目录 一、代码实现1、 父组件2、子组件&#xff08;弹框&#xff09; 二、效果图 一、代码实现 1、 父组件 <template><div><!-- 用户选择嵌套弹框 --><el-dialog :close-on-click-modal"false" :close-on-press-escape"false" tit…

OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换

前言 在现代工业自动化领域&#xff0c;OPC UA&#xff08;开放性生产控制和统一架构&#xff09;是一种广泛应用的通信协议。本文将以通俗易懂的方式解释OPC UA的含义和作用&#xff0c;帮助读者更好地理解这一概念。 一、OPC UA的定义 OPC UA全称为“开放性生产控制和统一…

bgp--大AS分小AS

最后效果:r1能ping通r8,r4路由表有r1-r8环回,r4bgp路由表已优化 代码; [r1] ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 1.1.1.1 0.0.0.0 network 12.1.1.1 0.0.0.0 bgp 64512 router-id 1.1.1.1 confederation id …

湖(岛屿)

from book&#xff1a;挑战程序设计竞赛

亿尚网:时尚电商告别红利时代回归常态未来将何去何从?

随着互联网技术的不断发展和普及&#xff0c;时尚电商行业在过去的十年里迅猛的增长&#xff0c;经历了前所未有的繁荣。然而近年来这个行业似乎已经迎来了一个转折点。曾经的高速增长和巨大利润已经逐渐消失&#xff0c;取而代之的是日益激烈的竞争和微薄的利润空间。这一切的…

TPU编程竞赛系列|第八届集创赛“算能杯“报名开启!

近日&#xff0c;第八届全国大学生集成电路创新创业大赛正式开幕&#xff0c;"算能杯"以 基于TPU处理器的边缘计算系统设计 为赛题&#xff0c;围绕算能提供的多款TPU硬件&#xff0c;展开软硬件协同设计&#xff0c;创新开发算法及探索新兴应用。我们诚邀全国高校的…

三极管这个功能比“放大”还常用?

同学们大家好&#xff0c;今天我们继续学习杨欣的《电子设计从零开始》&#xff0c;这本书从基本原理出发&#xff0c;知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例&#xff0c;可以说是全面系统地介绍了电子设计所需的知识…

杜卡迪Panigale v4 SP2、Street Fighter v4 SP正式发布,购车送GP观赛

最新款杜卡迪的Panigale v4 SP2、Street Fighter v4 SP国内正式上市&#xff0c;售价分别是382500元和310500元&#xff0c;Panigale售价比老款降低了2.55万元&#xff0c;而街霸的SP版则是国内首次上市。 SP版一直都是杜卡迪的限量款&#xff0c;标榜着高性能、高配置&#xf…

运放【之噪声】

电流噪声和电压噪声 我们一般评估噪声&#xff0c;还看对输出端噪声电压的贡献&#xff0c;因为电流乘以电阻等于电压&#xff0c;因此&#xff0c;最终的噪声大小还跟电路中电阻的取值有很大关系。显然&#xff0c;电阻越大&#xff0c;那么噪声电压就越大。反之电阻越小&…

HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参

自定义组件的生命周期 允许在生命周期函数中使用 Promise 和异步回调函数&#xff0c;比如网络资源获取&#xff0c;定时器设置等&#xff1b; 页面生命周期 即被Entry 装饰的组件生命周期&#xff0c;提供以下生命周期接口&#xff1a; onPageShow 页面加载时触发&#xff…

烟火检测AI边缘计算智能分析网关V4如何通过ssh进行服务器远程运维

智能分析网关V4是一款高性能、低功耗的AI边缘计算硬件设备&#xff0c;它采用了BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz&#xff0c;并且INT8峰值算力高达17.6Tops&#xff0c;FB32高精度算力达到2.2T&#xff0c;每个摄像头可同时配置3种算法&…

【LeetCode热题100】【子串】滑动窗口最大值

题目 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], …

像操作本地文件一样操作linux文件 centos7环境下samba共享服务搭建详细教程

1.安装dnf yum -y install dnf 2.安装samba dnf install samba -y 3.配置 3.1创建并设置用户信息 #创建用户 useradd -M -s /sbin/nologin samba echo 123|passwd --stdin samba mkdir /home/samba chown -R samba:samba /home/samba smbpasswd -a samba smaba设置密码示…

搜索引擎优化:利用Python爬虫实现排名提升

什么是搜索引擎优化&#xff08;SEO&#xff09; 搜索引擎优化&#xff08;SEO&#xff09;是通过优化网站内容和结构&#xff0c;提高网站在搜索引擎中的排名&#xff0c;从而增加网站流量和曝光度的技术和方法。SEO的目标是使网站在搜索引擎结果页面中获得更高这个过程包括吸…

【Git】实习使用记录

Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取 https://blog.csdn.net/wohu1104/article/details/105601657 浏览器可以访问github仓库&#xff0c;但是使用git就用不了 https://blog.csdn.net/m0_63230155/article/details/132070860 可…

Elasticsearch 分布式架构剖析及扩展性优化

1. 背景 Elasticsearch 是一个实时的分布式搜索分析引擎&#xff0c;简称 ES。一个集群由多个节点组成&#xff0c;节点的角色可以根据用户的使用场景自由配置&#xff0c;集群可以以节点为单位自由扩缩容&#xff0c;数据以索引、分片的形式散列在各个节点上。本文介绍 ES 分布…