一篇文章搞定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日

相关文章

  • AngularJs E2E Testing 详解

    AngularJs E2E Testing 详解 在开发应用程序的过程中,我们需要确保这些程序在部署后正常运行。为了验证这些应用程序的功能,我们需要进行端到端 (End to End, E2E) 测试。 E2E 测试是一个自动化的过程,通过验证应用程序的模拟场景来模仿真实用户的行为。通过这种方式我们可以测试到所有层级,包括用户界面、功能、维护性、性能等。An…

    JavaScript 2023年6月10日
    00
  • 详解android与HTML混合开发总结

    详解 Android 与 HTML 混合开发总结 介绍 本文主要介绍 Android 和 HTML 混合开发的方法和技巧。Android 和 HTML 的混合开发可以将 Web 和 Native 的优势融合在一起,实现复杂的交互操作,同时保证了应用的性能和稳定性。下面详细介绍如何实现 Android 和 HTML 的混合开发。 WebView 构建基础 We…

    JavaScript 2023年6月11日
    00
  • jquery无法设置checkbox选中即没有变成选中状态

    当使用 jQuery 设置一个 checkbox 的选中状态时,在某些情况下可能会出现并没有设置成功的情况,通常是因为没有正确理解 checkbox 的3种状态:选中(checked)、未选中(unchecked)和半选状态(indeterminate)。 首先,我们需要明确 checkbox 的3种状态,如果一个 checkbox 没有设置“选中”或“未选…

    JavaScript 2023年6月10日
    00
  • js点击返回跳转到指定页面实现过程

    实现点击返回跳转到指定页面的过程,一般分为以下几步: 1.获取当前页面的浏览历史记录,即通过window对象的history属性获取。 2.将指定页面的相对路径或绝对路径存储到一个变量中。 3.使用JavaScript编写点击事件处理函数,在该函数中,修改浏览器的历史记录,使其返回到指定页面。通常使用history.pushState()方法实现此功能。该方…

    JavaScript 2023年6月11日
    00
  • JavaScript生成指定范围的时间列表

    下面我会就“JavaScript生成指定范围的时间列表”的完整攻略进行详细讲解,希望对您有所帮助。 1. 需求分析 在进行编程操作之前,我们首先需要对需求进行分析,弄清楚需要完成的具体目标。在这个需求中,我们需要实现如下功能: 生成指定范围的时间列表,以数组形式返回 可以指定时间间隔 包含起始时间和结束时间 2. 解决方案 有了需求之后,我们可以采用如下方式…

    JavaScript 2023年5月27日
    00
  • js实现touch移动触屏滑动事件

    首先,在JS中实现touch移动事件需要以下步骤: 1.监听touch事件,获取移动的距离及方向2.根据移动的距离及方向判断滑动操作:是垂直滑动还是水平滑动3.根据滑动的距离改变页面元素的位置4.结束滑动后执行相应的操作,比如改变元素的样式或者执行相关动画 下面是JS实现touch移动事件的完整示例: <!DOCTYPE html> <ht…

    JavaScript 2023年6月11日
    00
  • 使用JavaScript修改浏览器URL地址栏的实现代码

    使用JavaScript修改浏览器URL地址栏是一种在网站开发过程中比较常见的技术手段,可以使用户的浏览更加流畅,并且能够实现一些有趣的效果。下面是一个详细讲解如何使用JavaScript实现这个功能的攻略: 1. 实现方式 实现修改浏览器URL地址栏的方式有两种:一种是使用历史记录API,另一种是使用HTML5的pushState和replaceState…

    JavaScript 2023年6月11日
    00
  • 前端进阶JS数组高级用法大全教程示例

    前端进阶JS数组高级用法大全教程示例 基础知识 在讲解JavaScript数组的高级用法之前,我们需要了解一些JavaScript数组的基础知识。 JavaScript数组是一种存储有序数据集合的容器,可以包含任何类型的数据,包括数字、字符串、对象等。数组可以通过索引来访问包含在其中的元素,这些元素的索引从0开始。 在JavaScript数组中,有些方法是可…

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