大屏echarts示例------中国地图

这篇具有很好参考价值的文章主要介绍了大屏echarts示例------中国地图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近做了几个大屏,有很多echarts图表,挑重要的记录一下:

1. 中国地图

首先要找一个json文件,包含中国地区内所有地方的经纬度和名称等,初始化地图的时候需要

echarts.registerMap("china", { geoJSON: city });

这里的city就是我的json文件。在上方引入即可

import city from "./city";

这里我把它放在和大屏index同目录下了,注意引入时的路径

echarts 中国地图 大屏,echarts,前端,javascript

然后就可以画出地图了,

 echarts.registerMap("china", { geoJSON: city });
      if (!this.mapChart) {
        this.mapChart = echarts.init(this.$refs["map"]); //map是div元素的ref名称
      }
      let option = {
        tooltip: {
          trigger: "item",
          show: false,
        },
        geo: {
          show: true,
          map: "china",
          roam: true,
          zoom: 1.55,
          center: [106.83531246, 37.0267395887],    
          },
        },
        series: [
          {
            type: "map",
            map: "china",
            geoIndex: 0,
            aspectScale: 1, //长宽比
            showLegendSymbol: false, // 存在legend时显示
            roam: true,
            animation: false,
            data: [],
          },
        
        ],
      };
      this.mapChart.setOption(option);

 然后是地图样式相关的一些配置:

地图是否支持拖动和缩放:

在geo中加入roam属性即可。

echarts 中国地图 大屏,echarts,前端,javascript

option中加入tooltip可以在鼠标悬浮到某个区域的时候弹出标签

tooltip: {
          trigger: "item",
          show: true,
        },

geo对象中设置label,省份名称显示的样式

 label: {
            normal: {
              show: true,
              color: "rgb(249, 249, 249)", //省份标签字体颜色
              formatter: (p) => {
                switch (p.name) {
                  case "内蒙古自治区":
                    p.name = "内蒙古";
                    break;
                  case "西藏自治区":
                    p.name = "西藏";
                    break;
                  case "新疆维吾尔自治区":
                    p.name = "新疆";
                    break;
                  case "宁夏回族自治区":
                    p.name = "宁夏";
                    break;
                  case "广西壮族自治区":
                    p.name = "广西";
                    break;
                  case "香港特别行政区":
                    p.name = "香港";
                    break;
                  case "澳门特别行政区":
                    p.name = "澳门";
                    break;
                }
                return p.name;
              },
            },
          },

效果:

echarts 中国地图 大屏,echarts,前端,javascript

隐藏掉右下方的“南海诸岛”: 在geo中加入如下代码设置regions

//隐藏南海诸岛
          regions: [
            {
              name: "南海诸岛",
              itemStyle: {
                // 隐藏地图
                normal: {
                  opacity: 0, // 为 0 时不绘制该图形
                },
              },
              label: {
                show: false, // 隐藏文字
              },
            },
          ],

 设置每一个省份的区域内样式,在geo中加入如下代码设置itemStyle

itemStyle: {
            borderColor: "rgba(147, 235, 248, 1)",
            borderWidth: 1,
            areaColor: {
              type: "radial",
              x: 0.5,
              y: 0.5,
              r: 0.8,
              colorStops: [
                {
                  offset: 0,
                  color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
                },
                {
                  offset: 1,
                  color: "rgba(147, 235, 248, .2)", // 100% 处的颜色
                },
              ],
              globalCoord: false, // 缺省为 false
            },
            shadowColor: "rgba(128, 217, 248, 1)",
            shadowOffsetX: -2,
            shadowOffsetY: 2,
            shadowBlur: 10,
            emphasis: {
              areaColor: "#389BB7",
              borderWidth: 0,
            },
          },

地图上显示一些点标记:在series中额外加入点标记对象

  {
            type: "scatter",
            coordinateSystem: "geo",
            geoIndex: 0,
            zlevel: 3,
            label: {
              show: false,
            },
            symbolSize: 14,
            data: this.piontData,
          },

这里面的pointData是一个数组,从接口拿到的点标记数据放里面,数据元素可以携带它的自定义属性,id,type,devName等都是自定义,以免后面需要这些属性值

