Vue Echarts 显示地图且根据坐标设置标注点


哎哟我去

我就想用Echarts在页面上画一张地图,这张地图显示全国,然后我有几个坐标点的经纬度信息,需要在这个地图上根据经纬度标注在Echarts图表上,再有一个就是当我点击省份的时候,地图可以切换到省份的子区域里面,接这么简单。

实现

之前从来没接触过,现在懵逼的一比,靠了!

好在借助网上的资源或者说博客把我想实现的功能都是实现了。哎哟,顺便吐槽一下,现在真的是一家原创万家抄袭的博客世界,也不验证能不能成功就是一顿狂粘狂发表,真棒!

下载 geojson 文件

首先,我用的是 geojson 文件,没有用 js.
下载地址:http://datav.aliyun.com/tools/atlas/#&lat=32.287132632616384&lng=101.1181640625&zoom=4

Html代码

首先在页面上写一个div用来放地图

<template><div><h1>这里打算写地图</h1><div id="main" style="width: 900px;height:800px;border:1px solid red"></div></div>
</template>

ts代码

首先得装 echarts 插件。

npm install echarts --save


在使用 echarts 组件中引入 echarts 插件。

import echarts from 'echarts'

还需要 axios 插件,用来读取 geojson 文件。

npm install axios  --save

引入axios插件。

import axios from 'axios'

首先在组件里面引入中国的json文件。

const chinaJson = require("../../public/mapJson/china.json");

在data里面创建一个Echarts对象和配置对象。

  data(){return{myChart:'',distributionOptions:''}},

创建一个方法,用来配置 Echarts 的 Options 参数。

