相信很多人都用echarts绘制过地图,但是苦于寻找省市的数据包,echarts本身提供的数据包又涉及版权问题不再提供使用,下面提供一份干货:
某大厂提供的地图数据包链接,很全,省、市、区都有
http://datav.aliyun.com/tools/atlas/#&lat=31.840232667909365&lng=104.2822265625&zoom=4
以下是用node写的一个批量下载常用省市数据包的脚本,可供参考
//文件下载
var fs = require("fs");
var path = require("path");
var request = require("request");
var download = function (item) {
request(`https://geo.datav.aliyun.com/areas_v2/bound/${item.cid}_full.json`, function (error, response, body) {
if (!error && response.statusCode == 200) {
// console.log(body);
body = 'export default' + body
fs.writeFile(`./maps/${item.key}.ts`, body, 'utf8', function (err) {
//如果err=null,表示文件下载成功,否则失败
if (err)
console.log('写文件出错了,错误是:' + err);
else
console.log('ok');
})
}
})
}
var citys = [
{
"key": "beijing",
"cid": "110000"
},
{
"key": "tianjin",
"cid": "120000"
},
{
"key": "hebei",
"cid": "130000"
},
{
"key": "shanxi",
"cid": "140000"
},
{
"key": "neimenggu",
"cid": "150000"
},
{
"key": "liaoning",
"cid": "210000"
},
{
"key": "jilin",
"cid": "220000"
},
{
"key": "heilongjiang",
"cid": "230000"
},
{
"key": "shanghai",
"cid": "310000"
},
{
"key": "jiangsu",
"cid": "320000"
},
{
"key": "zhejiang",
"cid": "330000"
},
{
"key": "anhui",
"cid": "340000"
},
{
"key": "fujian",
"cid": "350000"
},
{
"key": "jiangxi",
"cid": "360000"
},
{
"key": "shandong",
"cid": "370000"
},
{
"key": "henan",
"cid": "410000"
},
{
"key": "hubei",
"cid": "420000"
},
{
"key": "hunan",
"cid": "430000"
},
{
"key": "guangdong",
"cid": "440000"
},
{
"key": "guangxi",
"cid": "450000"
},
{
"key": "chongqing",
"cid": "500000"
},
{
"key": "sichuan",
"cid": "510000"
},
{
"key": "guizhou",
"cid": "520000"
},
{
"key": "yunnan",
"cid": "530000"
},
{
"key": "xizang",
"cid": "540000"
},
{
"key": "shaanxi",
"cid": "610000"
},
{
"key": "gansu",
"cid": "620000"
},
{
"key": "qinghai",
"cid": "630000"
},
{
"key": "ningxia",
"cid": "640000"
},
{
"key": "xinjiang",
"cid": "650000"
},
{
"key": "taiwan",
"cid": "710000"
},
{
"key": "xianggang",
"cid": "810000"
},
{
"key": "aomen",
"cid": "820000"
}
];
citys.forEach(function (item) {
download(item)
})
如下,下载完成后,注册即可使用
// area 为数据包模块名称
import(`./maps/${area}`).then((module) => {
echarts.registerMap('Area', module.default);
});