Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

更新 province.json 的操作方法,获取到最新版的省市区数据 #1030

Open
xiangyuecn opened this issue Feb 3, 2023 · 0 comments

Comments

@xiangyuecn
Copy link

鉴于 assets/province.json 于2017年之后就没有更新,导致选择器的行政区划数据过于滞后,很多新的区县都没有。每年都会有十几到几十个区县撤并,因此行政区划数据应当需要经常更新维护。

可以到我的开源库:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov 获取到最新的省市区数据,基本上月更,除了省市区乡镇四级区划外,还有坐标边界数据。

转成 province.json ,请用下面方法(使用时,建议开发当天转换得到新文件,这样就能使用到最新版本数据):

  1. 打开在线多级联动生成页面:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/
  2. 拖动页面到最底下,在“导出为自定义按钮”上方的输入框中填写下面的自定义js代码
  3. 点击“导出为自定义按钮”,就得到了含最新数据的 province.json 文件

注意:生成的文件带了UTF8的BOM头,可以把文件打开后,复制一下文本到新的文件里面,去掉BOM头,免得对json解析产生影响

自定义js代码:

//复制这些代码到 “导出为自定义按钮” 上方的输入框中
function UserFormat(list,mapping){
    var exec=function(level,obj,dist){//写个函数,递归处理数据
        if(!obj.childs.length){
            return;
        };
        for(var i=0;i<obj.childs.length;i++){
            var itm=obj.childs[i];
            var o={ name:itm.ext_name };
            var arr=[];
            if(level==3){
                dist.push(itm.ext_name);
                continue;
            }
            if(level==1)o.city=arr;
            if(level==2)o.area=arr;
            dist.push(o);
            
            exec(level+1, itm, arr);
        };
        return dist;
    };
    var data=exec(1,mapping[0],[]);

    var code=JSON.stringify(data,null,"  ");
    var codeLen=new Blob([code],{"type":"text/plain"}).size+3;

    return Result("",code,"province.json",codeLen+"字节");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant