内容简介:高德地图Echarts 中国地图
准备工作
- 高德地图申请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 = true script.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 = reject document.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'; //中国地图js import 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++) { //生成行政区划polygon var 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++) { //生成行政区划polygon var 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++) { //生成行政区划polygon var 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 = 0 for (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(中国地图)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 用Python画中国地图,实现各省份数据可视化
- 高德地图:2017年度中国主要城市公共交通大数据分析报告
- 专访丨Alex Barth:数字定义地图,Mapbox将发力中国市场
- 极益发布地图插件,用于背景地图与业务地图
- Java - 调用 echarts 提供的地图压缩方法压缩地图
- 高德地图附近地图改版 场景化个性化推荐身边好去处
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms on Strings, Trees and Sequences
Dan Gusfield / Cambridge University Press / 1997-5-28 / USD 99.99
String algorithms are a traditional area of study in computer science. In recent years their importance has grown dramatically with the huge increase of electronically stored text and of molecular seq......一起来看看 《Algorithms on Strings, Trees and Sequences》 这本书的介绍吧!