changeOptions (name) {// 经纬度数据const seriesList = [{data: [{ value: [106.9, 27.7] },{ value: [105.29, 27.32] },{ value: [106.04, 27.03] },{ value: [104.82, 26.58] },{ value: [107.82, 20.58] }]},{data: [{value: [107.43, 28.56]}]},{data: [{value: [107.5, 27.76]}]}];// 图标const series = seriesList.map(v => {return {type: "scatter", //配置显示方式为用户自定义coordinateSystem: "geo",data: v.data};});// optionsthis.distributionOptions = {tooltip: {        // 提示框组件show: true,     // 显示提示框组件trigger: "item",     // 触发类型triggerOn: "mousemove",  // 出发条件formatter: "名称:{b}<br/>坐标:{c}"},series,  // 数据geo: {map: name || 'china',  // 引入地图 省份或者 国家layoutCenter: ["50%", "50%"], //设置后left/right/top/bottom等属性无效layoutSize: "45%",roam: true, //开启鼠标缩放和漫zoom: 2,label: {normal: {//静态的时候展示样式show: true, //是否显示地图省份得名称textStyle: {color: "#fff",fontSize: 10,fontFamily: "Arial"}},emphasis: {  // 高亮状态下的样式//动态展示的样式color: "#fff"}},itemStyle: {   // 地图区域的多边形 图形样式。normal: {borderColor: "#07919e",  // 边框颜色areaColor: "#1c2f59",    //  区域颜色textStyle: {             // 文字颜色color: "#fff"},shadowBlur: 10,          // 图形阴影的模糊大小shadowOffsetX: 10        // 阴影水平方向上的偏移距离。},emphasis: {areaColor: "#1c2f59",color: "#fff"}}}};},

然后创建一个方法初始化地图数据。

 // 初始化地图数据init() {echarts.registerMap("china", chinaJson);this.changeOptions("china")this.myChart = echarts.init(document.getElementById("main"));this.myChart.setOption(this.distributionOptions);// 上边应该都懂,下面就是创建了一个点击事件,目的是点击省份子区域的时候可以切换到省份地图,省份的json文件自己下载。this.myChart.on("click", chinaParam => {let code = provinces[provincesText.indexOf(chinaParam.name)] || 100000this.getProvinceMapOpt(code,provincesName[provincesText.indexOf(chinaParam.name)])});window.onresize = function() {this.myChart.resize();};},

上面用到了三个参数,在项目里面定义一下,一定要对应起来,不要出错。

var provinces = ['310000', '130000','140000','150000','210000','220000','230000','320000','330000','340000','350000','360000','370000','410000','420000','430000','440000','450000','460000','510000','520000','530000','540000','610000','620000','630000','640000','650000', '110000', '120000', '500000', '810000', '820000', '710000'];
var provincesText = ['上海', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省','黑龙江省',  '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省','河南省', '湖北省', '湖南省', '广东省', '广西省', '海南省', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区', '北京市', '天津市', '重庆市', '香港', '澳门', '台湾省'];
var provincesName = ['shanghai', 'hebei','shanxi','neimenggu','liaoning','jilin','heilongjiang','jiangsu','zhejiang','anhui','fujian','jiangxi','shandong','henan','hubei','hunan','guangdong','guangxi','hainan','sichuan','guizhou','yunnan','xizang','shanxi1','gansu','qinghai','ningxia','xinjiang', 'beijing', 'tianjin', 'chongqing', 'xianggang', 'aomen', 'taiwan'];

在点击事件里面用到了一个方法,目的就是切换子区域重新加载Echarts的作用。

//显示各省地图
getProvinceMapOpt(provinceAlphabet, name){var path = '/mapJson/province/'+provinceAlphabet+'.json'if( provinceAlphabet === 100000 ){path = '/mapJson/china.json'}axios.get(path).then((s)=>{echarts.registerMap(name, s.data)this.changeOptions(name)this.myChart.setOption(this.distributionOptions, true);})
},

最后,初始化地图。

  mounted() {this.init();},

就出来上边的效果了。就这样。

还有许多的不足,后期慢慢改。

项目源码参考:https://gitee.com/wjw1014/vue_learning_vuex/blob/master/src/components/myEcharts.vue

Vue Echarts 显示地图且根据坐标设置标注点相关推荐

  1. Vue+Echarts+百度地图 小例子

    刚学完Echarts后,看到一些官方例子,粘贴代码下来却实现不了相应的效果,经过一番了解,发现还要引入百度地图,记录详细过程如下. 1.安装echarts(使用3.x,4.x) npm install ...

  2. vue+echarts中国地图+省市级地图(全程教学,你也可以)

    echarts+vue中国地图,点击进入省级地图 VUE+Echarts+省市地图钻取(简洁版,超详细) 以上两篇来自站内,是本文的主要参考来源. 首先上才艺 首先需要引入 echarts 包 npm ...

  3. vue+echarts 区域地图绘制(街道)

    vue+echarts 区域地图绘制(街道) 1.以下是本人参考别的博主的链接 2.需要用到的资源 3.获取地图JSON (1)[阿里云](http://datav.aliyun.com/portal ...

  4. vue+ echarts实现地图(中国地图)

    ** vue+ echarts实现地图(中国地图) ** <div class="myChartMap" id="myChartMap" >< ...

  5. Vue+Echarts+百度地图API

    Vue+Echarts+百度地图API 不容易啊,又注册了一个地图账户 使用npm安装方式 去百度地图官网申请key,也就是地图API密钥AK 在vue项目的public文件夹中的index.html ...

  6. vue echarts 山东地图 toptip滑过提示显示文字 合并莱芜的

    import echarts from "echarts"; import getCityLists from "../../../json/shandong.json& ...

  7. 前端jq/vue echarts中国地图的实现

    一.jquery项目实现echarts中国地图 1.引入相关资源文件 jquery.echarts 等 <script src="https://cdn.bootcdn.net/aja ...

  8. Echarts中国地图各省份区域设置不同的颜色

    摘要: 接着<Echarts引入中国地图>续写,我们的项目需求是要求地图的背景颜色要各省份不同.看了文档同时也看了相关官网例子,写出来总结下吧,以便以后需要. 实现: 1.在series中 ...

  9. vue:echarts自定义地图

    前言 echarts有地图,但是echarts的地图只支持到三级(省市区),所以有的时候,我们就需要自己定制化地图 准备 我们绘制地图前,我们需要地图的点位置,这些有几种方式 1.我们进入http:/ ...

最新文章

  1. ios uiview 如何刷新_UIView的重绘及布局刷新
  2. python 指针_python入门指针
  3. linux下安装树梅派系统,优麒麟树莓派系统(优麒麟 for Raspberry Pi)的安装方法...
  4. SQL入门语句之LIKE、GLOB和LIMIT
  5. Java基础——Java NIO详解(一)
  6. [软件]Beyond Compare
  7. div超出部分点点显示
  8. Xshell利用密钥远程登录Linux
  9. tenrrt编译出错
  10. 驰为hi8pro 刷win10单系统
  11. 数学建模——01规划 / 线性规划 (工具:matlab + lingo,算法:Folyd)
  12. ExtJs学习笔记——Ext.grid.EditorGridPanel的使用
  13. H5唤醒Android App
  14. 医保结余7600亿匮
  15. CPSR SPSR
  16. 1688获得店铺的所有商品
  17. 一个光子的能量是多少?
  18. Genius In Our Lives - Stéphane Mallat
  19. jmeter分布式执行远程机报错,提示“Engine is busy – please try later”
  20. 图像质量评价数据库TID2013 网盘下载

热门文章

  1. mtk android wifi,MTK android WIFI地址 不写随机变动问题
  2. macbook没有权限打开文件_手把手教你删除没有权限的文件
  3. java备份还原mysql数据库
  4. c语言已知某班男生有n1,C语言程序设计–第10章课后习题.pdf
  5. 对matlab的认识和理解1000字,matlab的认识、简介以及基本操作和意义.ppt
  6. 寺冈labelnet使用说明_寺冈秤常用操作手册
  7. mysql静态化设计_网站静态化与mysql优化
  8. Rain on your Parade HDU - 2389 【Hopcroft-karp 算法】
  9. hdu2389-二分匹配HK算法
  10. camera学习所必备的知识(第六天)