美文网首页
创建一个中国地图

创建一个中国地图

作者: 努力努力再努力_g | 来源:发表于2021-08-18 10:25 被阅读0次

1 创建一个中国地图

  <div>
    <div id="china"></div>
  </div>
</template>
<script>
import echarts from 'echarts'
//echart自适应配置,可以不用
import chartResize from '@/assets/js/chartResize'
//网上下载的china.js
import '@/assets/js/china'
export default {
  mixins: [chartResize],
  data () {
    return {
      chart: null,
      options: {}
    }
  },
  methods: {
    initChart () {
      const echartsDom = document.querySelector('#china')
      this.chart = echarts.init(echartsDom)
      this.chart.clear()
      this.options = { // 进行相关配置
        backgroundColor: '#051b4a',
        tooltip: {}, // 鼠标移到图里面的浮动提示框
        dataRange: {
          show: false,
          min: 0,
          max: 1000,
          text: ['High', 'Low'],
          realtime: true,
          calculable: true,
          color: ['orangered', 'yellow', 'lightskyblue']
        },
        geo: { // 这个是重点配置区
          map: 'china', // 表示中国地图
          roam: true,
          label: {
            normal: {
              show: false
            },
            emphasis: {
              show: false,
              textStyle: {
                color: '#fff'
              }
            }
          },
          itemStyle: {
            normal: {
              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)',
              // shadowColor: 'rgba(255, 255, 255, 1)',
              shadowOffsetX: -2,
              shadowOffsetY: 2,
              shadowBlur: 10
            },
            emphasis: {
              areaColor: '#389BB7',
              borderWidth: 0
            }
          }
        },
        series: [{
          type: 'scatter',
          coordinateSystem: 'geo' // 对应上方配置
        }
        ]
      }
      this.chart.setOption(this.options)
      this.chart.resize()
      window.onresize = () => {
        this.chart.resize()
      }
    }
  },
  mounted () {
    this.initChart()
  }
}
</script>
<style lang="scss">
#china {
  width: 100%;
  height: 937px;
}
</style>


效果图如下


image.png

2 创建点位

<template>
  <div>
    <div id="china"></div>
  </div>
</template>
<script>
import echarts from 'echarts'
import chartResize from '@/assets/js/chartResize'
import '@/assets/js/china'
import { data, geoCoordMap } from '@/assets/js/data'
const convertData = require('@/assets/js/chinamap.json')
export default {
  mixins: [chartResize],
  data () {
    return {
      chart: null,
      options: {}
    }
  },
  methods: {
    initChart () {
      const echartsDom = document.querySelector('#china')
      this.chart = echarts.init(echartsDom)
      this.chart.clear()
      this.options = { // 进行相关配置
        backgroundColor: '#051b4a',
        tooltip: {}, // 鼠标移到图里面的浮动提示框
        dataRange: {
          show: false,
          min: 0,
          max: 1000,
          text: ['High', 'Low'],
          realtime: true,
          calculable: true,
          color: ['orangered', 'yellow', 'lightskyblue']
        },
        geo: { // 这个是重点配置区
          map: 'china', // 表示中国地图
          roam: true,
          label: {
            normal: {
              show: false
            },
            emphasis: {
              show: false,
              textStyle: {
                color: '#fff'
              }
            }
          },
          itemStyle: {
            normal: {
              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)',
              // shadowColor: 'rgba(255, 255, 255, 1)',
              shadowOffsetX: -2,
              shadowOffsetY: 2,
              shadowBlur: 10
            },
            emphasis: {
              areaColor: '#389BB7',
              borderWidth: 0
            }
          }
        },
        series: [
          {
            type: 'scatter',
            coordinateSystem: 'geo' // 对应上方配置
          },
          {

            name: '数量',
            type: 'effectScatter',
            coordinateSystem: 'geo',
            data: this.convertData(),
            symbolSize: function (val) {
              return val[2] / 100
            },
            showEffectOn: 'render',
            rippleEffect: {
              brushType: 'stroke'
            },
            hoverAnimation: true,
            label: {
              normal: {
                formatter: '{b}',
                position: 'right',
                show: true
              }
            },
            itemStyle: {
              normal: {
                color: '#f4e925',
                shadowBlur: 10,
                shadowColor: '#333'
              }
            },
            zlevel: 1
          }
        ]
      }
      this.chart.setOption(this.options)
      this.chart.resize()
      window.onresize = () => {
        this.chart.resize()
      }
    },
    convertData () {
      const res = []
      for (var i = 0; i < data.length; i++) {
        var geoCoord = geoCoordMap[data[i].name]
        if (geoCoord) {
          res.push({
            name: data[i].name,
            value: geoCoord.concat(data[i].value)
          })
        }
      }
      return res
    }
  },
  mounted () {
    this.initChart()
  }
}
</script>
<style lang="scss">
#china {
  width: 100%;
  height: 937px;
}
</style>

data.js

//示例数据
const data = [
  { name: '上海', value: 2623 }
]

const geoCoordMap = {
  上海: [121.48, 31.22]
}

export { data, geoCoordMap }

image.png

连线

<template>
  <div>
    <div id="china"></div>
  </div>
