首先在ECharts地图的坐标需要我们存储在一个geoCoord属性里,它是一个JS的字典对象,由键/值对组成,键表示点的名称,值则表达它的坐标,由经纬度组成,它是一个数组,如[136.00,32.00]它就表示了一个坐标.
地图类型的图表需要关注的元素
title:标题,显示这个地图所表示的名称
title: {
text: '清大云点亮中国',
subtext: 'Tsingda.Cloud',
sublink: '',
x: 'center',
y: 'top',
textStyle: {
color: '#fff'
}
}
toolbox:工具栏,显示一些显示的工具,放大,缩小,查看数据集,下载图像等
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
saveAsImage: { show: true }
}
}
legend:图标显示,当series有多个地图时,这个值用到显示多个地图的图标,可以是横向显示和纵向显示
legend: {
x: 'left',
y: 'top',
data: ['在线', '离线'],//在线和离线对应的是series的名字
selectedMode: false,//选中悬浮
textStyle: {
color: '#fff'
}
}
series:地图显示,用来叠放显示地图,你可以定义多个,它们之间的关系是第一个在最上面,以此类推.
series: [
//默认
{
name: '底层模版',
type: 'map',
mapType: 'china',
data: provinceMap,
geoCoord: source,
itemStyle: {
normal: {
color: bgColor,
borderColor: "#eee",
label: {
show: true,
textStyle: {
color: "#fff"
}
}
}, emphasis: { color: "rgba(128, 128, 128, 0.5)" }
},
}]
markPoint:点标识,用来标识地图上的后,这些点通常是被存储在一个geoCoord对象上,这个对象是一个字典,这在文章开头已经介绍过.
markPoint: {//动态标记
large: true,//这个选项,悬浮自动失效
symbolSize: 2,
itemStyle: {
normal: {
shadowBlur: 2,
shadowColor: 'rgba(37, 140, 249, 0.8)',
color: onColor
}
},
data: []
}
markPoint里的data对象是这个地图上需要显示的点,它是一个字符型数组,用来存储geoCoord里的键!
setOption:将地图对象添加到指定的地图对象上
var myChart = echarts.init(document.getElementById('main'))
var option={}
myChart.setOption(option)
动态构建地图上的点标识markPoint
大概的思路是将要标记的点动态付给geoCoord和markPoint的data对象上,这样就可以动态在地图上标示点了
$.get("/map/GetOffMap", function (data) {
for (var i in data) {
option.series[0].geoCoord[data[i].longitude + "_" + data[i].latitude] = [parseFloat(data[i].longitude), parseFloat(data[i].latitude)]
option.series[1].markPoint.data.push({ name: data[i].longitude + "_" + data[i].latitude })
}
myChart.setOption(option)
可以在电脑版的echarts地图选择地点然后标记,具体步骤如下:
1、打开echarts地图地图。
2、选择地图功能区中的工具箱,选择标记功能。
3、点击d出的工具箱中的标记标志,选择想要进行标记的地点。
4、标记想要的地点后,输容入标记地点的名称并点击保存。
注意事项:
1、以计算机为主体的电子设备在制图中的广泛应用,地图不再限于用符号和图形表达在纸(或类似的介质)上,它可以数字的形式存储于磁介质上,或经可视化加工表达在屏幕上;
2、由于航天技术的发展,出现了卫星遥感影像,这不但给地图制作提供了新的数据源,还可以把影像直接作为地理事物的表现形式,同时把人们的视野拓展到月球和其他星球。
3、多媒体技术的发展,使得视频、声音等都可以成为地图的表达手段。
1.引入 import China from '@/utils/echarts/china-map-geojson.min'
2.引入import '@/utils/echarts/sichuan'
3.this.$echarts.registerMap('china', China.ChinaData)
const geoCoordMap = {
甘孜藏族自治州: [99.9207, 31.0803],
阿坝藏族羌族自治州: [102.4805, 32.4536],
凉山彝族自治州: [101.9641, 27.6746],
凉山彝族自治州1: [102.1111, 28.6746],
绵阳市: [104.7327, 31.8713],
达州市: [107.6111, 31.333],
广元市: [105.6885, 32.2284],
雅安市: [102.6672, 29.8938],
宜宾市: [104.6558, 28.548],
乐山市: [103.5791, 29.1742],
南充市: [106.2048, 31.1517],
巴中市: [107.0618, 31.9977],
泸州市: [105.4578, 28.493],
成都市: [103.9526, 30.7617],
资阳市: [104.9744, 30.1575],
攀枝花市: [101.6895, 26.7133],
眉山市: [103.8098, 30.0146],
广安市: [106.6333, 30.4376],
德阳市: [104.48, 31.1133],
内江市: [104.8535, 29.6136],
遂宁市: [105.5347, 30.6683],
自贡市: [104.6667, 29.2786]
}
const mapData = [
{ name: '资阳市', value: 5 },
{ name: '乐山市', value: 6 },
{ name: '成都市', value: 7 },
{ name: '雅安市', value: 9 },
{ name: '阿坝藏族羌族自治州', value: 10 },
{ name: '凉山彝族自治州', value: 11 },
{ name: '凉山彝族自治州1', value: 12 }
]
const convertData = function(data) {
var res = []
for (var i = 0 i < data.length i++) {
var geoCoord = geoCoordMap[data[i].name]
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value),
selected: true //点击事件
})
}
}
return res
}
const option = {
geo: {
map: '四川',
itemStyle: {
areaColor: '#e8f5fe',
borderColor: '#1c85f6'
},
emphasis: {
itemStyle: {
areaColor: 'lightblue',
shadowColor: '#fff',
shadowBlur: 10
},
label: {
show: false
}
}
},
series: [
{
name: '666',
type: 'scatter',
coordinateSystem: 'geo',
symbol: 'pin',
symbolSize: [20, 20],
label: {
normal: {
show: true,
textStyle: {
color: '#2cdee5',
fontSize: 12
},
position: 'bottom',
formatter(value) {
return value.data.value[2]
}
}
},
itemStyle: {
normal: {
color: '#2cdee5'
}
},
data: convertData(
mapData
),
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
zlevel: 1
}
]
}
效果图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)