v-region
Version:
Provide Chinese administrative division data selection
2,048 lines • 338 kB
JavaScript
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('.v-region{display:inline-block}.v-region select{width:auto;display:inline-block;overflow:hidden;box-sizing:content-box;padding:0 12px;margin-right:5px}.rg-icon{display:inline-flex;width:1em;height:1em}.rg-icon-btn{color:#888;border-radius:5rem;transition:all .3s;height:2rem;width:2rem;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.rg-icon-btn:hover{color:#000;background-color:#f7f7f7}.rg-icon-btn.disabled{color:#ddd;background-color:unset}.rg-group{width:400px;overflow:hidden;display:flex;flex-direction:column}.rg-group .rg-header{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;margin:0;background-color:#f4f4f4}.rg-group .rg-header .rg-header-text{flex:1;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;font-size:14px;display:inline-block;color:#666;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}.rg-group .rg-header .rg-header-control{display:inline-flex}.rg-group .rg-header .rg-header-control button{padding:0;cursor:pointer;border:0;background-color:transparent;outline:none;line-height:1;color:#999;font-size:1rem;transition:all .3s ease-out}.rg-group .rg-header .rg-header-control button:hover{color:#000}.rg-group .rg-header .rg-header-control button.rg-close-button{right:10px;font-size:26px;top:0;font-weight:300}.rg-group .rg-level-tabs{padding:0 10px;background-color:#f4f4f4}.rg-group .rg-level-tabs ul{padding:0;margin:0;line-height:1.5;display:flex}.rg-group .rg-level-tabs ul li{display:inline-flex}.rg-group .rg-level-tabs ul li.active a{color:#333;background-color:#fff;border-top-left-radius:.5rem;border-top-right-radius:.5rem;box-shadow:0 3px 12px #0003}.rg-group .rg-level-tabs ul li a{display:block;padding:.5rem 1rem .3rem;font-size:14px;color:#bbb;font-weight:600;text-decoration:none;cursor:pointer;line-height:1.43;font-family:Helvetica Neue Light,HelveticaNeue-Light,Helvetica Neue,Calibri,Helvetica,Arial;transition:all .3s ease-out}.rg-group .rg-results-container{background-color:#fff;list-style:none;margin:0;padding:0;width:100%;overflow-y:auto;overflow-x:hidden}.rg-group .rg-results-container ul.rg-results{background-color:#fff;list-style:none;margin:0;padding:10px;width:400px;line-height:1.5;display:flex;flex-wrap:wrap;gap:5px}.rg-group .rg-results-container ul.rg-results li{margin:0;overflow:hidden;padding:3px 10px;text-align:left;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:14px;color:#000;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}.rg-group .rg-results-container ul.rg-results li.rg-item{display:inline-flex;border-radius:8px;color:#777}.rg-group .rg-results-container ul.rg-results li.rg-item:hover{color:#000;background-color:#f5f5f5}.rg-group .rg-results-container ul.rg-results li.rg-item.active{background-color:#e3e3e3;color:#000}.rg-group .rg-results-container ul.rg-results li.rg-message-box{text-align:center;font-size:14px;cursor:default;color:#aaa}.rg-selects{display:flex;align-items:center;gap:5px}.rg-select__list{list-style:none;overflow-y:auto;overflow-x:hidden;max-height:300px;margin:0;padding:3px 0;-webkit-font-smoothing:subpixel-antialiased;-webkit-transform:translateZ(0) scale(1,1)}.rg-select__list li{padding:3px 10px;cursor:pointer;min-width:80px;color:#888;font-size:13px;line-height:1.5}.rg-select__list li:hover{background-color:#f5f5f5}.rg-select__list li.selected{background-color:#e3e3e3;color:#000}.rg-column-container{display:flex;overflow:hidden;box-sizing:border-box}.rg-column-container .rg-column{padding:5px 0;margin:0;list-style:none;height:300px;display:inline-flex;flex-direction:column;overflow-y:auto;min-width:160px;border-right:1px solid #ddd}.rg-column-container .rg-column:last-child{border-right:0}.rg-column-container .rg-column li{display:flex;justify-content:space-between;align-items:center;font-size:14px;line-height:1.5;padding:5px 5px 5px 10px;color:#777;outline:none}.rg-column-container .rg-column li .bi-chevron-right{font-size:.8rem}.rg-column-container .rg-column li:hover{background-color:#f5f5f5;cursor:pointer}.rg-column-container .rg-column li.selected{background-color:#e3e3e3;color:#000}.rg-city-picker{display:flex;flex-direction:column}.rg-city-picker .rg-search-bar{margin:10px;display:flex;align-items:center}.rg-city-picker .rg-search-bar .rg-search-input{display:flex;align-items:center;background-color:#f5f5f5;border-radius:5rem;flex-grow:1;margin-right:10px}.rg-city-picker .rg-search-bar .rg-search-input svg{margin:0 10px;color:#aaa}.rg-city-picker .rg-search-bar .rg-search-input input{display:block;margin:0!important;border:0;width:100%;font-size:14px;line-height:1.42;padding:6px 6px 6px 0;vertical-align:middle;box-sizing:border-box;outline:none!important;border-radius:2px;background-color:transparent}.rg-city-picker .rg-picker{display:flex;flex-direction:column;width:400px;max-height:340px;overflow-y:auto;padding:0 10px 10px;row-gap:1rem}.rg-city-picker .rg-picker .rg-picker__province .rg-picker__title{font-size:18px;margin-bottom:.3rem;color:#ccc}.rg-city-picker .rg-picker .rg-picker__province .rg-picker__body{gap:.4rem 1rem;display:flex;flex-wrap:wrap}.rg-city-picker .rg-picker .rg-picker__province .rg-picker__body .rg-picker__city{font-size:14px;color:#666;cursor:pointer}.rg-city-picker .rg-picker .rg-picker__province .rg-picker__body .rg-picker__city.selected{color:#000;font-weight:600}')),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
import { inject as E, defineComponent as R, ref as C, createVNode as a, computed as _, toRefs as Vt, watch as X, provide as A, withDirectives as ro, vShow as io, onUnmounted as so, onBeforeUnmount as _t, onMounted as It, Teleport as po, Transition as mo, toRef as et, mergeProps as wo, createElementBlock as lt, openBlock as ut, createElementVNode as ct, nextTick as jo, h as eo } from "vue";
(function() {
try {
if (typeof document < "u") {
var t = document.createElement("style");
t.appendChild(document.createTextNode('.drop-down-left-enter-from,.drop-down-left-leave-to{transform:scale3d(.95,.95,1) translateZ(0);opacity:0}.drop-down-left-enter-active,.drop-down-left-leave-active{backface-visibility:hidden;will-change:opacity,transform;contain:layout style paint}.drop-down-left-enter-active{transform-origin:top right;transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-down-left-leave-active{transform-origin:top right;transition-property:opacity,transform;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-down-right-enter-from,.drop-down-right-leave-to{transform:scale3d(.95,.95,1) translateZ(0);opacity:0}.drop-down-right-enter-active,.drop-down-right-leave-active{backface-visibility:hidden;will-change:opacity,transform;contain:layout style paint}.drop-down-right-enter-active{transform-origin:top left;transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-down-right-leave-active{transform-origin:top left;transition-property:opacity,transform;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-up-left-enter-from,.drop-up-left-leave-to{transform:scale3d(.95,.95,1) translateZ(0);opacity:0}.drop-up-left-enter-active,.drop-up-left-leave-active{backface-visibility:hidden;will-change:opacity,transform;contain:layout style paint}.drop-up-left-enter-active{transform-origin:bottom right;transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-up-left-leave-active{transform-origin:bottom right;transition-property:opacity,transform;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-up-right-enter-from,.drop-up-right-leave-to{transform:scale3d(.95,.95,1) translateZ(0);opacity:0}.drop-up-right-enter-active,.drop-up-right-leave-active{backface-visibility:hidden;will-change:opacity,transform;contain:layout style paint}.drop-up-right-enter-active{transform-origin:bottom left;transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.drop-up-right-leave-active{transform-origin:bottom left;transition-property:opacity,transform;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dd-trigger{display:inline-flex;box-sizing:border-box;width:-moz-fit-content;width:fit-content}.dd-trigger.dd-trigger--block{display:flex;width:auto}.dd-content-body{display:flex}.dd-content{position:absolute;top:0;left:0;-webkit-font-smoothing:subpixel-antialiased;display:inline-flex;margin:0;padding:0;max-width:80vw;box-sizing:border-box;background-color:#fff;overflow:hidden;border:1px solid #d0d0d0;box-shadow:0 9px 24px #0000002e,0 3px 6px #00000014}.dd-content.dd-no-border{border:0}.dd-rounded--small{border-radius:.25rem!important}.dd-rounded--medium{border-radius:.5rem!important}.dd-rounded--large{border-radius:.75rem!important}.dd-rounded--pill{border-radius:50rem!important}.dd-rounded--circle{border-radius:50%!important}.dd-content-rounded--small{border-radius:6px!important}.dd-content-rounded--medium{border-radius:12px!important}.dd-content-rounded--large{border-radius:18px!important}.dd-trigger-container{display:inline-block}.dd-trigger-container.dd-disabled .dd-default-trigger,.dd-trigger-container.dd-disabled:hover .dd-default-trigger{border:1px solid #eee;background-color:#eee;cursor:default;color:#aaa}.dd-trigger-container .dd-default-trigger{display:inline-flex;align-items:center;padding:.5rem 1rem;background-color:#fff;border:1px solid #ddd;border-radius:.3rem;font-size:14px;line-height:1.42857143;outline:0!important;color:#666;gap:.5rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.dd-trigger-container .dd-default-trigger:hover{border:1px solid #aaa;color:#000}.dd-trigger-container .dd-default-trigger .dd-caret-down{transition:transform .2s ease}.dd-trigger-container .dd-default-trigger.dd-opened{box-shadow:3px 2px 6px #0003;border:1px solid #666;color:#000}.dd-trigger-container .dd-default-trigger.dd-opened .dd-caret-down{transform:rotate(180deg)}.dd-trigger-container .dd-default-trigger.dd-opened:hover{border:1px solid #666}.dd-trigger-container .dd-default-trigger.dd-rounded--circle{width:38px;height:38px;padding:0;justify-content:center}.dd-caret-down{display:inline-block;width:0;height:0;border-top:4px solid;border-left:4px solid transparent;border-right:4px solid transparent;vertical-align:middle;content:""}')), document.head.appendChild(t);
}
} catch (o) {
console.error("vite-plugin-css-injected-by-js", o);
}
})();
const Nt = "click", lo = "hover", uo = "contextmenu", co = 150, fo = 3e3, wt = "body", Q = "small", K = "medium", Mt = "large", go = "pill", Bt = "circle", xt = [
Q,
K,
Mt,
go,
Bt
], Ct = [Q, K, Mt], Dt = Symbol("dropdown"), zt = Symbol("internal"), At = Symbol("container"), pt = "left", vo = "center", G = "right", Tt = "up", jt = "down";
function ho(t) {
return window.getComputedStyle(t).display === "none";
}
function Lt(t) {
const o = t.getBoundingClientRect();
return {
width: t.offsetWidth,
height: t.offsetHeight,
top: o.top,
left: o.left
};
}
function St(t) {
if (!t)
return {
width: 0,
height: 0,
top: 0,
left: 0
};
if (ho(t)) {
t.style.visibility = "hidden", t.style.display = "inline-flex";
const o = Lt(t);
return t.style.visibility = "visible", t.style.display = "none", o;
}
return Lt(t);
}
function yo(t) {
return [
"dd-trigger",
{ "dd-trigger--block": t.block }
];
}
function bo(t) {
return `dd-rounded--${!t || !xt.includes(t) ? K : xt.find((o) => o === t)}`;
}
function ko(t) {
return `dd-content-rounded--${!t || !Ct.includes(t) ? Q : Ct.find((o) => o === t)}`;
}
function Ht(t) {
return {
isTriggerByClick: t === Nt,
isTriggerByHover: t === lo,
isTriggerByContextmenu: t === uo
};
}
const tt = () => E(Dt, {});
function xo(t = 300) {
let o;
return (n) => {
clearTimeout(o), o = setTimeout(n, t);
};
}
function Co(t, o, n, r, i, s) {
const { trigger: m, gap: d } = s, { isTriggerByContextmenu: j } = Ht(m);
function p(e, f, h) {
i.value || (r.value.vertical = jt);
const T = window.scrollY, g = document.documentElement.clientHeight, l = j ? e : f.top + T, u = j ? e : f.top + f.height + d + T, x = l - d - h.height, b = u + h.height > T + g, O = x < T;
return r.value.vertical === Tt ? O && !b ? (r.value.vertical = jt, u) : x : !O && b ? (r.value.vertical = Tt, x) : u;
}
function c(e, f, h) {
i.value || (r.value.horizontal = G);
const T = window.scrollX, g = document.documentElement.clientWidth, l = j ? 0 : f.width, u = j ? e : f.left + T, x = u + l / 2 - h.width / 2, b = u + l - h.width, O = u + h.width > T + g, N = x + h.width > T + g, V = b < T, M = et(s, "align");
return M.value === vo ? (r.value.horizontal = N ? pt : G, N ? b : V ? u : x) : M.value === G ? (r.value.horizontal = V ? G : pt, V ? u : b) : (r.value.horizontal = O ? pt : G, O ? b : u);
}
function k() {
const e = St(t.value), f = St(o.value);
return {
top: p(n.value.y, e, f),
left: c(n.value.x, e, f)
};
}
return { getDirection: k };
}
function To(t, o) {
let n = null;
const r = {
root: null,
rootMargin: "0px",
threshold: [0.5, 0.75, 1]
}, i = 1e-7, s = (p) => {
const c = p[0];
Math.abs(c.intersectionRatio - 1) < i || o?.();
};
function m() {
t.value && (n || (n = new IntersectionObserver(s, r)), n.observe(t.value));
}
function d() {
n && n.unobserve(t.value);
}
function j() {
n && (n.disconnect(), n = null);
}
return _t(j), {
startIntersectionObserving: m,
stopIntersectionObserving: d
};
}
function Lo(t, o, n) {
const r = C(!1), i = C(!1);
let s = null;
const m = () => {
if (!i.value) {
i.value = !0;
return;
}
n?.();
}, d = () => {
!t.value || !o.value || r.value || (s || (s = new ResizeObserver(m)), s.observe(t.value), s.observe(o.value), r.value = !0);
}, j = () => {
!s || !r.value || (t.value && o.value && (s.unobserve(t.value), s.unobserve(o.value)), r.value = !1, i.value = !1);
};
return so(() => {
s && (s.disconnect(), s = null, r.value = !1, i.value = !1);
}), {
startObserving: d,
stopObserving: j
};
}
function F(t, o, n, r) {
let i = null;
const s = () => {
i && (i.removeEventListener(o, n, r), i = null);
};
return It(() => {
i = typeof t == "function" ? t() : t, i?.addEventListener(o, n, r);
}), _t(s), s;
}
function So(t, o, n, r) {
const { emit: i, expose: s } = r, { disabled: m, manual: d, toggle: j } = Vt(n), p = C(!1), c = C({ x: null, y: null }), k = C({ vertical: jt, horizontal: G }), e = C(), f = C({}), h = _(() => n.animated ? `drop-${k.value.vertical}-${k.value.horizontal}` : ""), T = n.appendTo || wt, g = n.appendTo !== wt, l = xo(co), {
isTriggerByClick: u,
isTriggerByHover: x,
isTriggerByContextmenu: b
} = Ht(n.trigger), {
getDirection: O
} = Co(t, o, c, k, p, n), {
startObserving: N,
stopObserving: V
} = Lo(t, o, U), {
startIntersectionObserving: M,
stopIntersectionObserving: Z
} = To(o, U);
X(p, (S) => {
i("visible-change", S), S ? (document.body.addEventListener("mousedown", ht), N(), M()) : (V(), Z(), document.body.removeEventListener("mousedown", ht));
});
function W() {
i("open");
}
function Y() {
i("opened");
}
function w() {
i("close");
}
function v() {
i("closed");
}
function y() {
m.value || (U(), x ? l(() => {
p.value = !0;
}) : p.value = !0);
}
function L() {
m.value && !p.value || (x ? l(() => {
p.value = !1;
}) : p.value = !1);
}
const P = () => {
if (j.value)
return p.value ? L() : y();
p.value || y();
};
function ht(S) {
if (!p.value || !t.value || !o.value) return;
const no = t.value.contains(S.target), ao = o.value.contains(S.target);
if (no)
return b && S.button === 0 ? L() : "";
ao || L();
}
function U() {
const S = O();
f.value.top = `${S.top}px`, f.value.left = `${S.left}px`;
}
const to = (S) => {
!u || d.value || (S.stopPropagation(), P());
}, yt = () => x && y(), bt = () => x && L(), oo = (S) => {
!b || d.value || (S.stopPropagation(), S.preventDefault(), c.value.x = S.pageX, c.value.y = S.pageY, y());
};
u && F(() => t.value, "click", to), x && (F(() => t.value, "mouseenter", yt), F(() => t.value, "mouseleave", bt), F(() => o.value, "mouseenter", yt), F(() => o.value, "mouseleave", bt)), b && F(() => t.value, "contextmenu", oo);
const kt = {
disabled: _(() => m.value),
visible: _(() => p.value),
adjust: U,
open: y,
close: L,
toggleVisible: P
};
return A(Dt, kt), A(zt, {
contentStyles: f,
setContentClassGetter: (S) => {
e.value = S;
}
}), A(At, {
appendTo: T,
defer: g,
transitionName: h,
onDropdownOpen: W,
onDropdownOpened: Y,
onDropdownClose: w,
onDropdownClosed: v
}), s({
open: y,
close: L,
toggleVisible: P,
adjust: U,
visible: p
}), {
visible: p,
open: y,
close: L,
toggleVisible: P,
slotData: kt,
getContentClass: e,
contentStyles: f
};
}
const ft = /* @__PURE__ */ R({
name: "DropdownTrigger",
props: {
rounded: {
type: String,
default: K
}
},
setup(t, {
slots: o
}) {
const n = tt(), r = _(() => ["dd-default-trigger", {
"dd-opened": n?.visible?.value
}, bo(t.rounded)]), i = _(() => ({
"dd-trigger-container": !0,
"dd-disabled": n?.disabled?.value
})), s = () => o.default ? o.default() : "Open", m = () => t.rounded === Bt ? null : o.append ? o.append() : a("span", {
class: "dd-caret-down"
}, null), d = () => a("button", {
type: "button",
class: r.value
}, [a(s, null, null), a(m, null, null)]);
return () => a("div", {
class: i.value
}, [a(d, null, null)]);
}
}), Ro = /* @__PURE__ */ R({
name: "DropdownContentContainer",
setup(t, {
slots: o
}) {
const {
appendTo: n,
defer: r,
transitionName: i,
onDropdownOpen: s,
onDropdownOpened: m,
onDropdownClose: d,
onDropdownClosed: j
} = E(At, {}), p = (f, h) => {
s(), setTimeout(h, 150);
}, c = (f) => {
m();
}, k = (f, h) => {
d(), setTimeout(h, 75);
}, e = (f) => {
j();
};
return () => a(po, {
to: n,
defer: r
}, {
default: () => [a(mo, {
name: i.value,
onEnter: p,
onAfterEnter: c,
onLeave: k,
onAfterLeave: e
}, {
default: () => o?.default?.()
})]
});
}
}), Pt = /* @__PURE__ */ R({
name: "VDropdown",
props: {
disabled: {
type: Boolean,
default: !1
},
/** Content show up alignment direction */
align: {
type: String,
default: "left"
},
/** Toggle display / close dropdown content */
toggle: {
type: Boolean,
default: !0
},
/** Manual control the display and hiding of dropdown */
manual: {
type: Boolean,
default: !1
},
/**
* Trigger container display mode
* - false: inline-flex
* - true: flex
*/
block: {
type: Boolean,
default: !1
},
/**
* Dropdown trigger method
* - `click` default
* - `hover`
* - `contextmenu`
*/
trigger: {
type: String,
default: Nt
},
animated: {
type: Boolean,
default: !0
},
/** The distance(px) between the trigger and the content */
gap: {
type: Number,
default: 5
},
/** Dropdown content append target */
appendTo: {
type: [String, Object],
default: wt
}
},
emits: ["visible-change", "open", "close", "opened", "closed"],
setup(t, o) {
const {
slots: n
} = o, r = C(), i = C(), {
slotData: s,
visible: m,
getContentClass: d,
contentStyles: j
} = So(r, i, t, o), p = () => n.trigger ? n.trigger(s) : a(ft, null, null), c = () => a(Ro, null, {
default: () => ro(a("div", {
ref: i,
style: j.value,
class: d?.value?.()
}, [n?.default?.(s)]), [[io, m.value]])
});
return () => a("div", {
ref: r,
class: yo(t)
}, [a(p, null, null), a(c, null, null)]);
}
}), Ft = /* @__PURE__ */ R({
name: "DropdownContent",
// inheritAttrs: false,
props: {
border: {
type: Boolean,
default: !0
},
rounded: {
type: String,
default: Q
},
zIndex: {
type: Number,
default: fo
}
},
setup(t, {
slots: o,
attrs: n
}) {
const {
setContentClassGetter: r,
contentStyles: i
} = E(zt, {});
return r?.(() => {
const s = ["dd-content", ko(t.rounded)];
return t.border || s.push("dd-no-border"), s;
}), () => (i && (i.value["z-index"] = t.zIndex), a("div", {
class: "dd-content-body"
}, [o?.default?.()]));
}
}), I = "province", H = "city", B = "area", $ = "town", Eo = [
{ index: 0, level: I, title: "省/直辖市" },
{ index: 1, level: H, title: "市" },
{ index: 2, level: B, title: "区/县" },
{ index: 3, level: $, title: "乡/镇/街道" }
], z = [I, H, B, $], Rt = "#others-number#", D = Symbol("core"), q = Symbol("base"), gt = Symbol("dropdown"), [ot, Oo] = ["cn", "en"], Et = {
[ot]: {
pleaseSelect: "请选择",
defaultHead: "行政区划",
clear: "清除选择的项目",
noMatch: "无匹配项目",
others: `与其余${Rt}个`
},
[Oo]: {
pleaseSelect: "Please select",
defaultHead: "Region",
clear: "Clear selected region",
noMatch: "No matched items",
others: `and ${Rt} others`
}
};
function nt(t) {
return wo({
city: { type: Boolean, default: !0 },
area: { type: Boolean, default: !0 },
town: { type: Boolean, default: !0 },
language: { type: String, default: ot },
autoSelectFirst: { type: Boolean, default: !1 },
modelValue: { type: Object, default: void 0 }
}, t);
}
function at(t) {
return ["update:modelValue", "update:names", "change", ...t || []];
}
const Vo = {
11e4: "北京市",
110101: "东城区",
110102: "西城区",
110105: "朝阳区",
110106: "丰台区",
110107: "石景山区",
110108: "海淀区",
110109: "门头沟区",
110111: "房山区",
110112: "通州区",
110113: "顺义区",
110114: "昌平区",
110115: "大兴区",
110116: "怀柔区",
110117: "平谷区",
110118: "密云区",
110119: "延庆区",
12e4: "天津市",
120101: "和平区",
120102: "河东区",
120103: "河西区",
120104: "南开区",
120105: "河北区",
120106: "红桥区",
120110: "东丽区",
120111: "西青区",
120112: "津南区",
120113: "北辰区",
120114: "武清区",
120115: "宝坻区",
120116: "滨海新区",
120117: "宁河区",
120118: "静海区",
120119: "蓟州区",
13e4: "河北省",
130100: "石家庄市",
130102: "长安区",
130104: "桥西区",
130105: "新华区",
130107: "井陉矿区",
130108: "裕华区",
130109: "藁城区",
130110: "鹿泉区",
130111: "栾城区",
130121: "井陉县",
130123: "正定县",
130125: "行唐县",
130126: "灵寿县",
130127: "高邑县",
130128: "深泽县",
130129: "赞皇县",
130130: "无极县",
130131: "平山县",
130132: "元氏县",
130133: "赵县",
130181: "辛集市",
130183: "晋州市",
130184: "新乐市",
130200: "唐山市",
130202: "路南区",
130203: "路北区",
130204: "古冶区",
130205: "开平区",
130207: "丰南区",
130208: "丰润区",
130209: "曹妃甸区",
130224: "滦南县",
130225: "乐亭县",
130227: "迁西县",
130229: "玉田县",
130281: "遵化市",
130283: "迁安市",
130284: "滦州市",
130300: "秦皇岛市",
130302: "海港区",
130303: "山海关区",
130304: "北戴河区",
130306: "抚宁区",
130321: "青龙满族自治县",
130322: "昌黎县",
130324: "卢龙县",
130400: "邯郸市",
130402: "邯山区",
130403: "丛台区",
130404: "复兴区",
130406: "峰峰矿区",
130407: "肥乡区",
130408: "永年区",
130423: "临漳县",
130424: "成安县",
130425: "大名县",
130426: "涉县",
130427: "磁县",
130430: "邱县",
130431: "鸡泽县",
130432: "广平县",
130433: "馆陶县",
130434: "魏县",
130435: "曲周县",
130481: "武安市",
130500: "邢台市",
130502: "襄都区",
130503: "信都区",
130505: "任泽区",
130506: "南和区",
130522: "临城县",
130523: "内丘县",
130524: "柏乡县",
130525: "隆尧县",
130528: "宁晋县",
130529: "巨鹿县",
130530: "新河县",
130531: "广宗县",
130532: "平乡县",
130533: "威县",
130534: "清河县",
130535: "临西县",
130581: "南宫市",
130582: "沙河市",
130600: "保定市",
130602: "竞秀区",
130606: "莲池区",
130607: "满城区",
130608: "清苑区",
130609: "徐水区",
130623: "涞水县",
130624: "阜平县",
130626: "定兴县",
130627: "唐县",
130628: "高阳县",
130629: "容城县",
130630: "涞源县",
130631: "望都县",
130632: "安新县",
130633: "易县",
130634: "曲阳县",
130635: "蠡县",
130636: "顺平县",
130637: "博野县",
130638: "雄县",
130681: "涿州市",
130682: "定州市",
130683: "安国市",
130684: "高碑店市",
130700: "张家口市",
130702: "桥东区",
130703: "桥西区",
130705: "宣化区",
130706: "下花园区",
130708: "万全区",
130709: "崇礼区",
130722: "张北县",
130723: "康保县",
130724: "沽源县",
130725: "尚义县",
130726: "蔚县",
130727: "阳原县",
130728: "怀安县",
130730: "怀来县",
130731: "涿鹿县",
130732: "赤城县",
130800: "承德市",
130802: "双桥区",
130803: "双滦区",
130804: "鹰手营子矿区",
130821: "承德县",
130822: "兴隆县",
130824: "滦平县",
130825: "隆化县",
130826: "丰宁满族自治县",
130827: "宽城满族自治县",
130828: "围场满族蒙古族自治县",
130881: "平泉市",
130900: "沧州市",
130902: "新华区",
130903: "运河区",
130921: "沧县",
130922: "青县",
130923: "东光县",
130924: "海兴县",
130925: "盐山县",
130926: "肃宁县",
130927: "南皮县",
130928: "吴桥县",
130929: "献县",
130930: "孟村回族自治县",
130981: "泊头市",
130982: "任丘市",
130983: "黄骅市",
130984: "河间市",
131e3: "廊坊市",
131002: "安次区",
131003: "广阳区",
131022: "固安县",
131023: "永清县",
131024: "香河县",
131025: "大城县",
131026: "文安县",
131028: "大厂回族自治县",
131081: "霸州市",
131082: "三河市",
131100: "衡水市",
131102: "桃城区",
131103: "冀州区",
131121: "枣强县",
131122: "武邑县",
131123: "武强县",
131124: "饶阳县",
131125: "安平县",
131126: "故城县",
131127: "景县",
131128: "阜城县",
131182: "深州市",
14e4: "山西省",
140100: "太原市",
140105: "小店区",
140106: "迎泽区",
140107: "杏花岭区",
140108: "尖草坪区",
140109: "万柏林区",
140110: "晋源区",
140121: "清徐县",
140122: "阳曲县",
140123: "娄烦县",
140181: "古交市",
140200: "大同市",
140212: "新荣区",
140213: "平城区",
140214: "云冈区",
140215: "云州区",
140221: "阳高县",
140222: "天镇县",
140223: "广灵县",
140224: "灵丘县",
140225: "浑源县",
140226: "左云县",
140300: "阳泉市",
140302: "城区",
140303: "矿区",
140311: "郊区",
140321: "平定县",
140322: "盂县",
140400: "长治市",
140403: "潞州区",
140404: "上党区",
140405: "屯留区",
140406: "潞城区",
140423: "襄垣县",
140425: "平顺县",
140426: "黎城县",
140427: "壶关县",
140428: "长子县",
140429: "武乡县",
140430: "沁县",
140431: "沁源县",
140500: "晋城市",
140502: "城区",
140521: "沁水县",
140522: "阳城县",
140524: "陵川县",
140525: "泽州县",
140581: "高平市",
140600: "朔州市",
140602: "朔城区",
140603: "平鲁区",
140621: "山阴县",
140622: "应县",
140623: "右玉县",
140681: "怀仁市",
140700: "晋中市",
140702: "榆次区",
140703: "太谷区",
140721: "榆社县",
140722: "左权县",
140723: "和顺县",
140724: "昔阳县",
140725: "寿阳县",
140727: "祁县",
140728: "平遥县",
140729: "灵石县",
140781: "介休市",
140800: "运城市",
140802: "盐湖区",
140821: "临猗县",
140822: "万荣县",
140823: "闻喜县",
140824: "稷山县",
140825: "新绛县",
140826: "绛县",
140827: "垣曲县",
140828: "夏县",
140829: "平陆县",
140830: "芮城县",
140881: "永济市",
140882: "河津市",
140900: "忻州市",
140902: "忻府区",
140921: "定襄县",
140922: "五台县",
140923: "代县",
140924: "繁峙县",
140925: "宁武县",
140926: "静乐县",
140927: "神池县",
140928: "五寨县",
140929: "岢岚县",
140930: "河曲县",
140931: "保德县",
140932: "偏关县",
140981: "原平市",
141e3: "临汾市",
141002: "尧都区",
141021: "曲沃县",
141022: "翼城县",
141023: "襄汾县",
141024: "洪洞县",
141025: "古县",
141026: "安泽县",
141027: "浮山县",
141028: "吉县",
141029: "乡宁县",
141030: "大宁县",
141031: "隰县",
141032: "永和县",
141033: "蒲县",
141034: "汾西县",
141081: "侯马市",
141082: "霍州市",
141100: "吕梁市",
141102: "离石区",
141121: "文水县",
141122: "交城县",
141123: "兴县",
141124: "临县",
141125: "柳林县",
141126: "石楼县",
141127: "岚县",
141128: "方山县",
141129: "中阳县",
141130: "交口县",
141181: "孝义市",
141182: "汾阳市",
15e4: "内蒙古自治区",
150100: "呼和浩特市",
150102: "新城区",
150103: "回民区",
150104: "玉泉区",
150105: "赛罕区",
150121: "土默特左旗",
150122: "托克托县",
150123: "和林格尔县",
150124: "清水河县",
150125: "武川县",
150200: "包头市",
150202: "东河区",
150203: "昆都仑区",
150204: "青山区",
150205: "石拐区",
150206: "白云鄂博矿区",
150207: "九原区",
150221: "土默特右旗",
150222: "固阳县",
150223: "达尔罕茂明安联合旗",
150300: "乌海市",
150302: "海勃湾区",
150303: "海南区",
150304: "乌达区",
150400: "赤峰市",
150402: "红山区",
150403: "元宝山区",
150404: "松山区",
150421: "阿鲁科尔沁旗",
150422: "巴林左旗",
150423: "巴林右旗",
150424: "林西县",
150425: "克什克腾旗",
150426: "翁牛特旗",
150428: "喀喇沁旗",
150429: "宁城县",
150430: "敖汉旗",
150500: "通辽市",
150502: "科尔沁区",
150521: "科尔沁左翼中旗",
150522: "科尔沁左翼后旗",
150523: "开鲁县",
150524: "库伦旗",
150525: "奈曼旗",
150526: "扎鲁特旗",
150581: "霍林郭勒市",
150600: "鄂尔多斯市",
150602: "东胜区",
150603: "康巴什区",
150621: "达拉特旗",
150622: "准格尔旗",
150623: "鄂托克前旗",
150624: "鄂托克旗",
150625: "杭锦旗",
150626: "乌审旗",
150627: "伊金霍洛旗",
150700: "呼伦贝尔市",
150702: "海拉尔区",
150703: "扎赉诺尔区",
150721: "阿荣旗",
150722: "莫力达瓦达斡尔族自治旗",
150723: "鄂伦春自治旗",
150724: "鄂温克族自治旗",
150725: "陈巴尔虎旗",
150726: "新巴尔虎左旗",
150727: "新巴尔虎右旗",
150781: "满洲里市",
150782: "牙克石市",
150783: "扎兰屯市",
150784: "额尔古纳市",
150785: "根河市",
150800: "巴彦淖尔市",
150802: "临河区",
150821: "五原县",
150822: "磴口县",
150823: "乌拉特前旗",
150824: "乌拉特中旗",
150825: "乌拉特后旗",
150826: "杭锦后旗",
150900: "乌兰察布市",
150902: "集宁区",
150921: "卓资县",
150922: "化德县",
150923: "商都县",
150924: "兴和县",
150925: "凉城县",
150926: "察哈尔右翼前旗",
150927: "察哈尔右翼中旗",
150928: "察哈尔右翼后旗",
150929: "四子王旗",
150981: "丰镇市",
152200: "兴安盟",
152201: "乌兰浩特市",
152202: "阿尔山市",
152221: "科尔沁右翼前旗",
152222: "科尔沁右翼中旗",
152223: "扎赉特旗",
152224: "突泉县",
152500: "锡林郭勒盟",
152501: "二连浩特市",
152502: "锡林浩特市",
152522: "阿巴嘎旗",
152523: "苏尼特左旗",
152524: "苏尼特右旗",
152525: "东乌珠穆沁旗",
152526: "西乌珠穆沁旗",
152527: "太仆寺旗",
152528: "镶黄旗",
152529: "正镶白旗",
152530: "正蓝旗",
152531: "多伦县",
152900: "阿拉善盟",
152921: "阿拉善左旗",
152922: "阿拉善右旗",
152923: "额济纳旗",
21e4: "辽宁省",
210100: "沈阳市",
210102: "和平区",
210103: "沈河区",
210104: "大东区",
210105: "皇姑区",
210106: "铁西区",
210111: "苏家屯区",
210112: "浑南区",
210113: "沈北新区",
210114: "于洪区",
210115: "辽中区",
210123: "康平县",
210124: "法库县",
210181: "新民市",
210200: "大连市",
210202: "中山区",
210203: "西岗区",
210204: "沙河口区",
210211: "甘井子区",
210212: "旅顺口区",
210213: "金州区",
210214: "普兰店区",
210224: "长海县",
210281: "瓦房店市",
210283: "庄河市",
210300: "鞍山市",
210302: "铁东区",
210303: "铁西区",
210304: "立山区",
210311: "千山区",
210321: "台安县",
210323: "岫岩满族自治县",
210381: "海城市",
210400: "抚顺市",
210402: "新抚区",
210403: "东洲区",
210404: "望花区",
210411: "顺城区",
210421: "抚顺县",
210422: "新宾满族自治县",
210423: "清原满族自治县",
210500: "本溪市",
210502: "平山区",
210503: "溪湖区",
210504: "明山区",
210505: "南芬区",
210521: "本溪满族自治县",
210522: "桓仁满族自治县",
210600: "丹东市",
210602: "元宝区",
210603: "振兴区",
210604: "振安区",
210624: "宽甸满族自治县",
210681: "东港市",
210682: "凤城市",
210700: "锦州市",
210702: "古塔区",
210703: "凌河区",
210711: "太和区",
210726: "黑山县",
210727: "义县",
210781: "凌海市",
210782: "北镇市",
210800: "营口市",
210802: "站前区",
210803: "西市区",
210804: "鲅鱼圈区",
210811: "老边区",
210881: "盖州市",
210882: "大石桥市",
210900: "阜新市",
210902: "海州区",
210903: "新邱区",
210904: "太平区",
210905: "清河门区",
210911: "细河区",
210921: "阜新蒙古族自治县",
210922: "彰武县",
211e3: "辽阳市",
211002: "白塔区",
211003: "文圣区",
211004: "宏伟区",
211005: "弓长岭区",
211011: "太子河区",
211021: "辽阳县",
211081: "灯塔市",
211100: "盘锦市",
211102: "双台子区",
211103: "兴隆台区",
211104: "大洼区",
211122: "盘山县",
211200: "铁岭市",
211202: "银州区",
211204: "清河区",
211221: "铁岭县",
211223: "西丰县",
211224: "昌图县",
211281: "调兵山市",
211282: "开原市",
211300: "朝阳市",
211302: "双塔区",
211303: "龙城区",
211321: "朝阳县",
211322: "建平县",
211324: "喀喇沁左翼蒙古族自治县",
211381: "北票市",
211382: "凌源市",
211400: "葫芦岛市",
211402: "连山区",
211403: "龙港区",
211404: "南票区",
211421: "绥中县",
211422: "建昌县",
211481: "兴城市",
22e4: "吉林省",
220100: "长春市",
220102: "南关区",
220103: "宽城区",
220104: "朝阳区",
220105: "二道区",
220106: "绿园区",
220112: "双阳区",
220113: "九台区",
220122: "农安县",
220182: "榆树市",
220183: "德惠市",
220184: "公主岭市",
220200: "吉林市",
220202: "昌邑区",
220203: "龙潭区",
220204: "船营区",
220211: "丰满区",
220221: "永吉县",
220281: "蛟河市",
220282: "桦甸市",
220283: "舒兰市",
220284: "磐石市",
220300: "四平市",
220302: "铁西区",
220303: "铁东区",
220322: "梨树县",
220323: "伊通满族自治县",
220382: "双辽市",
220400: "辽源市",
220402: "龙山区",
220403: "西安区",
220421: "东丰县",
220422: "东辽县",
220500: "通化市",
220502: "东昌区",
220503: "二道江区",
220521: "通化县",
220523: "辉南县",
220524: "柳河县",
220581: "梅河口市",
220582: "集安市",
220600: "白山市",
220602: "浑江区",
220605: "江源区",
220621: "抚松县",
220622: "靖宇县",
220623: "长白朝鲜族自治县",
220681: "临江市",
220700: "松原市",
220702: "宁江区",
220721: "前郭尔罗斯蒙古族自治县",
220722: "长岭县",
220723: "乾安县",
220781: "扶余市",
220800: "白城市",
220802: "洮北区",
220821: "镇赉县",
220822: "通榆县",
220881: "洮南市",
220882: "大安市",
222400: "延边朝鲜族自治州",
222401: "延吉市",
222402: "图们市",
222403: "敦化市",
222404: "珲春市",
222405: "龙井市",
222406: "和龙市",
222424: "汪清县",
222426: "安图县",
23e4: "黑龙江省",
230100: "哈尔滨市",
230102: "道里区",
230103: "南岗区",
230104: "道外区",
230108: "平房区",
230109: "松北区",
230110: "香坊区",
230111: "呼兰区",
230112: "阿城区",
230113: "双城区",
230123: "依兰县",
230124: "方正县",
230125: "宾县",
230126: "巴彦县",
230127: "木兰县",
230128: "通河县",
230129: "延寿县",
230183: "尚志市",
230184: "五常市",
230200: "齐齐哈尔市",
230202: "龙沙区",
230203: "建华区",
230204: "铁锋区",
230205: "昂昂溪区",
230206: "富拉尔基区",
230207: "碾子山区",
230208: "梅里斯达斡尔族区",
230221: "龙江县",
230223: "依安县",
230224: "泰来县",
230225: "甘南县",
230227: "富裕县",
230229: "克山县",
230230: "克东县",
230231: "拜泉县",
230281: "讷河市",
230300: "鸡西市",
230302: "鸡冠区",
230303: "恒山区",
230304: "滴道区",
230305: "梨树区",
230306: "城子河区",
230307: "麻山区",
230321: "鸡东县",
230381: "虎林市",
230382: "密山市",
230400: "鹤岗市",
230402: "向阳区",
230403: "工农区",
230404: "南山区",
230405: "兴安区",
230406: "东山区",
230407: "兴山区",
230421: "萝北县",
230422: "绥滨县",
230500: "双鸭山市",
230502: "尖山区",
230503: "岭东区",
230505: "四方台区",
230506: "宝山区",
230521: "集贤县",
230522: "友谊县",
230523: "宝清县",
230524: "饶河县",
230600: "大庆市",
230602: "萨尔图区",
230603: "龙凤区",
230604: "让胡路区",
230605: "红岗区",
230606: "大同区",
230621: "肇州县",
230622: "肇源县",
230623: "林甸县",
230624: "杜尔伯特蒙古族自治县",
230700: "伊春市",
230717: "伊美区",
230718: "乌翠区",
230719: "友好区",
230722: "嘉荫县",
230723: "汤旺县",
230724: "丰林县",
230725: "大箐山县",
230726: "南岔县",
230751: "金林区",
230781: "铁力市",
230800: "佳木斯市",
230803: "向阳区",
230804: "前进区",
230805: "东风区",
230811: "郊区",
230822: "桦南县",
230826: "桦川县",
230828: "汤原县",
230881: "同江市",
230882: "富锦市",
230883: "抚远市",
230900: "七台河市",
230902: "新兴区",
230903: "桃山区",
230904: "茄子河区",
230921: "勃利县",
231e3: "牡丹江市",
231002: "东安区",
231003: "阳明区",
231004: "爱民区",
231005: "西安区",
231025: "林口县",
231081: "绥芬河市",
231083: "海林市",
231084: "宁安市",
231085: "穆棱市",
231086: "东宁市",
231100: "黑河市",
231102: "爱辉区",
231123: "逊克县",
231124: "孙吴县",
231181: "北安市",
231182: "五大连池市",
231183: "嫩江市",
231200: "绥化市",
231202: "北林区",
231221: "望奎县",
231222: "兰西县",
231223: "青冈县",
231224: "庆安县",
231225: "明水县",
231226: "绥棱县",
231281: "安达市",
231282: "肇东市",
231283: "海伦市",
232700: "大兴安岭地区",
232701: "漠河市",
232721: "呼玛县",
232722: "塔河县",
31e4: "上海市",
310101: "黄浦区",
310104: "徐汇区",
310105: "长宁区",
310106: "静安区",
310107: "普陀区",
310109: "虹口区",
310110: "杨浦区",
310112: "闵行区",
310113: "宝山区",
310114: "嘉定区",
310115: "浦东新区",
310116: "金山区",
310117: "松江区",
310118: "青浦区",
310120: "奉贤区",
310151: "崇明区",
32e4: "江苏省",
320100: "南京市",
320102: "玄武区",
320104: "秦淮区",
320105: "建邺区",
320106: "鼓楼区",
320111: "浦口区",
320113: "栖霞区",
320114: "雨花台区",
320115: "江宁区",
320116: "六合区",
320117: "溧水区",
320118: "高淳区",
320200: "无锡市",
320205: "锡山区",
320206: "惠山区",
320211: "滨湖区",
320213: "梁溪区",
320214: "新吴区",
320281: "江阴市",
320282: "宜兴市",
320300: "徐州市",
320302: "鼓楼区",
320303: "云龙区",
320305: "贾汪区",
320311: "泉山区",
320312: "铜山区",
320321: "丰县",
320322: "沛县",
320324: "睢宁县",
320381: "新沂市",
320382: "邳州市",
320400: "常州市",
320402: "天宁区",
320404: "钟楼区",
320411: "新北区",
320412: "武进区",
320413: "金坛区",
320481: "溧阳市",
320500: "苏州市",
320505: "虎丘区",
320506: "吴中区",
320507: "相城区",
320508: "姑苏区",
320509: "吴江区",
320581: "常熟市",
320582: "张家港市",
320583: "昆山市",
320585: "太仓市",
320600: "南通市",
320612: "通州区",
320613: "崇川区",
320614: "海门区",
320623: "如东县",
320681: "启东市",
320682: "如皋市",
320685: "海安市",
320700: "连云港市",
320703: "连云区",
320706: "海州区",
320707: "赣榆区",
320722: "东海县",
320723: "灌云县",
320724: "灌南县",
320800: "淮安市",
320803: "淮安区",
320804: "淮阴区",
320812: "清江浦区",
320813: "洪泽区",
320826: "涟水县",
320830: "盱眙县",
320831: "金湖县",
320900: "盐城市",
320902: "亭湖区",
320903: "盐都区",
320904: "大丰区",
320921: "响水县",
320922: "滨海县",
320923: "阜宁县",
320924: "射阳县",
320925: "建湖县",
320981: "东台市",
321e3: "扬州市",
321002: "广陵区",
321003: "邗江区",
321012: "江都区",
321023: "宝应县",
321081: "仪征市",
321084: "高邮市",
321100: "镇江市",
321102: "京口区",
321111: "润州区",
321112: "丹徒区",
321181: "丹阳市",
321182: "扬中市",
321183: "句容市",
321200: "泰州市",
321202: "海陵区",
321203: "高港区",
321204: "姜堰区",
321281: "兴化市",
321282: "靖江市",
321283: "泰兴市",
321300: "宿迁市",
321302: "宿城区",
321311: "宿豫区",
321322: "沭阳县",
321323: "泗阳县",
321324: "泗洪县",
33e4: "浙江省",
330100: "杭州市",
330102: "上城区",
330105: "拱墅区",
330106: "西湖区",
330108: "滨江区",
330109: "萧山区",
330110: "余杭区",
330111: "富阳区",
330112: "临安区",
330113: "临平区",
330114: "钱塘区",
330122: "桐庐县",
330127: "淳安县",
330182: "建德市",
330200: "宁波市",
330203: "海曙区",
330205: "江北区",
330206: "北仑区",
330211: "镇海区",
330212: "鄞州区",
330213: "奉化区",
330225: "象山县",
330226: "宁海县",
330281: "余姚市",
330282: "慈溪市",
330300: "温州市",
330302: "鹿城区",
330303: "龙湾区",
330304: "瓯海区",
330305: "洞头区",
330324: "永嘉县",
330326: "平阳县",
330327: "苍南县",
330328: "文成县",
330329: "泰顺县",
330381: "瑞安市",
330382: "乐清市",
330383: "龙港市",
330400: "嘉兴市",
330402: "南湖区",
330411: "秀洲区",
330421: "嘉善县",
330424: "海盐县",
330481: "海宁市",
330482: "平湖市",
330483: "桐乡市",
330500: "湖州市",
330502: "吴兴区",
330503: "南浔区",
330521: "德清县",
330522: "长兴县",
330523: "安吉县",
330600: "绍兴市",
330602: "越城区",
330603: "柯桥区",
330604: "上虞区",
330624: "新昌县",
330681: "诸暨市",
330683: "嵊州市",
330700: "金华市",
330702: "婺城区",
330703: "金东区",
330723: "武义县",
330726: "浦江县",
330727: "磐安县",
330781: "兰溪市",
330782: "义乌市",
330783: "东阳市",
330784: "永康市",
330800: "衢州市",
330802: "柯城区",
330803: "衢江区",
330822: "常山县",
330824: "开化县",
330825: "龙游县",
330881: "江山市",
330900: "舟山市",
330902: "定海区",
330903: "普陀区",
330921: "岱山县",
330922: "嵊泗县",
331e3: "台州市",
331002: "椒江区",
331003: "黄岩区",
331004: "路桥区",
331022: "三门县",
331023: "天台县",
331024: "仙居县",
331081: "温岭市",
331082: "临海市",
331083: "玉环市",
331100: "丽水市",
331102: "莲都区",
331121: "青田县",
331122: "缙云县",
331123: "遂昌县",
331124: "松阳县",
331125: "云和县",
331126: "庆元县",
331127: "景宁畲族自治县",
331181: "龙泉市",
34e4: "安徽省",
340100: "合肥市",
340102: "瑶海区",
340103: "庐阳区",
340104: "蜀山区",
340111: "包河区",
340121: "长丰县",
340122: "肥东县",
340123: "肥西县",
340124: "庐江县",
340181: "巢湖市",
340200: "芜湖市",
340202: "镜湖区",
340207: "鸠江区",
340209: "弋江区",
340210: "湾沚区",
340212: "繁昌区",
340223: "南陵县",
340281: "无为市",
340300: "蚌埠市",
340302: "龙子湖区",
340303: "蚌山区",
340304: "禹会区",
340311: "淮上区",
340321: "怀远县",
340322: "五河县",
340323: "固镇县",
340400: "淮南市",
340402: "大通区",
340403: "田家庵区",
340404: "谢家集区",
340405: "八公山区",
340406: "潘集区",
340421: "凤台县",
340422: "寿县",
340500: "马鞍山市",
340503: "花山区",
340504: "雨山区",
340506: "博望区",
340521: "当涂县",
340522: "含山县",
340523: "和县",
340600: "淮北市",
340602: "杜集区",
340603: "相山区",
340604: "烈山区",
340621: "濉溪县",
340700: "铜陵市",
340705: "铜官区",
340706: "义安区",
340711: "郊区",
340722: "枞阳县",
340800: "安庆市",
340802: "迎江区",
340803: "大观区",
340811: "宜秀区",
340822: "怀宁县",
340825: "太湖县",
340826: "宿松县",
340827: "望江县",
340828: "岳西县",
340881: "桐城市",
340882: "潜山市",
341e3: "黄山市",
341002: "屯溪区",
341003: "黄山区",
341004: "徽州区",
341021: "歙县",
341022: "休宁县",
341023: "黟县",
341024: "祁门县",
341100: "滁州市",
341102: "琅琊区",
341103: "南谯区",
341122: "来安县",
341124: "全椒县",
341125: "定远县",
341126: "凤阳县",
341181: "天长市",
341182: "明光市",
341200: "阜阳市",
341202: "颍州区",
341203: "颍东区",
341204: "颍泉区",
341221: "临泉县",
341222: "太和县",
341225: "阜南县",
341226: "颍上县",
341282: "界首市",
341300: "宿州市",
341302: "埇桥区",
341321: "砀山县",
341322: "萧县",
341323: "灵璧县",
341324: "泗县",
341500: "六安市",
341502: "金安区",
341503: "裕安区",
341504: "叶集区",
341522: "霍邱县",
341523: "舒城县",
341524: "金寨县",
341525: "霍山县",
341600: "亳州市",
341602: "谯城区",
341621: "涡阳县",
341622: "蒙城县",
341623: "利辛县",
341700: "池州市",
341702: "贵池区",
341721: "东至县",
341722: "石台县",
341723: "青阳县",
341800: "宣城市",
341802: "宣州区",
341821: "郎溪县",
341823: "泾县",
341824: "绩溪县",
341825: "旌德县",
341881: "宁国市",
341882: "广德市",
35e4: "福建省",
350100: "福州市",
350102: "鼓楼区",
350103: "台江区",
350104: "仓山区",
350105: "马尾区",
350111: "晋安区",
350112: "长乐区",
350121: "闽侯县",
350122: "连江县",
350123: "罗源县",
350124: "闽清县",
350125: "永泰县",
350128: "平潭县",
350181: "福清市",
350200: "厦门市",
350203: "思明区",
350205: "海沧区",
350206: "湖里区",
350211: "集美区",
350212: "同安区",
350213: "翔安区",
350300: "莆田市",
350302: "城厢区",
350303: "涵江区",
350304: "荔城区",
350305: "秀屿区",
350322: "仙游县",
350400: "三明市",
350404: "三元区",
350405: "沙县区",
350421: "明溪县",
350423: "清流县",
350424: "宁化县",
350425: "大田县",
350426: "尤溪县",
350428: "将乐县",
350429: "泰宁县",
350430: "建宁县",
350481: "永安市",
350500: "泉州市",
350502: "鲤城区",
350503: "丰泽区",
350504: "洛江区",
350505: "泉港区",
350521: "惠安县",
350524: "安溪县",
350525: "永春县",
350526: "德化县",
350527: "金门县",
350581: "石狮市",
350582: "晋江市",
350583: "南安市",
350600: "漳州市",
350602: "芗城区",
350603: "龙文区",
350604: "龙海区",
350605: "长泰区",
350622: "云霄县",
350623: "漳浦县",
350624: "诏安县",
350626: "东山县",
350627: "南靖县",
350628: "平和县",
350629: "华安县",
350700: "南平市",
350702: "延平区",
350703: "建阳区",
350721: "顺昌县",
350722: "浦城县",
350723: "光泽县",
350724: "松溪县",
350725: "政和县",
350781: "邵武市",
350782: "武夷山市",
350783: "建瓯市",
350800: "龙岩市",
350802: "新罗区",
350803: "永定区",
350821: "长汀县",
350823: "上杭县",
350824: "武平县",
350825: "连城县",
350881: "漳平市",
350900: "宁德市",
350902: "蕉城区",
350921: "霞浦县",
350922: "古田县",
350923: "屏南县",
350924: "寿宁县",
350925: "周宁县",
350926: "柘荣县",
350981: "福安市",
350982: "福鼎市",
36e4: "江西省",
360100: "南昌市",
360102: "东湖区",
360103: "西湖区",
360104: "青云谱区",
360111: "青山湖区",
360112: "新建区",
360113: "红谷滩区",
360121: "南昌县",
360123: "安义县",
360124: "进贤县",
360200: "景德镇市",
360202: "昌江区",
360203: "珠山区",
360222: "浮梁县",
360281: "乐平市",
360300: "萍乡市",
360302: "安源区",
360313: "湘东区",
360321: "莲花县",
360322: "上栗县",
360323: "芦溪县",
360400: "九江市",
360402: "濂溪区",
360403: "浔阳区",
360404: "柴桑区",
360423: "武宁县",
360424: "修水县",
360425: "永修县",
360426: "德安县",
360428: "都昌县",
360429: "湖口县",
360430: "彭泽县",
360481: "瑞昌市",
360482: "共青城市",
360483: "庐山市",
360500: "新余市",
360502: "渝水区",
360521: "分宜县",
360600: "鹰潭市",
360602: "月湖区",
360603: "余江区",
360681: "贵溪市",
360700: "赣州市",
360702: "章贡区",
360703: "南康区",
360704: "赣县区",
360722: "信丰县",
360723: "大余县",
360724: "上犹县",
360725: "崇义县",
360726: "安远县",
360728: "定南县",
360729: "全南县",
360730: "宁都县",
360731: "于都县",
360732: "兴国县",
360733: "会昌县",
360734: "寻乌县",
360735: "石城县",
360781: "瑞金市",
360783: "龙南市",
360800: "吉安市",
360802: "吉州区",
360803: "青原区",
360821: "吉安县",
360822: "吉水县",
360823: "峡江县",
360824: "新干县",
360825: "永丰县",
360826: "泰和县",
360827: "遂川县",
360828: "万安县",
360829: "安福县",
360830: "永新县",
360881: "井冈山市",
360900: "宜春市",
360902: "袁州区",
360921: "奉新县",
360922: "万载县",
360923: "上高县",
360924: "宜丰县",
360925: "靖安县",
360926: "铜鼓县",
360981: "丰城市",
360982: "樟树市",
360983: "高安市",
361e3: "抚州市",
361002: "临川区",
361003: "东乡区",
361021: "南城县",
361022: "黎川县",
361023: "南丰县",
361024: "崇仁县",
361025: "乐安县",
361026: "宜黄县",
361027: "金溪县",
361028: "资溪县",
361030: "广昌县",
361100: "上饶市",
361102: "信州区",
361103: "广丰区",
361104: "广信区",
361123: "玉山县",
361124: "铅山县",
361125: "横峰县",
361126: "弋阳县",
361127: "余干县",
361128: "鄱阳县",
361129: "万年县",
361130: "婺源县",
361181: "德兴市",
37e4: "山东省",
370100: "济南市",
370102: "历下区",
370103: "市中区",
370104: "槐荫区",
370105: "天桥区",
370112: "历城区",
370113: "长清区",
370114: "章丘区",
370115: "济阳区",
370116: "莱芜区",
370117: "钢城区",
370124: "平阴县",
370126: "商河县",
370200: "青岛市",
370202: "市南区",
370203: "市北区",
370211: "黄岛区",
370212: "崂山区",
370213: "李沧区",
370214: "城阳区",
370215: "即墨区",
370281: "胶州市",
370283: "平度市",
370285: "莱西市",
370300: "淄博市",
370302: "淄川区",
370303: "张店区",
370304: "博山区",
370305: "临淄区",
370306: "周村区",
370321: "桓台县",
370322: "高青县",
370323: "沂源县",
370400: "枣庄市",
370402: "市中区",
370403: "薛城区",
370404: "峄城区",
370405: "台儿庄区",
370406: "山亭区",
370481: "滕州市",
370500: "东营市",
370502: "东营区",
370503: "河口区",
370505: "垦利区",
370522: "利津县",
370523: "广饶县",
370600: "烟台市",
370602: "芝罘区",
370611: "福山区",
370612: "牟平区",
370613: "莱山区",
370614: "蓬莱区",
370681: "龙口市",
370682: "莱阳市",
370683: "莱州市",
370685: "招远市",
370686: "栖霞市",
370687: "海阳市",
370700: "潍坊市",
370702: "潍城区",
370703: "寒亭区",
370704: "坊子区",
370705: "奎文区",
370724: "临朐县",
370725: "昌乐县",
370781: "青州市",
370782: "诸城市",
370783: "寿光市",
370784: "安丘市",
370785: "高密市",
370786: "昌邑市",
370800: "济宁市",
370811: "任城区",
370812: "兖州区",
370826: "微山县",
370827: "鱼台县",
370828: "金乡县",
370829: "嘉祥县",
370830: "汶上县",
370831: "泗水县",
370832: "梁山县",
370881: "曲阜市",
370883: "邹城市",
370900: "泰安市",
370902: "泰山区",
370911: "岱岳区",
370921: "宁阳县",
370923: "东平县",
370982: "新泰市",
370983: "肥城市",
371e3: "威海市",
371002: "环翠区",
371003: "文登区",
371082: "荣成市",
371083: "乳山市",
371100: "日照市",
371102: "东港区",
371103: "岚山区",
371121: "五莲县",
371122: "莒县",
371300: "临沂市",
371302: "兰山区",
371311: "罗庄区",
371312: "河东区",
371321: "沂南县",
371322: "郯城县",
371323: "沂水县",
371324: "兰陵县",
371325: "费县",
371326: "平邑县",
371327: "莒南县",
371328: "蒙阴县",
371329: "临沭县",
371400: "德州市",
371402: "德城区",
371403: "陵城区",
371422: "宁津县",
371423: "庆云县",
371424: "临邑县",
371425: "齐河县",
371426: "平原县",
371427: "夏津县",
371428: "武城县",
371481: "乐陵市",
371482: "禹城市",
371500: "聊城市",
371502: "东昌府区",
371503: "茌平区",
371521: "阳谷县",
371522: "莘县",
371524: "东阿县",
371525: "冠县",
371526: "高唐县",
371581: "临清市",
371600: "滨州市",
371602: "滨城区",
371603: "沾化区",
371621: "惠民县",
371622: "阳信县",
371623: "无棣县",
371625: "博兴县",
371681: "邹平市",
371700: "菏泽市",
371702: "牡丹区",
371703: "定陶区",
371721: "曹县",
371722: "单县",
371723: "成武县",
371724: "巨野县",
371725: "郓城县",
371726: "鄄城县",
371728: "东明县",
41e4: "河南省",
410100: "郑州市",
410102: "中原区",
410103: "二七区",
410104: "管城回族区",
410105: "金水区",
410106: "上街区",
410108: "惠济区",
410122: "中牟县",
410181: "巩义市",
410182: "荥阳市",
410183: "新密市",
410184: "新郑市",
410185: "登封市",
410200: "开封市",
410202: "龙亭区",
410203: "顺河回族区",
410204: "鼓楼区",
410205: "禹王台区",
410212: "祥符区",
410221: "杞县",
410222: "通许县",
410223: "尉氏县",
410225: "兰考县",
410300: "洛阳市",
410302: "老城区",
410303: "西工区",
410304: "瀍河回族区",
410305: "涧西区",
410307: "偃师区",
410308: "孟津区",
410311: "洛龙区",
410323: "新安县",
410324: "栾川县",
410325: "嵩县",
410326: "汝阳县",
410327: "宜阳县",
410328: "洛宁县",
410329: "伊川县",
410400: "平顶山市",
410402: "新华区",
410403: "卫东区",
410404: "石龙区",
410411: "湛河区",
410421: "宝丰县",
410422: "叶县",
410423: "鲁山县",
410425: "郏县",
410481: "舞钢市",
410482: "汝州市",
410500: "安阳市",
410502: "文峰区",
410503: "北关区",
410505: "殷都区",
410506: "龙安区",
410522: "安阳县",
410523: "汤阴县",
410526: "滑县",
410527: "内黄县",
410581: "林州市",
410600: "鹤壁市",
410602: "鹤山区",
410603: "山城区",
410611: "淇滨区",
410621: "浚县",
410622: "淇县",
410700: "新乡市",
410702: "红旗区",
410703: "卫滨区",
410704: "凤泉区",
410711: "牧野区",
410721: "新乡县",
410724: "获嘉县",
410725: "原阳县",
410726: "延津县",
410727: "封丘县",
410781: "卫辉市",
410782: "辉县市",
410783: "长垣市",
410800: "焦作市",
410802: "解放区",
410803: "中站区",
410804: "马村区",
410811: "山阳区",
410821: "修武县",
410822: "博爱县",
410823: "武陟县",
410825: "温县",
410882: "沁阳市",
410883: "孟州市",
410900: "濮阳市",
410902: "华龙区",
410922: "清丰县",
410923: "南乐县",
410926: "范县",
410927: "台前县",
410928: "濮阳县",
411e3: "许昌市",
411002: "魏都区",
411003: "建安区",
411024: "鄢陵县",
411025: "襄城县",
411081: "禹州市",
411082: "长葛市",
411100: "漯河市",
411102: "源汇区",
411103: "郾城区",
411104: "召陵区",
411121: "舞阳县",
41