</template>
<script>
import echarts from 'echarts'
import chartResize from '@/assets/js/chartResize'
import '@/assets/js/china'
import { data, geoCoordMap } from '@/assets/js/data'
const convertData = require('@/assets/js/chinamap.json')
export default {
  mixins: [chartResize],
  data () {
    return {
      chart: null,
      options: {},
      pointData: [
        {
          name: '上海',
          value: 22
        }
      ]
    }
  },
  methods: {
    initChart () {
      const echartsDom = document.querySelector('#china')
      this.chart = echarts.init(echartsDom)
      this.chart.clear()
      this.options = { // 进行相关配置
        backgroundColor: '#051b4a',
        tooltip: {}, // 鼠标移到图里面的浮动提示框
        dataRange: {
          show: false,
          min: 0,
          max: 1000,
          text: ['High', 'Low'],
          realtime: true,
          calculable: true,
          color: ['orangered', 'yellow', 'lightskyblue']
        },
        geo: { // 这个是重点配置区
          map: 'china', // 表示中国地图
          roam: true,
          label: {
            normal: {
              show: false
            },
            emphasis: {
              show: false,
              textStyle: {
                color: '#fff'
              }
            }
          },
          itemStyle: {
            normal: {
              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)',
              // shadowColor: 'rgba(255, 255, 255, 1)',
              shadowOffsetX: -2,
              shadowOffsetY: 2,
              shadowBlur: 10
            },
            emphasis: {
              areaColor: '#389BB7',
              borderWidth: 0
            }
          }
        },
        series: [
          {
            type: 'scatter',
            coordinateSystem: 'geo' // 对应上方配置
          },
          // 地图点位
          {

            name: '数量',
            type: 'effectScatter',
            coordinateSystem: 'geo',
            data: this.convertData(),
            symbolSize: function (val) {
              return val[2] / 100
            },
            showEffectOn: 'render',
            rippleEffect: {
              brushType: 'stroke'
            },
            hoverAnimation: true,
            label: {
              normal: {
                formatter: '{b}',
                position: 'right',
                show: true
              }
            },
            itemStyle: {
              normal: {
                color: '#f4e925',
                shadowBlur: 10,
                shadowColor: '#333'
              }
            },
            zlevel: 1
          },
          // 地图连线动效
          {
            type: 'lines',
            zlevel: 2,
            effect: {
              show: true,
              period: 4, // 箭头指向速度,值越小速度越快
              trailLength: 0.02, // 特效尾迹长度[0,1]值越大,尾迹越长重
              symbol: 'arrow', // 箭头图标
              symbolSize: 3 // 图标大小
            },
            lineStyle: {
              normal: {
                color: 'rgb(244, 110, 54)',
                width: 0.1, // 尾迹线条宽度
                opacity: 0.5, // 尾迹线条透明度
                curveness: 0.3 // 尾迹线条曲直度
              }
            },
            // 设置终点为上海
            data: this.convertToLineData([121.48, 31.22])
          }
        ]
      }
      this.chart.setOption(this.options)
      this.chart.resize()
      window.onresize = () => {
        this.chart.resize()
      }
    },
    // 点位信息对应
    convertData () {
      const res = []
      for (var i = 0; i < data.length; i++) {
        var geoCoord = geoCoordMap[data[i].name]
        if (geoCoord) {
          res.push({
            name: data[i].name,
            value: geoCoord.concat(data[i].value)
          })
        }
      }
      return res
    },
    // 线信息对应  gps终点坐标
    convertToLineData (gps) {
      var res = []
      for (var i = 0; i < data.length; i++) {
        var dataItem = data[i]
        var fromCoord = geoCoordMap[dataItem.name]
        var toCoord = gps // 郑州
        //  var toCoord = geoGps[Math.random()*3];
        if (fromCoord && toCoord) {
          res.push([{
            coord: fromCoord,
            value: dataItem.value
          }, {
            coord: toCoord
          }])
        }
      }
      return res
    }
  },
  mounted () {
    this.initChart()
  }
}
</script>
<style lang="scss">
#china {
  width: 100%;
  height: 937px;
}
</style>

image.png

相关文章

  • 创建一个中国地图

    1 创建一个中国地图 效果图如下 2 创建点位 data.js 连线

  • 拼图

    今天我妈妈给我买了两个拼图,一个中国地图一个是世界地图。我先把中国地图打开,然后我的妈妈一起拼。这个中国地图特别简...

  • 拼中国地图

    今天,我完成了一项伟大的工程——拼中国地图。 中国地图一共有500片拼图,说是中国地图,其实周边还...

  • angular echarts 中国散点图

    angular7中引入中国地图最近项目中需要做一个数据大屏,用中国地图散点图展示一些数据,图表用的是echart4...

  • 清末最让西方列强关注的中国小镇,走出近代中国数十位风云人物

    在清朝末年,西方列强如德、英、法等国出版的中国地图上,都会标注一个叫小站的镇子。这个小镇,是中国地图上唯一被标注的...

  • 天才周少辉

    发现了中国地图是画

  • 土豆的灵感

    中国地图 中国地图真厉害, 一只公鸡跳出来。 北京能吞下大海, 广东奔跑公鸡快。 奇怪奇怪真奇怪, 串串鸡...

  • 中国地图

    五岁的升升上大班了。 升升喜欢玩爸爸给他买的中国地图拼图。一幅地图由那么多种不同颜色不同形状的拼块组成,这些小拼块...

  • 中国地图

    雄鸡向东望,嘴饮鸭绿江。 口啄日本虫,脚踩太平洋。 两河奔热血,长城踞国疆。 偌偌大中华,甲甲富一方。 一一彭甫2...

  • 中国地图

    我家有一个中国地图,我们的中国好大呀。外面都是英国外国什么的,我觉得中国像一只大公鸡呢,我觉得中国有沧州,北京,香...

网友评论

      本文标题:创建一个中国地图

      本文链接:https://www.haomeiwen.com/subject/jcwibltx.html