this.piontData.push({
              name: ele.devId,
              id: ele.id,
              type: ele.deviceType,
              devName: ele.devName || ele.collectionName,
              value: [parseFloat(gpsArr[0]), parseFloat(gpsArr[1])],
              itemStyle: {
                color: color,
                opacity: 1,
                shadowColor: "rgba(0, 0, 0, 0.5)",
                shadowBlur: 1,
              },
            });

上面的itemstyle是点标记的样式,这里由于要求给不同类设备显示不同颜色标记,color做了一些判断。

给点标记加tooltip:

这个tooltip得加到series里面,点标记对应的对象中,前提是option下面也要加tooltip且trigger=item,否则点标记的tooltip不会显示

  let option = {
        tooltip: {
          trigger: "item",
          show: false,
        },
...
...
}
  {
            tooltip: {
              show: true,
              formatter: function (params) {
                let html = "";
                let bgColor = "";
                if (params.data.type < 2)
                  bgColor =
                    "linear-gradient(0deg,rgba(10,74,39,0.6),rgba(102,253,181,0.6),rgba(10,74,39,0.6))";
                else if (params.data.type < 4)
                  bgColor =
                    "linear-gradient(0deg,rgba(97,40,14,0.6),rgba(255,159,116,0.6),rgba(97,40,14,0.6))";
                else
                  bgColor =
                    "linear-gradient(0deg,rgba(99,92,14,0.6),rgba(255,235,48,0.6),rgba(99,92,14,0.6))";
                html += `<div style="color: #fff;font-size: 16px;padding:2px 6px;
                border-radius: 12px;
                background: ${bgColor};                      
                      ">
                        <div>
                          <div>${params.data.devName}</div>
                        </div>
                      </div>`;
                return html;
              },
              textStyle: {
                color: "#fff",
              },
              padding: 0,
              backgroundColor: "transparent",
              extraCssText: "border-radius: 12px",
            },
            type: "scatter",
            coordinateSystem: "geo",
            geoIndex: 0,
            zlevel: 3,
            label: {
              show: false,
            },
            symbolSize: 14,
            data: this.piontData,
          },

这里由于设计的标签样式有点复杂,所以用了html元素,简单点的样式,可以直接按照文档那些属性配置一下就可以了

效果:

echarts 中国地图 大屏,echarts,前端,javascript

 给点标记添加单击事件:初始化之前添加

 echarts.registerMap("china", { geoJSON: city });
      if (!this.mapChart) {
        this.mapChart = echarts.init(this.$refs["map"]);
        this.mapChart.off("click");
        this.mapChart.on("click", (params) => {
          if (params.seriesType === "scatter") {
            console.log("click", params, this.diaType);
            ...
            ...
          }
        });
      }
    
      this.mapChart.setOption(option);

给地图添加热力发散标记:在series中再额外加入一个对象 它的 type: "effectScatter",文章来源地址https://www.toymoban.com/news/detail-774880.html

  series: [
          {
            type: "map",
            map: "china",
            ...
            ...
          },
          {
            type: "scatter",
            coordinateSystem: "geo",
            geoIndex: 0,
            zlevel: 3,
            label: {
              show: false,
            },
            symbolSize: 14,
            data: this.piontData,
          },
          {
            name: "报警散点",
            type: "effectScatter",
            coordinateSystem: "geo",
            rippleEffect: {
              brushType: "fill",
            },
            itemStyle: {
              normal: {
                color: "#F4E925",
                shadowBlur: 20,
                shadowColor: "#333",
              },
            },
            data: this.effectedData,
            symbolSize: 20,
            showEffectOn: "render", //加载完毕显示特效
          },
        ],

到了这里,关于大屏echarts示例------中国地图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Three.js实现3D中国地图的可视化大屏

    在前端开发中,使用Three.js库可以轻松创建各种令人印象深刻的3D效果。本文将介绍如何使用Three.js库创建一个令人惊叹的3D中国地图可视化大屏。我们将使用JavaScript和Three.js来呈现中国地图,并添加一些交互功能。 首先,我们需要在HTML页面中引入Three.js库。你可以从官方网站

    2024年02月03日
    浏览(106)
  • 基于Vue3 + ts + echarts(版本5.X)实现中国地图下钻、地图打点、地图热力图功能

    写在前面: 实现效果图   1.比较重要的部分用 红字 标出  2.安装echats:         3.由于echarts5版本的已经没有自带地图数据了,所以地图数据需要到专门的GEO数据网站中下载。这里提供一个阿里的下载地址:DataV.GeoAtlas地理小工具系列 对于这个工具网站,有一个重点需要说一

    2024年02月09日
    浏览(50)
  • vue项目中使用echarts和china.js实现中国地图

    在echarts最新的5.4.0版本中,已不能直接引用china.js来绘制中国地图,需要我们自己下载china.js包 在网上查找资料,大部分是在index.html文件中直接引入echarts和china.js文件,但我使用这种方法在vue项目中引入失败,目前尝试可行的方法是把包下载到node_modules的echarts包里面,文件和

    2024年02月13日
    浏览(39)
  • 手把手教 Vue3.2+Vite+Echarts 5 绘制3D线条效果中国地图

    本篇文章介绍 Vue3.2+Vite 项目内使用 Echarts 5 绘制中国地图,标记分布点!之前没有接触过 Echarts 的,可以先去官方示例看看,里面图形特别齐全。但是官方文档看着费劲的,太多了根本记不住,所以自己做个总结,下次就可以直接使用了,不用做重复无用功。 1、下载并引入

    2024年02月04日
    浏览(53)
  • html Antv L7 + mapbox 实现3D地图 3D中国地图 不限于中国地图

    echarts的3D地图实在太丑了,还一堆bug 使用阿里的Antv可视化库L7,实现3D地图,底图是mapbox 参考示例:https://l7.antv.antgroup.com/zh/examples/polygon/3d#floatMap 如果不需要底图样式,可把Scene的style设置为blank 直接上代码了,vue的就不说了,项目是html的 mapbox依赖 L7依赖 body元素 实现

    2024年02月14日
    浏览(51)
  • Python 地图篇 - 使用pyecharts绘制世界地图、中国地图、省级地图、市级地图实例详解

    [ 系列文章篇 ] 2022 见证中国崛起从 Python 绘制中国地图开始:使用 pyecharts 最新版本绘制中国地图实例详解,个性化地图定制及常用参数解析 [ 专栏推荐 ] Python 短视频自动化发布,包含抖音、快手、 bilibili 、小红书、微视、好看视频、西瓜视频、视频号等 10 余种平台 先给大

    2024年02月03日
    浏览(47)
  • SVG实现中国地图

    1.SVG是什么? svg 是Scalable Vector Graphics的缩写,指可伸缩矢量图形,可以用于绘制复杂不规则的控件。 svg绘制原理,就是利用了Path绘制图形。 1)svg利用xml定义图形。在xml中就包晗了绘制Path所需的数据。 2)加载xml中的PathData,转换成Path对象。 3)利用Canvas,把Path绘制在屏幕

    2024年02月04日
    浏览(39)
  • Python绘制中国地图

     1. 导入库 2. 导入数据 3. 南海九段线部分数据预处理 开始绘图之前需进行数据选择,即中国区域的数据,特别是绘制南海小地图的更需要,可避免一些问题(小地图上方出现完整地图) 4. 定义掩膜方法,从全球的nc数据中,裁出中国地图部分的数据(根据shp文件裁剪nc数据)

    2024年02月06日
    浏览(42)
  • Flutter中实现中国省份地图

    效果展示(这里只展示局部,完全展示违规): 可以点击省份改变颜色,更多功能可以自行拓展。 注:非完整中国地图!!! 本文用于记录在Flutter项目中安卓端实现中国地图,因为实现过程是通过Flutter调用安卓原生代码实现,所以IOS端不可用,通过本文你还可以学会如何通过

    2024年01月25日
    浏览(40)
  • 如何制作自己的实景中国视频地图?

    让每一个人都有自己的地图! 我们在《水经微图Web版1.5.0发布》一文中,提到了水经微图(简称“微图”)Web版新增了视频气泡的功能。 现在,我们为你分享一下如何基于此功能,制作一个属于自己的实景中国视频地图。 如果要制作自己的实景中国视频地图,首先需要有实

    2024年01月22日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包