百度地图API : 使用百度地图的 api , 它能够在线联网展示地图, 百度地图需要申请 ak 矢量地图 : 可以离线展示地图, 需要开发者准备矢量地图数据 接下来的实现是通过矢量图的方式来实现的
基本使用
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/echarts.js"></script><script src="../js/jquery.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div"))$.get('../json/map/china.json', function (chinaJson) {echarts.registerMap('chinaMap', chinaJson)var option = { geo: {type: 'map',// map是一个固定的值map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致} };mCharts.setOption(option)})</script></body></html>
用vscode打开一定要使用本地服务器的方式 注意: 需要注意的是, 由于在代码中使用了 Ajax , 所以, 关于此文件的打开, 不能以 file 的协议打开, 应 该将其置于 HTTP 的服务之下方可正常展示地图
地图的常见配置
- 缩放拖动: roam
```javascript
var mCharts = echarts.init(document.querySelector(“div”))
$.get('../json/map/china.json', function (chinaJson) {echarts.registerMap('chinaMap', chinaJson)var option = { geo: {type: 'map',// map是一个固定的值map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致roam: true,// 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图} };mCharts.setOption(option)})
- **名称显示: label**```javascriptvar mCharts = echarts.init(document.querySelector("div"))$.get('../json/map/china.json', function (chinaJson) {echarts.registerMap('chinaMap', chinaJson)var option = { geo: {type: 'map',// map是一个固定的值map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致roam: true,// 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图label: { show: true }//显示名称} };mCharts.setOption(option)})
- 初始缩放比例: zoom
- 地图中心点: center
var mCharts = echarts.init(document.querySelector("div"))$.get('../json/map/china.json', function (chinaJson) {echarts.registerMap('chinaMap', chinaJson)var option = { geo: {type: 'map',// map是一个固定的值map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致roam: true,// 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图label: { show: true },//显示名称zoom: 0.9, // 地图的缩放比例, 大于1代表放大, 小于1代表缩小center: [87.617733, 43.792818] // 当前视角的中心点,用经纬度表示} };mCharts.setOption(option)
地图常见效果
visualMap 是视觉映射组件, 和之前区域缩放 dataZoom 很类似, 可以做数据的过滤. 只不过 dataZoom 主要使用在直角坐标系的图表, 而 visualMap 主要使用在地图或者饼图中
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/echarts.js"></script><script src="../js/jquery.min.js"></script></head><body><div style="width: 600px;height:400px;border:1px solid red"></div><script>var mCharts = echarts.init(document.querySelector("div"))$.get('../json/map/china.json',function (chinaJson) {echarts.registerMap('chinaMap', chinaJson)var airData = [{ name: '北京', value: 39.92 },{ name: '天津', value: 39.13 }, { name: '上海', value: 31.22 },{ name: '重庆', value: 66 }, { name: '河北', value: 147 },{ name: '河南', value: 113 }, { name: '云南', value: 25.04 },{ name: '辽宁', value: 50 }, { name: '黑龙江', value: 114 },{ name: '湖南', value: 175 }, { name: '安徽', value: 117 },{ name: '山 东', value: 92 }, { name: '新疆', value: 84 },{ name: '江苏', value: 67 }, { name: '浙江', value: 84 },{ name: '江西', value: 96 }, { name: '湖北', value: 273 },{ name: '广西', value: 59 }, { name: '甘肃', value: 99 },{ name: '山西', value: 39 }, { name: '内蒙古', value: 58 },{ name: '陕西', value: 61 }, { name: '吉林', value: 51 },{ name: '福建', value: 29 }, { name: '贵州', value: 71 },{ name: '广东', value: 38 }, { name: '青海', value: 57 },{ name: '西藏', value: 24 }, { name: '四川', value: 58 },{ name: '宁夏', value: 52 }, { name: '海南', value: 54 },{ name: '台湾', value: 88 }, { name: '香港', value: 66 },{ name: '澳门', value: 77 }, { name: '南海诸岛', value: 55 }]var option = {geo: {type: 'map',map: 'chinaMap',roam: true,label: { show: true }},series: [{data: airData,geoIndex: 0,type: 'map'}],visualMap: {min: 0,// 最小值max: 300,// 最大值inRange: {color: ['white', 'red']// 颜色的范围},calculable: true// 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)}}mCharts.setOption(option)})</script></body></html>
散点图结合地图
- 1.给 series 这个数组下增加新的对象
- 2.准备好散点数据,设置给新对象的 data
var scatterData = [{value: [117.283042, 31.86119] // 散点的坐标, 使用的是经纬度}]
- 3.配置新对象的 type
type:effectScatter 让散点图使用地图坐标系统 coordinateSystem: ‘geo’ 让涟漪的效果更加明显 rippleEffect: { scale: 10 }
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/echarts.js"></script><script src="../js/jquery.min.js"></script></head><body><div style="width: 600px;height:400px;border:1px solid red"></div><script>var mCharts = echarts.init(document.querySelector("div"))$.get('../json/map/china.json',function (chinaJson) {echarts.registerMap('chinaMap', chinaJson)var airData = [{ name: '北京', value: 39.92 },{ name: '天津', value: 39.13 }, { name: '上海', value: 31.22 },{ name: '重庆', value: 66 }, { name: '河北', value: 147 },{ name: '河南', value: 113 }, { name: '云南', value: 25.04 },{ name: '辽宁', value: 50 }, { name: '黑龙江', value: 114 },{ name: '湖南', value: 175 }, { name: '安徽', value: 117 },{ name: '山 东', value: 92 }, { name: '新疆', value: 84 },{ name: '江苏', value: 67 }, { name: '浙江', value: 84 },{ name: '江西', value: 96 }, { name: '湖北', value: 273 },{ name: '广西', value: 59 }, { name: '甘肃', value: 99 },{ name: '山西', value: 39 }, { name: '内蒙古', value: 58 },{ name: '陕西', value: 61 }, { name: '吉林', value: 51 },{ name: '福建', value: 29 }, { name: '贵州', value: 71 },{ name: '广东', value: 38 }, { name: '青海', value: 57 },{ name: '西藏', value: 24 }, { name: '四川', value: 58 },{ name: '宁夏', value: 52 }, { name: '海南', value: 54 },{ name: '台湾', value: 88 }, { name: '香港', value: 66 },{ name: '澳门', value: 77 }, { name: '南海诸岛', value: 55 }]var scatterData = [{value: [117.283042, 31.86119] // 散点的坐标, 使用的是经纬度}]var option = {geo: {type: 'map',map: 'chinaMap',roam: true,label: { show: true }},series: [{data: airData,geoIndex: 0,type: 'map'},{data: scatterData,type: 'effectScatter',coordinateSystem: 'geo',rippleEffect: { scale: 10 }}],visualMap: {min: 0,// 最小值max: 300,// 最大值inRange: {color: ['white', 'red']// 颜色的范围},calculable: true// 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)}}mCharts.setOption(option)})</script></body></html>


