行政區(qū)劃代碼
生成時間 2022.3.22
code json(壓縮)
code json(格式化)
獲取最新code
代碼地址
1.下載代碼
2.npm install
3.node index.js 等待(當控制臺輸出寫入成功時說明data.json文件生成成功兔朦,也可在執(zhí)行前刪除data.json)
import request from "request";
import fs from 'fs';
// 騰訊地圖獲取區(qū)域文檔
// https://lbs.qq.com/service/webService/webServiceGuide/webServiceDistrict
// 騰訊地圖key
const key = 'LNABZ-UXM6G-SDNQK-IE6KK-T44VE-SCFUE';
// 獲取一級省份列表
async function getProvince() {
return new Promise((resolve, reject) => {
request({
method: 'get',
uri: `https://apis.map.qq.com/ws/district/v1/getchildren?key=${key}`,
json: true,
}, (err, res, body) =>{
if (body.status == 0) {
resolve(body.result[0]);
} else {
console.log('error');
}
});
});
}
// 獲取子級數(shù)據(jù)列表
async function getChildren(id) {
return new Promise((resolve, reject) => {
request({
method: 'get',
uri: `https://apis.map.qq.com/ws/district/v1/getchildren?key=${key}&id=${id}`,
json: true,
}, (err, res, body) =>{
if (body.status == 0) {
// 并發(fā)限制:5次/秒/接口/Key
setTimeout(()=>{
resolve(body.result[0]);
},250);
} else {
console.log('error');
}
});
});
}
async function getCode() {
console.log('生成中,請等待');
let res = await getProvince();
// 一層省份ID 北京|天津|上海|重慶|香港|澳門
let array = ['110000','120000','310000','500000','810000','820000'];
let codeData = [];
for(let pEle of res) {
let province = {
pid: pEle.id,
name: pEle.name,
fullname: pEle.fullname,
children: [],
};
// 獲取省份城市數(shù)據(jù)列表
if (array.indexOf(pEle.id) == -1) {
let cityRes = await getChildren(pEle.id);
for (let cEle of cityRes) {
let city = {
cid: cEle.id,
name: cEle.name || cEle.fullname,
fullname: cEle.fullname,
children: [],
};
province.children.push(city);
}
} else {
let city = {
cid: pEle.id,
name: pEle.name || pEle.fullname,
fullname: pEle.fullname,
children: [],
}
province.children.push(city);
}
codeData.push(province);
}
// 獲取區(qū)域詳情
for (let pEle of codeData) {
for (let cEle of pEle.children) {
let areaRes = await getChildren(cEle.cid);
areaRes.forEach(aele => {
let area = {
aid: aele.id,
name: aele.name || aele.fullname,
fullname: aele.fullname,
};
cEle.children.push(area);
});
}
}
fs.writeFile('./data.json',JSON.stringify(codeData), err => {
if (err) {
console.error(err);
return;
}
console.log('寫入成功');
});
}
getCode();