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

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

Open
xiangyuecn opened this issue Feb 3, 2023 · 1 comment

Comments

@xiangyuecn
Copy link

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

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

对于 省直辖县级市 比如:湖北的仙桃、潜江,海南的琼海、五指山,直筒子市:广东中山、东莞,海南儋州等,这两种会少一级数据,导致很未处理此问题的级联选择器产生各种bug;我的开源库对于上述两种城市有专门特殊处理,比如:湖北-潜江-龙湾镇,将填充一个同名的区级,变成 湖北-潜江-潜江-龙湾镇。

注意:code为区划代码简化后的数字,省级为2位数,市级为4位数(县级市、直筒子市为6位),区县级为6位数(县级市、直筒子市的为9位),此code是唯一的。

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

  1. 打开在线多级联动生成页面:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/
  2. 拖动页面到最底下,在“导出为自定义按钮”上方的输入框中填写下面的自定义js代码
  3. 点击“导出为自定义按钮”,就得到了含最新数据的 china_address.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={ code:itm.id+"", name:itm.ext_name };
            if(level==3){
                dist.push(o);
                continue;
            }
            var arr=[];
            if(level==1)o.cityList=arr;
            if(level==2)o.areaList=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,"china_address.json",codeLen+"字节");
}
@liyujiang-gzu
Copy link
Member

已发布 4.1.12 版本

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

2 participants