🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

areacity

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

areacity

获取国内行政区信息(港澳台除外)

latest
npmnpm
Version
1.0.3
Version published
Maintainers
1
Created
Source

简介

作者:Perfumere, 问题咨询请联系~

数据来源: 中华人民共和国民政部-民政数据-行政区编码

数据的更新时间: 2023-12-18

  • 📦 内存存储、极速查询, 逻辑复杂度O(1)
  • ⚡️ Speed: 4核2.7Ghz 单机qps: 10^7 级
  • ☔️ 无缓存, 基于实时查询
  • ✈️ 完美匹配腾讯地图adcode/city_code/乡镇/街道编码的逆解析过程

获取国内行政区信息(港澳除外)

  • 记录内陆4级行政区

  • 直辖市仅有3级记录, 2级按省级记录

// 北京、上海、天津、重庆
北京,海淀区,马连洼街道

山东,济南市,历下区,泺源大街
// 接口响应返回值(这里的四级行政区就是叫“河南省潢川经济技术开发区”, 属于特例)
河南,信阳市,潢川县,河南省潢川经济技术开发区,弋阳路(level_4; 5级后台不做记录)
{
  message: "query ok",
  request_id: "b209bc8e-68ca-4e56-b1d8-c785538e4a7b",
  result: {
    ad_info: {
      // ...
      // 3级 - 通常到区/县级code, 直辖市到2级 (例:海淀区)
      adcode: '411526',
      // 城市编码, 156国际编码, 详细规则为腾讯地图给出的文档介绍, 下方为2023-12-18的文档记录
      city_code: '156411500',
      // 电话区号
      phone_area_code: "0376",
    },
    address_component: {
      city: "信阳市"
      district: "潢川县"
      nation: "中国"

      // 后台记录时没有“省/市/自治区”等, 为2~3字省简称
      // 例:山东、北京、内蒙古、宁夏、新疆、广西、西藏
      province: "河南省"

      // 后台不做记录, 无用
      street: "弋阳路"
      street_number: ""
    },
    address_reference: {
      // ...
      town: {
        // 4级 - 通常为街道级的code
        id: "code",
        // 4级 - 通常为街道名
        title: 'xxx街道',
        // 街道的经纬度信息
        location: { lat: 32.128324, lng: 115.104463 }
      }
    }
  },
  status: 0
}

result.address_reference.town

腾讯地图 - 行政区划代码(adcode)规则说明: 
代码共6位,前两位代表省(一级)、中间两位为市/地区(二级),最后两位为区县(三级)
 1)省级:前两位有值,后4位置0,如,河北省:130000
 2)市/地区:前4四位有值,包含省代码与市代码,最后两位置0,如河北省保定市:130600
 3)区县:6位全有值,包含前4位省市代码及区县代码,河北省保定市涿州市:130681
 4)直辖市、香港、澳门:
      同省级,在行政区划接口(ws/district/v1/list)中,其下直接为区级(没有二级结构填充)
      例:北京,东城区 (而非:“北京,北京,东城区”)
 5)直辖县:第3、4位为90的,为省直辖县
 6)中国范围内,省市区行政区划以外的区域值为999999(如中国东海)
 7)东莞市、中山市、儋州市、嘉峪关市 因其下无区县级,因此增加了末位为99代码的同名子级,用于补齐到三级区划的结构

如何获取城市编码(city_code):
1)编码前4位不为0,第5、6位为0的,为常规城市,可直接取用
2)北京、上海、重庆、天津、香港、澳门,编码和省一致,需要单独提出
3)第3、4位为90的为省直辖县,一般当做城市来应用,也需要单独提出

代码示例

  • 获取省/市/区县(县级市)/街道(乡镇) 列表
getProvinceList();
// 传入北京的行政编码 [{id: number, name: 'string'}]
getCityList(11);
// 传入东城区行政编码
getAreaList(110101);

// 传入山东的行政编码 [{id: number, name: 'string'}]
getCityList(37);
// 传入济南市行政编码 [{id: number, name: 'string'}]
getAreaList(3701);
// 传入历下区行政编码 [{id: number, name: 'string'}]
getTownList(370102);
  • 判定是否为直辖市/省管县区/特别行政区
// 传长度 >= 2的有效数字字符串
isDirectProvince('1101');  // 北京 true
// 传长度 >= 6的有效数字字符串
isDirectArea('659001005'); // 新疆-石河子市-石河子市 true
// 传长度 >= 2的有效数字字符串
isSpecialArea('1101');     // 北京 false
isSpecialArea('71');       // 台湾 true
isSpecialArea('81');       // 香港 true
isSpecialArea('82');       // 澳门 true
  • 查找4级行政代码对应的名称
// 直辖市使用3级表示, 跳过 北京-(北京市)-东城区-朝阳门街道
getNameFromCode('110101007');
// 山东某地
getNameFromCode('371728001');
// 新疆省直管县(县级市), 编码的第3位、第4位对应9、0
getNameFromCode('659001005');
// 河北某地
getNameFromCode('130102002');

执行结果如下:

{
  province: { id: 11, name: '北京' },
  city: { id: 110101, name: '东城区' },
  area: { id: 110101007, name: '朝阳门街道' },
  town: null
}
{
  province: { id: 37, name: '山东' },
  city: { id: 3717, name: '菏泽市' },
  area: { id: 371728, name: '东明县' },
  town: { id: 371728001, name: '城关街道' }
}
{
  province: { id: 65, name: '新疆' },
  city: { id: 659001, name: '石河子市' },
  area: { id: 659001000, name: '石河子市' },
  town: { id: 659001005, name: '东城街道' }
}
{
  province: { id: 13, name: '河北' },
  city: { id: 1301, name: '石家庄市' },
  area: { id: 130102, name: '长安区' },
  town: { id: 130102002, name: '青园街道' }
}

Keywords

areacity

FAQs

Package last updated on 18 Dec 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts