一篇文章搞定echarts地图轮播高亮

下面是详细讲解“一篇文章搞定echarts地图轮播高亮”的完整攻略:

1.准备工作

在开始操作之前,你需要准备以下工具和技能:

  • 计算、理解经纬度坐标系并能熟练使用echarts中的地图组件
  • 熟练使用javascript编程语言
  • 确保已经完成了echarts库和其依赖库的安装

2. 地图轮播高亮思路

地图轮播高亮的核心思路,是通过定时器不断切换并高亮指定点的策略,使地图中的点逐一高亮显示并让用户能够看到。但是,具体实现过程中会有一些细节需要注意:

  • 首先,需要准备好地图的json数据文件和需要高亮的点的数据集文件,这两个文件可以通过官方提供的下载链接获得;

  • 其次,需要按照一定的格式加载地图数据和点数据,并对其进行相应的处理,使其能够与echarts地图组件相对应,并正确显示。

  • 最后,需要通过定时器实现地图轮播,并在每一次轮播的过程中,高亮指定的点,从而让用户更好地了解指定区域或者点的信息。

以下是具体实现过程:

3. 具体实现

3.1 数据准备

首先,从 echarts 的官网中下载中国地图(JSON格式),并根据需要对地图属性进行设置和调整,然后加载数据,如下代码:

$.getJSON("echarts-china.json", function(chinaJson) {
  echarts.registerMap("china", chinaJson);
});

接下来,我们需要准备数据集文件。一般我们需要一个数组保存需要高亮的点的经纬度。

在这里,我们以标志点的数据集数组为例。以下是标记点的数据格式:

var data=[
  {name: '海门', value: 9},
  {name: '鄂尔多斯', value: 12},
  {name: '招远', value: 12},
  {name: '舟山', value: 12},
  {name: '齐齐哈尔', value: 14},
  {name: '盐城', value: 15},
  ...
]

3.2 表示经纬度

以上面的数据为例,将经纬度表示为数组:

var geoCoordMap = {
    "上海市": [121.4648,31.2891],
    "东莞市": [113.8953,22.901],
    "东营市": [118.7073,37.5513],
    "中山市": [113.4229,22.478],
    "临汾市": [111.4783,36.1615],
    "临沂市": [118.3118,35.2936],
    ...
};

这个 geoCoordMap 对象是用来存放坐标信息的。对象的键值为城市名,值则是坐标信息的两个值。坐标类型可以是 String,也可以是 Number 类型。我这里使用 Number 类型,方便后面的计算。

3.3 地图显示数据

首先需要通过 ECharts 的官方 API 来指定地图的显示属性,进行基本的设置。这里我们以中国地图为例:

option = {
    tooltip: {
        trigger: 'item',
        formatter: '{b}'
    },
    geo: {
        name: '中国地图',
        type: 'map',
        map: 'china',
        roam: true,
        //缩放比例
        zoom: 1.23,
        label: {
            normal: {
                show: true,
                textStyle: {
                    color: 'rgba(0,0,0,0.4)'
                }
            }
        },
        itemStyle: {
            normal:{
                borderColor: 'rgba(0, 0, 0, 0.2)'
            },
            emphasis:{
                areaColor: '#F3B329',
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                shadowBlur: 20,
                borderWidth: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
        }
    },
    series: []
};

接下来就是将数据渲染在地图上的过程。

series: [
    {
      // 圆圈的设置
      type: 'scatter',
      coordinateSystem: 'geo', // 采用的坐标系
      itemStyle: {
          normal: {
              color: '#ddb926'
          }
      },
      label: {
          normal: {
              formatter: '{b}',
              position: 'right',
              show: true
          }
      },
      symbolSize: function (val) {
          return val[2] ;
      },
      data: []
    },
    {
      // 轮播点的闪烁显示设置
      type: 'effectScatter',
      coordinateSystem: 'geo', // 采用的坐标系
      data: [],
      symbol: 'circle',
      showEffectOn: 'render',
      rippleEffect: {
          period: 15,
          scale: 4,
          brushType: 'fill'
      },
      hoverAnimation: true,
      label: {
          normal: {
              formatter: '{b}',
              position: 'right',
              show: true
          }
      },
      itemStyle: {
          normal: {
              color: '#46bee9',
              shadowBlur: 10,
              shadowColor: 'rgba(14, 31, 46, 0.8)',
              shadowOffsetX: 1,
              shadowOffsetY: 2
          }
      },
      zlevel: 1
  }]

同时,也需要将前面处理好的标记点数据,添加到我们要渲染的数据中,进行关联,如下代码:

for (var i = 0; i < data.length; i++) {
    var geoCoord = geoCoordMap[data[i].name];
    if (geoCoord) {
        series[0].data.push({
            name: data[i].name,
            value: geoCoord.concat(data[i].value),
        },
        {
            name:data[i].name,
            value:geoCoord.concat(data[i].value),
        });
    }
}

3.4 轮播高亮

接下来就是通过定时器实现轮播高亮的过程。这里我们定义了一个 index 变量保存当前显示的城市索引,接着用 setInterval 函数不停地切换 index 变量的值,并重新设置地图对应的数据位置。同时,我这里还添加了一些动画效果,使切换的过程更加流畅。

var index = -1;
var mtime;
(function loop() {
    mtime = setTimeout(loop, 3000);//时间间隔
    index = (index + 1) % data.length;
    var name = data[index].name;
    var value = data[index].value;
    mapChart.dispatchAction({
        type: 'downplay',
        seriesIndex: 0
    });
    mapChart.dispatchAction({
        type: 'highlight',
        seriesIndex: 0,
        name: name
    });
    mapChart.dispatchAction({
        type: 'highlight',
        seriesIndex: 1,
        name: name
    });
    mapChart.dispatchAction({
        type: 'highlight',
        seriesIndex: 2,
        name: name
    });
})();

4. 示例

以下是两个使用此方法实现的Echarts轮播高亮地图的示例:

以上就是关于“一篇文章搞定echarts地图轮播高亮”的完整攻略,希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章搞定echarts地图轮播高亮 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • python处理cookie详解

    Python处理Cookie详解 在使用网络爬虫进行数据采集的过程中,常常需要处理网站返回的Cookie信息。本文将详细讲解如何使用Python处理Cookie。 什么是Cookie Cookie是一种在访问网站时,由网站服务器发送到用户浏览器的数据,用于记录用户信息、个人偏好和浏览历史等。Cookie可以取代session来进行用户状态的跟踪,且更加灵活。…

    JavaScript 2023年6月11日
    00
  • javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)

    实现锁定网页、密码解锁效果可以利用JavaScript的定时器函数和DOM操作来实现。具体实现过程如下: 第一步:创建锁屏页面 首先,需要创建一个锁屏页面。此页面包含一个输入框和一个解锁按钮。同时需要创建一些CSS样式来美化页面。 以下是一个简单的HTML示例: <!DOCTYPE html> <html> <head> …

    JavaScript 2023年6月11日
    00
  • JavaScript原始数据类型Symbol的用法详解

    以下是详细讲解“JavaScript原始数据类型Symbol的用法详解”的完整攻略: JavaScript原始数据类型Symbol的用法详解 什么是Symbol Symbol是JavaScript新增的一种原始数据类型,用于表示独一无二的值。Symbol的值是唯一的,即使使用相同的参数创建多个Symbol值,它们也是不相等的。这也是Symbol的主要特点和用…

    JavaScript 2023年5月28日
    00
  • JAVASCRIPT实现的WEB页面跳转以及页面间传值方法

    请看以下示范: JAVASCRIPT实现的WEB页面跳转以及页面间传值 页面跳转 在 JavaScript 中,可以通过修改 window.location 对象的属性来实现页面跳转。 直接跳转 // 直接跳转到目标 URL window.location = "https://www.example.com"; 重定向跳转 // 通过重…

    JavaScript 2023年6月11日
    00
  • 彻底理解js面向对象之继承

    彻底理解JavaScript面向对象之继承 什么是继承? 在面向对象的编程中,继承是允许一个对象获取另一个对象的属性和方法的过程。可以把继承看做是在已有的类的基础上创建一个新类的过程。 在JavaScript中,继承是通过原型链实现的。每个对象都有一个原型对象,原型对象也可能有一个原型对象,以此类推,直到原型链的顶端为止。当试图访问一个对象的属性或方法时,会…

    JavaScript 2023年5月27日
    00
  • vue下拉刷新组件的开发及slot的使用详解

    介绍 Vue 是目前最流行的前端框架之一,提供了丰富的开发工具和组件,在实现下拉刷新组件功能上也提供了很好的支持。通过本文,我们将学会如何通过 Vue 实现一个下拉刷新组件,并学习 slot 的使用。 步骤 创建组件 首先,我们需要创建一个下拉刷新组件。下面是一个基本的 Vue 组件声明: <template> <div> <!…

    JavaScript 2023年6月11日
    00
  • js下载文件并修改文件名

    下面是JS下载文件并修改文件名的完整攻略: 1. 使用XMLHttpRequest对象下载文件并修改文件名 XMLHttpRequest对象是一个内置的JavaScript对象,可以用于从服务器获取数据,包括文件。可以利用它来下载文件并修改文件名。 示例一:下载图片并修改文件名 function downloadImage(url, filename) { …

    JavaScript 2023年5月27日
    00
  • JavaScript(js)设置默认输入焦点(focus)

    关于如何设置默认输入焦点,我们可以采用js实现。具体步骤如下: 1. 通过js获取输入框元素 要设置默认输入焦点,首先要获取到目标输入框的DOM元素。可以通过js中的document.getElementById()或document.querySelector()方法获取到输入框元素并保存到变量中,具体代码如下: // 使用getElementById方法…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部