百度地图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**
```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,
// 运行使用鼠标进行拖动和缩放,此时鼠标可以拖动地图
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>