效果图

准备工作

  • 高德地图申请key
  • 安装Echarts 中国地图

高德地图

  • 官方API:点我进入
  • 创建AMap.js
export default function MapLoader () {return new Promise((resolve, reject) => {if (window.AMap) {resolve(window.AMap)} else {// 动态创建script标签var script = document.createElement('script')script.type = 'text/javascript'script.async = truescript.src = 'https://webapi.amap.com/maps?v=1.4.9&callback=initAMap&key=Key&plugin=AMap.DistrictSearch,AMap.Circle,AMap.LngLat,AMap.Polyline,AMap.LngLat,AMap.Text,AMap.Geocoder';// plugin后的是需要的插件script.onerror = rejectdocument.head.appendChild(script)}window.initAMap = () => {resolve(window.AMap)}})
}
复制代码

Echarts 中国地图

  • 安装Echarts
npm install echarts -S
复制代码

开始使用

  • 创建组件 distribution.vue
  • 写入Echarts 需要的DOM
    <div class="main_wrap" ><div ref="main" class="main_box"></div><div class="Rankingtips"><p>分布指数</p><div class="color_tip"><span style="float: left">高</span><div></div><div></div><div></div><div></div><div></div><span style="margin-left: 5px">低</span></div></div></div>
复制代码
  • 写入高德地图需要的DOM
    <div class="main_wrap" v-show="activeState2"><div id="container" style="height: 100%"></div></div>
复制代码
  • 引入高德地图、Echarts
    import 'echarts/map/js/china'; //中国地图jsimport MapLoader from 'components/home/AMap'
复制代码
  • Echarts方法
generateEcharts() {var echarts = require('echarts');var myChart = echarts.init(this.$refs.main);  // 基于准备好的dom,初始化echarts实例this.$ajax.get(this.HOST + "/redesign/home/findEnterpriseistribution").then( (res) => {// 数据格式// [//   {name: "北京", value: 3, ranking: 1},//   {name: "河北", value: 2, ranking: 2},//   {name: "上海", value: 1, ranking: 3},//   {name: "广东", value: 1, ranking: 4}//   ...// ]this.homebution = res.data.resultObject;var data = [];for (let i = 0; i < res.data.resultObject.length; i++) {this.homebutionnum += res.data.resultObject[i].value;let classnum = ""// 排名显示样式if(res.data.resultObject[i].ranking == 1) { classnum = "#1669e6"}else if(res.data.resultObject[i].ranking > 1 && res.data.resultObject[i].ranking <= 4) {classnum = "#31a4ed"}else if(res.data.resultObject[i].ranking > 4 && res.data.resultObject[i].ranking <= 10) {classnum = '#2cccfd'}else if(res.data.resultObject[i].ranking > 10 && res.data.resultObject[i].ranking <= 20) {classnum = '#7fe2fd'}else {classnum = '#d9f4fe'}data.push({name: res.data.resultObject[i].name,itemStyle: {normal: {areaColor: classnum,// borderWidth: 2},emphasis: {//高亮状态下的多边形和标签样式borderWidth: 1,// borderColor: '#d9f4fe',areaColor: '#d9f4fe',label: {shadowColor: '#d9f4fe', //默认透明shadowBlur: 10,show: true,textStyle: {fontSize: 12,color: '#3db77f'}}}},label: {normal: {show: true,textStyle: {fontSize: 12,color: '#0d6fb8'}},emphasis: {show: true,color: '#3db77f'}},value: res.data.resultObject[i].value ? res.data.resultObject[i].value: "",ranking: res.data.resultObject[i].ranking ? res.data.resultObject[i].ranking: ""})}// 准备提示数据var option = {tooltip: {formatter:  (params) => {var info = "";if(params.data) {info = `<div style="width: 60px;height: 60px"><p style="font-size:12px">${ params.name }</p><p style="font-size:12px">${ params.data.value }</p><p style="font-size:12px">排名:${ params.data.ranking }</p></div>`}else {info = `<div style="width: 60px;height: 60px"><p style="font-size:12px">${ params.name }</p></div>`}return info;},backgroundColor: "rgba(0,0,0,.6)",//提示标签背景颜色textStyle: { color: "#fff" } //提示标签字体颜色},//配置属性series: [{  name: '数据',  type: 'map',  mapType: 'china',   roam: true,  label: {  normal: {  show: false  //省份名称  },  emphasis: { show: false  }  },  data: data  //数据}],};//使用制定的配置项和数据显示图表myChart.setOption(option);})
}
复制代码
  • 高德地图方法
Scottmap() {let that = this;that.map = "";MapLoader().then(AMap => {console.log('地图加载成功')that.map = new AMap.Map('container', {center: [116.05438, 38.98065],// center: [116.397428, 39.90923],zoom: 5})// 由于项目是按雄安地区使用 API暂时还未把雄安划分 所以决定把安新县、雄县、容城县(三县合一就是雄安)绘制成高亮// 绘制高亮var district = new AMap.DistrictSearch({// 返回行政区边界坐标等具体信息extensions: 'all',// 设置查询行政区级别为 区 level: 'district'})var polygons=[];var polygons2=[];var polygons3=[];district.search('安新县', (status, result) => {if(polygons) {that.map.remove(polygons)//清除上次结果}polygons = [];let bounds = result.districtList[0].boundaries;if (bounds) {for (let i = 0; i < bounds.length; i++) {//生成行政区划polygonvar polygon = new AMap.Polygon({strokeWeight: 1,path: bounds[i],fillOpacity: 0.4,fillColor: '#80d8ff',strokeColor: '#0091ea'});polygons.push(polygon);}}that.map.add(polygons);});district.search('雄县', (status2, result2) => {if(polygons2) {that.map.remove(polygons2)//清除上次结果}polygons2 = [];let bounds = result2.districtList[0].boundaries;if (bounds) {for (let i = 0; i < bounds.length; i++) {//生成行政区划polygonvar polygon = new AMap.Polygon({strokeWeight: 1,path: bounds[i],fillOpacity: 0.4,fillColor: '#80d8ff',strokeColor: '#0091ea'});polygons2.push(polygon);}}that.map.add(polygons2)})district.search('容城县', (status2, result2) => {if(polygons3) {that.map.remove(polygons2)//清除上次结果}polygons3 = [];let bounds = result2.districtList[0].boundaries;if (bounds) {for (let i = 0; i < bounds.length; i++) {//生成行政区划polygonvar polygon = new AMap.Polygon({strokeWeight: 1,path: bounds[i],fillOpacity: 0.4,fillColor: '#80d8ff',strokeColor: '#0091ea'});polygons3.push(polygon);}}that.map.add(polygons3)})// 构造矢量圆形(圆)let circle = new AMap.Circle({center:  [116.05438, 38.98065], // 雄安的中心点radius: that.distance * 1000,  //半径strokeColor: "#ffffff",  //线颜色strokeOpacity: 1,  //线透明度strokeWeight: 3,  //线粗细度fillColor: "#276cd4",  //填充颜色fillOpacity: 0.2 //填充透明度});that.map.add(circle);that.map.setFitView(circle);let lnglat = new AMap.LngLat(116.05438, 38.98065) // lng, lat 替换成传入的坐标 let polylinePath = [new AMap.LngLat(116.05438, 38.98065),new AMap.LngLat(lnglat.offset(that.distance * 1000,0).lng,38.98065)];// 创建线覆盖物let polyline = new AMap.Polyline({path: polylinePath,strokeColor: "#ffffff", //线颜色strokeOpacity: 1,       //线透明度strokeWeight: 2,        //线宽strokeStyle: "solid",   //线样式strokeDasharray: [10, 5] //补充线样式});that.map.add(polyline);// 绘制字let textPos = lnglat.offset(that.distance * 500,that.distance * 50);let text = new AMap.Text({text: `${ that.distance }公里`,position: textPos,map: this.map,style:{'background': 'transparent','border': '0 none','color': '#276cd4','font-size':'14px'}})that.map.add(text);// 测试距离let Centralpoint = [116.05438, 38.98065];let targetpoint = this.region// debugger// 转经纬度let geocoder = new AMap.Geocoder({city: '全国', //城市设为北京,默认:“全国”});let markernum = 0for (let i = 0; i < targetpoint.length; i++) {geocoder.getLocation(targetpoint[i], (status, result) => {if (status === 'complete'&& result.geocodes.length) {let dis = AMap.GeometryUtil.distance(Centralpoint,result.geocodes[0].location);// 绘制点标记显示内容,HTML要素字符串if(dis <= that.distance * 1000) {markernum++;let markerContent = '' +'<div class="custom-content-marker" style="position: relative;">' +'   <img src="//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png" style="width: 23px;height: 30px">' +'<div style="width: 23px;position: absolute;left: 0px;top: 0;margin: auto;color: #ffffff;text-align: center">'+ markernum +'</div>'+'</div>';this.$ajax.get(this.HOST + "/redesign/home/findCompanyAll").then( (res) => {this.matchingenterpriseList.push(res.data.resultObject[i])})let marker = new AMap.Marker({content: markerContent,                                position: result.geocodes[0].location,offset: new AMap.Pixel(-13, -30),extData:{id: markernum}});that.markers.push(marker);marker.setMap(this.map);}}})}that.matchingenterpriseState = true;}, e => {console.log('地图加载失败' ,e)})
},
复制代码
  • 左侧企业列表
// 企业鼠标经过
matchingenterprisemouseenter(item,index) {this.activemetchmouseenter = index;let targetMarker = {};for (let i = 0; i < this.markers.length; i++) {let id = this.markers[i].getExtData().id;if(id == index){targetMarker = this.markers[i];break;}}// 重新替换样式let markerContent = '' +'<div class="custom-content-marker" style="position: relative;">' +'   <img src="//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png" style="width: 25px;height: 34px">' +'<div style="position: absolute;left: 9px;top: 0;margin: auto;color: #ffffff">'+ index +'</div>'+'</div>';// targetMarker.setIcon('//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png');targetMarker.setContent(markerContent)let position =  targetMarker.getPosition();this.infoWindow = new AMap.InfoWindow({position: position,offset: new AMap.Pixel(0, -35),content: item.companyName});this.infoWindow.open(this.map);
},
复制代码
// 企业鼠标离开
matchingenterprisemouseleave(item,index) {this.activemetchmouseenter = "";let targetMarker = {};for (let i = 0; i < this.markers.length; i++) {let id = this.markers[i].getExtData().id;if(id == index){targetMarker = this.markers[i];break;}}let markerContent = '' +'<div class="custom-content-marker" style="position: relative;">' +'   <img src="//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png" style="width: 25px;height: 34px">' +'<div style="position: absolute;left: 9px;top: 0;margin: auto;color: #ffffff">'+ index +'</div>'+'</div>';// targetMarker.setIcon('//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png');targetMarker.setContent(markerContent)this.map.remove(this.infoWindow);
},
复制代码
// 企业点击
matchingenterpriseclick(item,index) {this.activeState3 = true;this.activeState1 = false;this.activeState = false;this.itemList = item;// this.map.remove(overlayGroups);let geocoder = new AMap.Geocoder({city: '全国', //城市设为北京,默认:“全国”});geocoder.getLocation(item.address, (status, result) => {this.map.setCenter(result.geocodes[0].location); //设置地图中心点this.map.setZoom(30); // 缩放级别})
},
复制代码

具体代码

VUE 记一次高德地图和Echarts(中国地图)相关推荐

  1. 【echarts 中国地图射线版本】vue实现中国地图航线动画效果,地图上添加散点效果【详细注释,通俗易懂】

    先上效果图 前置条件,必看 首先你需要安装echarts并引入 然后你需要下载china.json文件并注册引入,不然不生效 当然很多新手可能不知道china.json在哪里下载,因为官方已经没有了, ...

  2. VUE 中实现echarts中国地图 人口迁徙

    VUE 中实现echarts中国地图 人口迁徙 效果图: 安装Echarts依赖 要在vue中使用Echarts 需要先安装依赖 npm install echarts --save 这是我的Echa ...

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

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

  4. Echarts中国地图三级钻取

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 前言 最近其实一直在用Echa ...

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

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

  6. echarts 中国地图 世界地图

    最近项目中用到了echarts 中国地图 世界地图,特在这记录一下. world.js 下载链接(world_new.js带有中国地区名称,另一个只是用来显示中国地图) 链接:https://pan. ...

  7. Echarts中国地图背景颜色渐变

    摘要:关于Echarts地图的问题,在第一篇就说过引入等相关问题(如还有疑惑请先看之前的文章传送门).地图的背景颜色如何实现渐变呢?主要利用的是Echarts中的geo和visualMap结合实现.v ...

  8. HTML中地图根据数据变色,echarts中国地图根据数据对省份渲染不同的颜色

    echarts中国地图 .centerItem { width: 856px; height: 640px; background-color: #fff; margin: 110px auto 0 ...

  9. 【echarts 中国地图增加南海九段线】

    echarts 中国地图增加南海九段线 最近在开发echarts 中国地图时,客户提出中国地图要完整,需要增加南海九段线. 这是个政治任务,但是echarts里面的文档没有关于南海诸岛九段线的相关配置 ...

最新文章

  1. 国内最优秀的Leangoo敏捷项目协作工具
  2. android mmkv使用_MMKV解读
  3. Vue.js 过滤器
  4. python爬虫---实现项目(二) 分析Ajax请求抓取数据
  5. HTML页面仿iphone数字角标
  6. 解决Tomcat运行springboot打包war工程,出现: Unable to compile class for JSP 的问题
  7. C# ref与out关键字解析
  8. 中央暗示:07年别急买房
  9. [vue] vue组件之间的通信都有哪些?
  10. 一篇博客读懂设计模式之---工厂模式
  11. 【机器学习】机器学习从零到掌握之九 -- 教你使用K近邻算法形成完整系统
  12. QQ消息支持HTML吗,WebQQ全面升级支持IE9 HTML5无处不在
  13. Delphi的MessageBox对话框使用
  14. VIm中Python自动补全插件Pydiction
  15. 中国哲学书电子化计划
  16. css3实现动画的三种方式
  17. 毕索大学计算机科学怎么样,毕索大学计算机硕士介绍
  18. 原创西门子SMART 200 modbus rtu通讯宇电温控器例程
  19. android6.0权限适配RxPermissions
  20. Apache和Tomcat的整合过程(转载)

热门文章

  1. 像CTO一样思考:如何高效管理30人的研发团队?
  2. java设计模式学习
  3. vs C++ + MFC项目统一升级升级目标:使用C++20标准 使用最新windowsSDK 使用最新平台工具集(vs2019)
  4. 『每周译Go』Uber 的 API 网关架构
  5. 在电脑怎么找到环境变量
  6. 这些多项目人员分配及管理的技巧,你都知道吗?
  7. 射频识别(RFID)技术介绍
  8. python——使用API
  9. 计算机网络设备为啥要接地,机房中 机柜(设备)外壳为什么接地? 机房如何做接地?...
  10. vnc服务的安装及客户端使用