前提
1、需要引入echarts.js(echarts.min.js)
和 china.js
2、需要有一个有宽高的dom容器来放置地图
(function () {
//1、实例化对象
var myChart = echarts.init(document.querySelector(".map .chart"))
var option = {
//设置标题
title: {
text: '地图绘制', // 主标题名称
textStyle: {
color: '#bce2e8',
fontStyle: 'oblique', //斜体
fontFamily: 'monospace', //字体
},
top: 20,
left: 20
},
// 地图配置
geo: {
map: "china",
//放大地图
zoom: 1.25,
//开启漫游
roam: true,
//让其文字出现在外地图上
label: {
// 通常状态下的文字样式
normal: {
show: true,
textStyle: {
color: "#fff",
},
},
// 鼠标放上去的样式
emphasis: {
textStyle: {
color: "red",
},
},
},
// 地图区域的样式设置
itemStyle: {
//配置正常状态下的样式
normal: {
borderColor: "rgba(147, 235, 248, .5)", //设置地图区域边框的颜色
borderWidth: 1, //设置地图区域边框的宽度
areaColor: { //设置地图区域的填充色 -> 渐变色
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(147, 235, 248, .2)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
},
// 鼠标放上去高亮的样式(在鼠标悬停状态下)
emphasis: {
areaColor: "#389BB7",
borderWidth: 0,
},
},
},
}
//3、把配置项给实例对象
myChart.setOption(option)
})()
这段代码是使用ECharts库来绘制一个地图,并设置地图的样式和配置。下面是代码的解释:
echarts.init
方法实例化一个 ECharts 对象,并传入一个 DOM 元素作为容器。这个容器将用来展示地图。option
对象,用于配置地图的样式和行为。geo
字段来设置。其中 map
属性指定了要使用的地图类型,这里是中国地图;zoom
属性设置地图的缩放级别;roam
属性开启了地图的漫游,可以通过鼠标拖拽和缩放来浏览地图;label
字段设置了地图区域上的标签样式,包括通常状态和鼠标悬停状态下的样式。itemStyle
字段来配置。normal
属性设置了正常状态下的样式,包括边框颜色、边框宽度和填充色。填充色使用渐变色,从透明到某个颜色的渐变。emphasis
属性设置了鼠标悬停状态下的样式,包括区域颜色和边框宽度。myChart.setOption(option)
方法把配置项应用到实例对象,实现地图的绘制。给地图加上标注只需要在series
中添加:
coordinateSystem: "geo"
→ 使用地理坐标系进行展示,type: "scatter"
→设置为散点类型data
→ 数据格式:其中name,value是必要的,value的前两个值是数据点的经纬度,其他的数据格式可以自定义(function () {
//1、实例化对象
var myChart = echarts.init(document.querySelector(".map .chart"))
var option = {
//设置标题
title: {
text: '地图绘制', // 主标题名称
textStyle: {
color: '#bce2e8',
fontStyle: 'oblique', //斜体
fontFamily: 'monospace', //字体
},
top: 20,
left: 20
},
// 地图配置
geo: {
map: "china",
//放大地图
zoom: 1.25,
//开启漫游
roam: true,
//让其文字出现在外地图上
label: {
// 通常状态下的文字样式
normal: {
show: true,
textStyle: {
color: "#fff",
},
},
// 鼠标放上去的样式
emphasis: {
textStyle: {
color: "red",
},
},
},
// 地图区域的样式设置
itemStyle: {
//配置正常状态下的样式
normal: {
borderColor: "rgba(147, 235, 248, .5)", //设置地图区域边框的颜色
borderWidth: 1, //设置地图区域边框的宽度
areaColor: { //设置地图区域的填充色 -> 渐变色
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(147, 235, 248, .2)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
},
// 鼠标放上去高亮的样式(在鼠标悬停状态下)
emphasis: {
areaColor: "#389BB7",
borderWidth: 0,
},
},
},
series: [
{
type: "scatter", //设置为散点类型
coordinateSystem: "geo", //表示使用地理坐标系进行展示
symbol: "pin", //表示使用图钉形状的标记符号
symbolSize: [80, 80], //表示标记符号的尺寸为 50x50
// 这里渲染标志里的内容以及样式
label: {
show: true,
formatter(value) {//让他显示[113.23, 23.16, 12656.80]这个列表中的值
return value.data.value[2];
},
color: "#fff",
},
// 标志的样式
itemStyle: {
normal: {
color: "rgba(255,0,0,.7)",
shadowBlur: 2, //设置图表的阴影模糊大小为 2
shadowColor: "D8BC37", //表示设置图表的阴影颜色为深黄色
},
},
// 数据格式,其中name,value是必要的,value的前两个值是数据点的经纬度,其他的数据格式可以自定义
// 至于如何展示,完全是靠上面的formatter来自己定义的
data: [
{ name: "广东", value: [113.23, 23.16, 12656.80] },
{ name: "山东", value: [117.19, 36.65, 10162.79] },
],
},
]
}
//3、把配置项给实例对象
myChart.setOption(option)
})()
series中:
type:"effectScatter"
→ 表示采用带有涟漪效果的散点图(effectScatter)类型的图表。coordinateSystem
: “geo”, → 使用地理坐标系进行展示。effectType: "ripple"
, → 表示采用涟漪效果。{
type: "effectScatter", //表示采用带有涟漪效果的散点图(effectScatter)类型的图表。
coordinateSystem: "geo", //使用地理坐标系进行展示。
effectType: "ripple", //表示采用涟漪效果。
showEffectOn: "render", //表示图表渲染时显示效果。
rippleEffect: { //表示图表渲染时显示效果
period: 10, //涟漪的周期大小为 10。
scale: 10, //涟漪的缩放比例为 10。
brushType: "fill", //表示涟漪效果的画笔类型为填充
},
hoverAnimation: true, //表示鼠标悬停时启用动画效果。
itemStyle: { // 设置标记符号的样式。
normal: { // 表示普通状态下的样式
color: "rgba(255, 205, 59, .7)",
shadowBlur: 10,
shadowColor: "#333",
},
},
data: [
{ name: "西藏", value: [91.14, 29.64, 364] },
{ name: "澳门", value: [113.57, 22.16, 67.28] },
],
},
常用来绘制地图的热力图
注意
:
(function () {
//1、实例化对象
var myChart = echarts.init(document.querySelector(".map .chart"))
var option = {
//设置标题
title: {
text: '地图绘制', // 主标题名称
textStyle: {
color: '#bce2e8',
fontStyle: 'oblique', //斜体
fontFamily: 'monospace', //字体
},
top: 20,
left: 20
},
// 提示浮窗样式
tooltip: {
show: true,
trigger: "item",
//设置显示内容
formatter(params) {
return `地区:${params.name}</br>数值(万):${params.value}`;
},
},
// 地图配置
geo: {
map: "china",
//放大地图
zoom: 1.25,
//开启漫游
roam: true,
//让其文字出现在外地图上
label: {
// 通常状态下的文字样式
normal: {
show: true,
textStyle: {
color: "#fff",
},
},
// 鼠标放上去的样式
emphasis: {
textStyle: {
color: "red",
},
},
},
// 地图区域的样式设置
itemStyle: {
//配置正常状态下的样式
normal: {
borderColor: "rgba(147, 235, 248, .5)", //设置地图区域边框的颜色
borderWidth: 1, //设置地图区域边框的宽度
areaColor: { //设置地图区域的填充色 -> 渐变色
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(147, 235, 248, .2)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
},
// 鼠标放上去高亮的样式(在鼠标悬停状态下)
emphasis: {
areaColor: "#389BB7",
borderWidth: 0,
},
},
},
//视觉映射,为热力图做准备
visualMap: {
// 是否展示左下角,即是是false,也仅是不显示,不影响数据的映射
show: true,
// 上下端文字
// text: ["多", "少"],
// 最小值和最大值,必须指定
min: 0,
max: 11000,
// 位置
left: "10%",
bottom: "0%",
//水平放置
orient: 'horizontal',
// 是否展示滑块
calculable: true,
// 从下到上的颜色(红黄绿)
inRange: {
color: ['rgb(168, 201, 127, .5)', 'rgb(248, 184, 98,.5)', 'rgb(237, 109, 61,.5)', 'rgb(217, 51, 63,.5)']
},
//字体颜色
textStyle: {
color: "#fff",
map: "china",
},
},
series: [
{
map: "china",
type: "map",
//放大地图
zoom: 1.25,
//不开启缩放漫游
roam: false,
label: {
// 通常状态下的样式
normal: {
show: true,
textStyle: {
color: "#fff",
},
},
// 鼠标放上去的样式
emphasis: {
textStyle: {
color: "#fff",
},
},
},
// 地图区域的样式设置
itemStyle: {
normal: {
borderColor: "rgba(147, 235, 248, .5)",
borderWidth: 1,
areaColor: {
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(147, 235, 248, .3)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
shadowColor: "rgba(128, 217, 248, .7)",
shadowOffsetX: -2,
shadowOffsetY: 2,
shadowBlur: 10,
},
// 鼠标放上去高亮的样式
emphasis: {
areaColor: "#389BB7",
borderWidth: 0,
},
},
data: [
{name:"新疆",value:2333},
{name:"内蒙古",value:5333},
]
}
]
}
//3、把配置项给实例对象
myChart.setOption(option)
})()
注意事项:
(function () {
//1、实例化对象
var myChart = echarts.init(document.querySelector(".map .chart"))
var option = {
//设置标题
title: {
text: '地图绘制', // 主标题名称
textStyle: {
color: '#bce2e8',
fontStyle: 'oblique', //斜体
fontFamily: 'monospace', //字体
},
top: 20,
left: 20
},
// 提示浮窗样式
tooltip: {
show: true,
trigger: "item",
//设置显示内容
formatter(params) {
return `地区:${params.name}数值(万):${params.value}`;
},
},
// 地图配置
geo: {
map: "china",
//放大地图
zoom: 1.25,
//开启漫游
roam: true,
//让其文字出现在外地图上
label: {
// 通常状态下的文字样式
normal: {
show: true,
textStyle: {
color: "#fff",
},
},
// 鼠标放上去的样式
emphasis: {
textStyle: {
color: "red",
},
},
},
// 地图区域的样式设置
itemStyle: {
//配置正常状态下的样式
normal: {
borderColor: "rgba(147, 235, 248, .5)", //设置地图区域边框的颜色
borderWidth: 1, //设置地图区域边框的宽度
areaColor: { //设置地图区域的填充色 -> 渐变色
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(147, 235, 248, .2)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
},
// 鼠标放上去高亮的样式(在鼠标悬停状态下)
emphasis: {
areaColor: "#389BB7",
borderWidth: 0,
},
},
},
//视觉映射,为热力图做准备
visualMap: {
// 是否展示左下角,即是是false,也仅是不显示,不影响数据的映射
show: true,
// 上下端文字
// text: ["多", "少"],
// 最小值和最大值,必须指定
min: 0,
max: 11000,
// 位置
left: "10%",
bottom: "0%",
//水平放置
orient: 'horizontal',
// 是否展示滑块
calculable: true,
// 从下到上的颜色(红黄绿)
inRange: {
color: ['rgb(168, 201, 127, .5)', 'rgb(248, 184, 98,.5)', 'rgb(237, 109, 61,.5)', 'rgb(217, 51, 63,.5)']
},
//字体颜色
textStyle: {
color: "#fff",
map: "china",
},
},
series: [
{ // --> 红色小标签设置
type: "scatter", //设置为散点类型
coordinateSystem: "geo", //表示使用地理坐标系进行展示
symbol: "pin", //表示使用图钉形状的标记符号
symbolSize: [80, 80], //表示标记符号的尺寸为 80x80
// 这里渲染标志里的内容以及样式
label: {
show: true,
formatter(value) {//让他显示[113.23, 23.16, 12656.80]这个列表中的值
return value.data.value[2];
},
color: "#fff",
},
// 标志的样式
itemStyle: {
normal: {
color: "rgba(255,0,0,.7)",
shadowBlur: 2, //设置图表的阴影模糊大小为 2
shadowColor: "D8BC37", //表示设置图表的阴影颜色为深黄色
},
},
// 数据格式,其中name,value是必要的,value的前两个值是数据点的经纬度,其他的数据格式可以自定义
// 至于如何展示,完全是靠上面的formatter来自己定义的
data: [
{ name: "广东", value: [113.23, 23.16, 12656.80] },
{ name: "山东", value: [117.19, 36.65, 10162.79] },
],
},
{
type: "effectScatter", //表示采用带有涟漪效果的散点图(effectScatter)类型的图表。
coordinateSystem: "geo", //使用地理坐标系进行展示。
effectType: "ripple", //表示采用涟漪效果。
showEffectOn: "render", //表示图表渲染时显示效果。
rippleEffect: { //表示图表渲染时显示效果
period: 10, //涟漪的周期大小为 10。
scale: 10, //涟漪的缩放比例为 10。
brushType: "fill", //表示涟漪效果的画笔类型为填充
},
hoverAnimation: true, //表示鼠标悬停时启用动画效果。
itemStyle: { // 设置标记符号的样式。
normal: { // 表示普通状态下的样式
color: "rgba(255, 235, 59, .7)",
shadowBlur: 10,
shadowColor: "#333",
},
},
data: [
{ name: "西藏", value: [91.14, 29.64, 364] },
{ name: "澳门", value: [113.57, 22.16, 67.28] },
],
},
{
map: "china",
type: "map",
//放大地图
zoom: 1.25,
//不开启缩放漫游
roam: false,
label: {
// 通常状态下的样式
normal: {
show: true,
textStyle: {
color: "#fff",
},
},
// 鼠标放上去的样式
emphasis: {
textStyle: {
color: "#fff",
},
},
},
// 地图区域的样式设置
itemStyle: {
normal: {
borderColor: "rgba(147, 235, 248, .5)",
borderWidth: 1,
areaColor: {
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(147, 235, 248, .3)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
shadowColor: "rgba(128, 217, 248, .7)",
shadowOffsetX: -2,
shadowOffsetY: 2,
shadowBlur: 10,
},
// 鼠标放上去高亮的样式
emphasis: {
areaColor: "#389BB7",
borderWidth: 0,
},
},
data: [
{name:"新疆",value:2333},
{name:"内蒙古",value:5333},
]
}
]
}
//3、把配置项给实例对象
myChart.setOption(option)
})()