阿里云数据可视化平台
之前写了另一个echarts实现地图的,可以移步这里
这次是用的echarts+svg实现的,参考了echarts的这两个案例
庖丁解牛
内脏数据
废话不多说,直接上代码
<template>
<div>
<h1>深圳罗湖区--svg地图</h1>
<div id="main"></div>
</div>
</template>
<script>
import * as echarts from "echarts";
import $ from "jquery";
import szmap from "../../node_modules/echarts/map/szmap.svg";
export default {
data() {
return {};
},
methods: {
getmap() {
var chartDom = document.getElementById("main");
var myChart = echarts.init(chartDom);
var option;
$.get(szmap, function (svg) {
// 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM
echarts.registerMap("szmap", { svg: svg });
option = {
tooltip: {},
series: [
{
name: "szmap",
type: "map",
map: "szmap",
roam: true,
emphasis: {
label: {
show: false,
},
},
selectedMode: false,
data: [
{ name: "罗湖区", value: 15 },
{ name: "宝安区", value: 35 },
],
},
],
};
myChart.setOption(option);
});
},
},
mounted() {
this.getmap();
},
};
</script>
<style scoped>
#main {
width: 100%;
height: 600px;
background-color: #ccc;
}
</style>
写的粗糙了点,其他的配置参考echarts的options配置就好了
1、首先是拿到svg,用阿里云数据可视化平台找到要的之后下载svg
下载后,打开svg,需要手动对区域添加属性值,我这里添加的是name,这一步思考了很久,渲染上去之后不能出现对应的划分区域,脑子不太灵光,对比了两个官网的例子,发现官网的svg图都带有name属性。那就手动加吧
2、完整代码参照上面
html部分,这里有个div是用于echarts渲染的
<template>
<div>
<h1>深圳svg地图</h1>
<div id="main"></div>
</div>
</template>
js部分
获取到div,使用echarts.init初始化,
getmap() {
var chartDom = document.getElementById("main");
var myChart = echarts.init(chartDom);
var option;
$.get(szmap, function (svg) {
// 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM
echarts.registerMap("szmap", { svg: svg });
option = {
tooltip: {},
series: [
{
name: "szmap",
type: "map",
map: "szmap",
roam: true,
emphasis: {
label: {
show: false,
},
},
selectedMode: false,
data: [
{ name: "罗湖区", value: 15 },
{ name: "宝安区", value: 35 },
],
},
],
};
myChart.setOption(option);
});
},
重点是这个注册地图的函数,可以参照官网的解析
echarts.registerMap(“szmap”, { svg: svg });
然后根据相同的name就可以获取到啦