diff --git a/plugins/ztools-weather/.gitignore b/plugins/ztools-weather/.gitignore new file mode 100644 index 000000000..7c72c0b6c --- /dev/null +++ b/plugins/ztools-weather/.gitignore @@ -0,0 +1,7 @@ +# 测试生成物(由 tools/build-harness.py 重新生成) +tests/ui-harness.html +# 打包产物 +*.zpx +# 系统垃圾 +.DS_Store +Thumbs.db diff --git a/plugins/ztools-weather/CHANGELOG.md b/plugins/ztools-weather/CHANGELOG.md new file mode 100644 index 000000000..a074e9e05 --- /dev/null +++ b/plugins/ztools-weather/CHANGELOG.md @@ -0,0 +1,13 @@ +## 1.0.0 - 2026-09-27 +- 多城市管理:城市条一键切换,每个城市带 `×` 直接删除 +- 模糊搜索:支持中文、全拼(`chengdu`)、首字母(`cd`)、省份检索, + 输入即出候选下拉框,方向键选择、回车添加 +- 内置全国 338 城拼音索引(`cities-pinyin.json`),搜索过程离线可用 +- 实时天气:温度、体感、天气状况、湿度、风速、紫外线 +- 24 小时逐时预报:温度曲线 + 逐时明细 +- 7 天趋势:天气图标、最高/最低温、降水概率 +- 空气质量:AQI 数值与等级、六项污染物浓度 +- 深浅色主题自适应,跟随 ZTools 主题切换 +- 一键复制当前天气为文本 +- 设置面板:温度单位、风速单位、自动刷新间隔 + \ No newline at end of file diff --git a/plugins/ztools-weather/README.md b/plugins/ztools-weather/README.md new file mode 100644 index 000000000..7ab2307f5 --- /dev/null +++ b/plugins/ztools-weather/README.md @@ -0,0 +1,73 @@ +# 天气助手 + +多城市实时天气、24 小时逐时预报、7 天趋势与空气质量,**无需注册、无需 API Key**。 + +数据来自 [Open-Meteo](https://open-meteo.com/) 开放接口,城市检索走内置的全国 338 城拼音索引,搜索过程完全离线。 + +--- + +## 功能 + +- **多城市管理** — 顶部城市条一键切换,每个城市带 `×` 直接删除 +- **模糊搜索** — 支持中文、全拼(`chengdu`)、首字母(`cd`)、省份,输入即出候选,方向键选择 +- **实时天气** — 温度、体感、天气状况、湿度、风速、紫外线 +- **24 小时逐时** — 温度曲线图 + 逐时明细 +- **7 天趋势** — 每天的天气图标、最高/最低温、降水概率 +- **空气质量** — AQI 数值、等级、六项污染物浓度 +- **深浅色自适应** — 跟随 ZTools 主题切换 +- **一键复制** — 把当前天气复制成文本 + +## 使用 + +在 ZTools 主搜索框输入以下任一关键词: + +| 关键词 | 说明 | +| --- | --- | +| `天气` / `weather` | 打开天气面板 | +| `天气助手` / `天气预报` | 同上 | +| `气温` / `下雨` | 同上 | +| 任意城市名 | 直接搜索并切换到该城市 | + +面板内搜索框支持: + +- 中文:`成都` +- 全拼:`chengdu` +- 首字母:`cd` +- 省份:`四川` + +## 设置 + +点击右上角 ⚙ 可调整温度单位(°C / °F)、风速单位(km/h / m/s / mph)、自动刷新间隔(关闭 / 5 / 10 / 30 / 60 分钟)。 + +数据缓存 5 分钟,手动点「⟳ 刷新」可强制重新拉取。 + +## 隐私 + +- 城市列表与天气缓存**只保存在本机**,不上传任何信息 +- 不收集、不统计、不需要账号 +- 唯一的网络请求是向 `api.open-meteo.com` 与 `air-quality-api.open-meteo.com` 查询天气数据(如果你在设置里手动指定过本地代理,则经该代理转发) + +## 环境要求 + +ZTools 桌面端(Windows / macOS / Linux),无需 Node.js、无需 Python。 + +## 常见问题 + +**搜不到某个城市?** +内置索引收录全国 338 个地级及以上城市,输入中文名或拼音即可。极小众的县级市可尝试用 Open-Meteo 的远端检索补充,或先用地图软件确认准确名称。 + +**网络请求失败?** +插件默认直连,若你的网络需要代理,可在 `~/.ztools` 下确认 Open-Meteo 可访问。直连失败时会自动尝试本机常见代理端口。 + +**数据多久更新一次?** +天气数据 5 分钟缓存;空气质量数据 1 小时更新一次(Open-Meteo 的更新频率限制)。 + +## 致谢 + +- 天气与空气质量数据:[Open-Meteo](https://open-meteo.com/)(CC BY 4.0,免费开放 API) +- 城市经纬度数据:[88250/city-geo](https://github.com/88250/city-geo) +- 拼音转换:[pypinyin](https://github.com/mozillazg/python-pinyin) + +## 许可 + +MIT diff --git a/plugins/ztools-weather/app.js b/plugins/ztools-weather/app.js new file mode 100644 index 000000000..eb02e157e --- /dev/null +++ b/plugins/ztools-weather/app.js @@ -0,0 +1,794 @@ +/* 天气助手 · 页面逻辑(无 Node,只能调 window.services) */ +(function () { + 'use strict'; + + var S = window.services; + var Z = window.ztools || window.utools || {}; + var $ = function (id) { return document.getElementById(id); }; + + var state = { + cities: [], + current: null, + data: null, + settings: null, + timer: null, + searching: false, + results: [], + resultIdx: -1, + loading: false, + lastError: '' + }; + + // ---------- 单位换算 ---------- + function temp(c, unit) { + if (c == null || !isFinite(c)) return null; + return unit === 'F' ? c * 9 / 5 + 32 : c; + } + function wind(kmh, unit) { + if (kmh == null || !isFinite(kmh)) return null; + if (unit === 'ms') return kmh / 3.6; + if (unit === 'mph') return kmh * 0.621371; + return kmh; + } + function windUnitLabel(u) { return u === 'ms' ? 'm/s' : (u === 'mph' ? 'mph' : 'km/h'); } + function round1(v) { return v == null || !isFinite(v) ? null : Math.round(v * 10) / 10; } + /** 温度显示:null/NaN 一律 '--',绝不让 NaN 出现在界面上 */ + function deg(v, digits) { + if (v == null || !isFinite(v)) return '--'; + return digits ? v.toFixed(1) : String(Math.round(v)); + } + + /** 16 方位中文 */ + var DIRS = ['北', '东北', '东', '东南', '南', '西南', '西', '西北']; + function dirText(deg) { + if (deg == null || !isFinite(deg)) return ''; + return DIRS[Math.round(((deg % 360) + 360) % 360 / 45) % 8] + '风'; + } + function uvText(v) { + if (v == null || !isFinite(v)) return '--'; + if (v < 3) return v.toFixed(1) + ' 低'; + if (v < 6) return v.toFixed(1) + ' 中等'; + if (v < 8) return v.toFixed(1) + ' 偏高'; + if (v < 11) return v.toFixed(1) + ' 高'; + return v.toFixed(1) + ' 很高'; + } + function clock(iso) { + // ⚠ 别对 '2026-09-27T18:54' 直接 slice 当显示用:字段缺失时会得到 'undefined'。 + // 一律走正则校验,解析不出就返回 '--'。 + var m = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/.exec(String(iso || '')); + return m ? (m[4] + ':' + m[5]) : '--'; + } + function hm(ts) { + if (!ts) return ''; + var d = new Date(ts); + if (isNaN(d.getTime())) return ''; + return ('0' + d.getHours()).slice(-2) + ':' + ('0' + d.getMinutes()).slice(-2); + } + function dayLabel(dateStr, i) { + if (i === 0) return '今天'; + if (i === 1) return '明天'; + if (i === 2) return '后天'; + var d = new Date(String(dateStr) + 'T00:00:00'); + if (isNaN(d.getTime())) return '--'; + return (d.getMonth() + 1) + '/' + d.getDate() + ' ' + '日一二三四五六'[d.getDay()]; + } + /** 7 天表格里的短日期:MM/DD,非法日期返回 '--'(别让 09/32 这种东西出现在界面上) */ + function shortDate(dateStr) { + var m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(dateStr || '')); + if (!m) return '--'; + var y = +m[1], mo = +m[2], d = +m[3]; + // ⚠ 光校验格式不够:'2026-09-33' 完全符合 \d{4}-\d{2}-\d{2},正则照样放行, + // 于是界面上出现 09/32 这种根本不存在的日期。必须回构造一个真实 Date 再比对。 + var dt = new Date(Date.UTC(y, mo - 1, d)); + if (dt.getUTCFullYear() !== y || dt.getUTCMonth() !== mo - 1 || dt.getUTCDate() !== d) return '--'; + if (mo < 1 || mo > 12 || d < 1 || d > 31) return '--'; + return m[2] + '/' + m[3]; + } + + // ---------- 主题 ---------- + function applyTheme(force) { + var pref = state.settings ? state.settings.theme : 'auto'; + if (pref === 'light' || pref === 'dark') { + document.body.classList.toggle('dark', pref === 'dark'); + document.body.classList.toggle('light', pref === 'light'); + return; + } + var dark = null; + try { if (typeof S.theme === 'function') dark = !!S.theme().isDark; } catch (e) { dark = null; } + if (dark == null) { + try { dark = !!Z.isDarkColors; } catch (e) { dark = false; } + if (typeof Z.isDarkColors === 'function') { try { dark = !!Z.isDarkColors(); } catch (e) { /* keep */ } } + } + if (dark == null) dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; + document.body.classList.toggle('dark', !!dark); + document.body.classList.toggle('light', !dark); + if (force && typeof S.onThemeChange === 'function') S.onThemeChange(function () { applyTheme(false); }); + } + + // ---------- 提示 ---------- + var toastTimer = null; + function toast(msg) { + var el = $('toast'); + el.textContent = msg; + el.hidden = false; + clearTimeout(toastTimer); + toastTimer = setTimeout(function () { el.hidden = true; }, 2400); + } + + // ---------- 高度 ---------- + function syncHeight() { + var h = Math.min(document.body.scrollHeight, 900); + try { if (typeof Z.setExpendHeight === 'function') Z.setExpendHeight(h); } catch (e) { /* ignore */ } + } + + // ---------- 渲染 ---------- + function renderCities() { + var box = $('cities'); + box.textContent = ''; + state.cities.forEach(function (c) { + // 每个城市一个 chip,chip 内含「×」用于直接删除该城市 + // (原来只有「移除」按钮删当前城市,列表里加到 3 个以上就没法删非当前的那个) + var wrap = document.createElement('span'); + wrap.className = 'chip' + (c.id === state.current ? ' on' : ''); + wrap.setAttribute('data-id', c.id); + wrap.title = c.label; + + var name = document.createElement('button'); + name.className = 'chip-name'; + name.textContent = c.name; + name.setAttribute('data-act', 'pick'); + wrap.appendChild(name); + + var x = document.createElement('button'); + x.className = 'chip-x'; + x.textContent = '×'; + x.title = '删除 ' + c.name; + x.setAttribute('data-act', 'del'); + x.setAttribute('data-id', c.id); + wrap.appendChild(x); + + box.appendChild(wrap); + }); + } + + function removeCityById(id) { + var c = state.cities.filter(function (x) { return x.id === id; })[0]; + if (!c) return Promise.resolve(); + // 记下「删之前」的当前城市。判断该不该清数据必须用这个快照: + // 下面 state.current 会被 S.removeCity 的返回值覆盖,删完之后再比较就没有意义了。 + // 之前写成 if (state.current !== id) 是反的——删非当前城市时 state.current 仍指向 + // 原来那个(!= id),于是把还有效的 state.data 清成 null,视图直接空白。 + var wasCurrent = (state.current === id); + return Promise.resolve(S.removeCity(id)).then(function (r) { + state.cities = r.cities; + state.current = r.current; + if (wasCurrent) state.data = null; // 删的是当前城市 → 数据作废,必须重载 + renderCities(); + if (state.current) return loadCurrent(true); + render(); + }).then(function () { toast('已删除 ' + (c ? c.name : '')); }); + } + + function renderNow(d) { + var st = state.settings; + var c = d.city || {}; + var w = S.wmo(d.current.code, d.current.isDay); + var t = round1(temp(d.current.temp, st.tempUnit)); + $('cur-temp').textContent = deg(t); + $('cur-unit').textContent = '°' + st.tempUnit; + $('cur-text').textContent = w.text; + $('cur-icon').textContent = w.icon; + $('cur-city').textContent = c.label || ''; + $('cur-updated').textContent = d.stale ? ('缓存 · ' + hm(d.fetchedAt)) : ('更新于 ' + hm(d.fetchedAt)); + + var meta = $('cur-meta'); + meta.textContent = ''; + function add(txt) { var s = document.createElement('span'); s.className = 'badge'; s.textContent = txt; meta.appendChild(s); } + var feels = round1(temp(d.current.feels, st.tempUnit)); + if (feels != null) add('体感 ' + deg(feels) + '°'); + if (d.current.hum != null) add('湿度 ' + d.current.hum + '%'); + var wv = round1(wind(d.current.wind, st.windUnit)); + if (wv != null) add(dirText(d.current.windDir) + ' ' + wv + ' ' + windUnitLabel(st.windUnit)); + if (d.current.cloud != null) add('云量 ' + d.current.cloud + '%'); + if (d.current.pressure != null) add(Math.round(d.current.pressure) + ' hPa'); + } + + function renderAqi(d) { + var badge = $('aqi-badge'); + var main = $('aqi-main'); + var parts = $('aqi-parts'); + parts.textContent = ''; + var a = d.air && d.air.aqi; + if (!a) { + badge.textContent = '--'; badge.className = 'badge'; + main.innerHTML = '暂无数据'; + return; + } + badge.textContent = a.level; + badge.className = 'badge ' + a.color; + main.innerHTML = ''; + main.appendChild(document.createTextNode(String(a.value))); + var sm = document.createElement('small'); + sm.textContent = ' ' + a.level + ' · 主要污染物 ' + a.primary; + main.appendChild(sm); + a.parts.forEach(function (p) { + var s = document.createElement('span'); + s.textContent = p.name + ' ' + p.conc + ' ' + (p.unit || ''); + parts.appendChild(s); + }); + } + + function renderToday(d) { + var box = $('today-grid'); + box.textContent = ''; + var st = state.settings; + var t = d.today; + function row(k, v) { + var kk = document.createElement('div'); kk.className = 'k'; kk.textContent = k; + var vv = document.createElement('div'); vv.className = 'v'; vv.textContent = v; + box.appendChild(kk); box.appendChild(vv); + } + if (!t) { row('—', '暂无数据'); return; } + var hi = round1(temp(t.max, st.tempUnit)), lo = round1(temp(t.min, st.tempUnit)); + row('最高 / 最低', deg(hi) + '° / ' + deg(lo) + '°'); + row('降水', (t.rain != null ? t.rain + ' mm' : '--') + (t.pop != null ? '(概率 ' + t.pop + '%)' : '')); + var wv = round1(wind(t.wind, st.windUnit)); + row('最大风速', wv == null ? '--' : dirText(t.windDir) + ' ' + wv + ' ' + windUnitLabel(st.windUnit)); + row('紫外线', uvText(t.uv)); + row('日出 / 日落', clock(t.sunrise) + ' / ' + clock(t.sunset)); + } + + function renderHours(d) { + var box = $('hours'); + box.textContent = ''; + var st = state.settings; + d.hours.forEach(function (h) { + var w = S.wmo(h.code, h.isDay); + var div = document.createElement('div'); + div.className = 'hour'; + var b = document.createElement('b'); + b.textContent = (h.hour === 0 ? '00' : String(h.hour)) + ':00'; + var sp = document.createElement('span'); sp.textContent = w.icon; + var em = document.createElement('em'); + var tv = round1(temp(h.temp, st.tempUnit)); + em.textContent = deg(tv) + '°'; + div.appendChild(b); div.appendChild(sp); div.appendChild(em); + if (h.pop != null && h.pop > 0) { + var p = document.createElement('em'); + p.textContent = h.pop + '%'; + div.appendChild(p); + } + box.appendChild(div); + }); + drawHourChart(d); + } + + function drawHourChart(d) { + var svg = $('hour-chart'); + while (svg.firstChild) svg.removeChild(svg.firstChild); + var hs = d.hours; + if (!hs.length) return; + var st = state.settings; + var W = 960, H = 150, padL = 26, padR = 12, padT = 14, padB = 20; + var NS = 'http://www.w3.org/2000/svg'; + function el(n, a) { var e = document.createElementNS(NS, n); for (var k in a) e.setAttribute(k, a[k]); return e; } + + var temps = [], pops = []; + hs.forEach(function (h) { + var tv = temp(h.temp, st.tempUnit); + if (tv != null && isFinite(tv)) temps.push(tv); + if (h.pop != null && isFinite(h.pop)) pops.push(h.pop); + }); + if (!temps.length) return; + var tmin = Math.min.apply(null, temps), tmax = Math.max.apply(null, temps); + if (tmax - tmin < 1) { tmax += 0.5; tmin -= 0.5; } + var pmax = Math.max.apply(null, pops.concat([10])); + var innerW = W - padL - padR, innerH = H - padT - padB; + function X(i) { return padL + (hs.length <= 1 ? innerW / 2 : (innerW * i / (hs.length - 1))); } + function Yt(v) { return padT + innerH - ((v - tmin) / (tmax - tmin)) * innerH; } + function Yp(v) { return padT + innerH - (Math.max(0, v) / pmax) * (innerH * 0.5); } + + // 降水概率柱(只画非 0,避免大片空柱) + hs.forEach(function (h, i) { + if (h.pop == null || !isFinite(h.pop) || h.pop <= 0) return; + var y = Yp(h.pop); + var w = Math.max(3, innerW / hs.length * 0.5); + svg.appendChild(el('rect', { x: X(i) - w / 2, y: y, width: w, height: Math.max(1, padT + innerH - y), class: 'bar' })); + }); + + // 网格 + 温度刻度 + [tmin, (tmin + tmax) / 2, tmax].forEach(function (v) { + var y = Yt(v); + svg.appendChild(el('line', { x1: padL, y1: y, x2: W - padR, y2: y, class: 'grid' })); + var tx = el('text', { x: 2, y: y + 3 }); + tx.textContent = Math.round(v) + '°'; + svg.appendChild(tx); + }); + + // 温度折线 + var pts = []; + hs.forEach(function (h, i) { + var tv = temp(h.temp, st.tempUnit); + if (tv != null && isFinite(tv)) pts.push(X(i) + ',' + Yt(tv)); + }); + if (pts.length > 1) svg.appendChild(el('polyline', { points: pts.join(' '), class: 'ln' })); + hs.forEach(function (h, i) { + var tv = temp(h.temp, st.tempUnit); + if (tv == null || !isFinite(tv)) return; + svg.appendChild(el('circle', { cx: X(i), cy: Yt(tv), r: 2.6, class: 'dot' })); + }); + + // 时间刻度:每 3 小时一个 + hs.forEach(function (h, i) { + if (i % 3 !== 0) return; + var tx = el('text', { x: X(i), y: H - 5, 'text-anchor': 'middle' }); + tx.textContent = (h.hour === 0 ? '00' : String(h.hour)) + '时'; + svg.appendChild(tx); + }); + } + + function renderDays(d) { + var box = $('days'); + box.textContent = ''; + var st = state.settings; + d.days.forEach(function (day, i) { + var w = S.wmo(day.code, true); + var hi = round1(temp(day.max, st.tempUnit)), lo = round1(temp(day.min, st.tempUnit)); + var div = document.createElement('div'); + div.className = 'day' + (i === 0 ? ' today' : ''); + var c1 = document.createElement('div'); c1.className = 'd1'; c1.textContent = dayLabel(day.date, i); + var c2 = document.createElement('div'); c2.className = 'd2'; c2.textContent = w.icon; c2.title = w.text; + var c3 = document.createElement('div'); c3.className = 'd3'; + c3.textContent = deg(hi) + '° / ' + deg(lo) + '°'; + var c4 = document.createElement('div'); c4.className = 'd4'; + c4.textContent = (day.pop != null ? day.pop + '% 降水' : '') + (day.rain ? ' ' + day.rain + 'mm' : ''); + div.appendChild(c1); div.appendChild(c2); div.appendChild(c3); div.appendChild(c4); + box.appendChild(div); + }); + drawDayChart(d); + } + + function drawDayChart(d) { + var svg = $('day-chart'); + while (svg.firstChild) svg.removeChild(svg.firstChild); + var days = d.days; + if (!days || days.length < 2) return; + var st = state.settings; + var W = 960, H = 120, padL = 26, padR = 12, padT = 12, padB = 18; + var NS = 'http://www.w3.org/2000/svg'; + function el(n, a) { var e = document.createElementNS(NS, n); for (var k in a) e.setAttribute(k, a[k]); return e; } + var vals = []; + days.forEach(function (x) { + var hi = temp(x.max, st.tempUnit), lo = temp(x.min, st.tempUnit); + if (hi != null && isFinite(hi)) vals.push(hi); + if (lo != null && isFinite(lo)) vals.push(lo); + }); + if (!vals.length) return; + var mn = Math.min.apply(null, vals), mx = Math.max.apply(null, vals); + if (mx - mn < 1) { mx += 0.5; mn -= 0.5; } + var innerW = W - padL - padR, innerH = H - padT - padB; + function X(i) { return padL + (innerW * i / (days.length - 1)); } + function Y(v) { return padT + innerH - ((v - mn) / (mx - mn)) * innerH; } + + var hiPts = [], loPts = []; + days.forEach(function (x, i) { + var hi = temp(x.max, st.tempUnit), lo = temp(x.min, st.tempUnit); + if (hi != null && isFinite(hi)) hiPts.push(X(i) + ',' + Y(hi)); + if (lo != null && isFinite(lo)) loPts.push(X(i) + ',' + Y(lo)); + }); + if (hiPts.length > 1) svg.appendChild(el('polyline', { points: hiPts.join(' '), class: 'ln' })); + if (loPts.length > 1) svg.appendChild(el('polyline', { points: loPts.join(' '), class: 'ln-min' })); + [mn, mx].forEach(function (v) { + var y = Y(v); + svg.appendChild(el('line', { x1: padL, y1: y, x2: W - padR, y2: y, class: 'grid' })); + var t = el('text', { x: 2, y: y + 3 }); + t.textContent = Math.round(v) + '°'; + svg.appendChild(t); + }); + days.forEach(function (x, i) { + var t = el('text', { x: X(i), y: H - 4, 'text-anchor': 'middle' }); + t.textContent = i === 0 ? '今天' : (i === 1 ? '明天' : shortDate(x.date)); + svg.appendChild(t); + }); + } + + function render() { + var d = state.data; + var has = !!(d && d.current); + $('view').hidden = !has; + $('empty').hidden = has || state.cities.length > 0; + if (!has) { syncHeight(); return; } + renderNow(d); + renderAqi(d); + renderToday(d); + renderHours(d); + renderDays(d); + syncHeight(); + } + + // ---------- 搜索:本地拼音索引(瞬时)+ 远端补充 ---------- + var searchSeq = 0; + + function renderResults() { + var box = $('results'); + var q = $('q').value.trim(); + box.textContent = ''; + if (!q) { box.hidden = true; $('hint').hidden = false; return; } + $('hint').hidden = true; + if (!state.results.length) { + var none = document.createElement('div'); + none.className = 'none'; + none.textContent = state.searching ? '搜索中…' : ('没有找到「' + q + '」,试试拼音或首字母'); + box.appendChild(none); + box.hidden = false; + return; + } + box.hidden = false; + state.results.forEach(function (r, i) { + var div = document.createElement('div'); + div.className = 'r' + (i === state.resultIdx ? ' on' : ''); + div.setAttribute('data-i', String(i)); + + var nm = document.createElement('div'); + nm.className = 'r-name'; + nm.textContent = r.name; + if (state.keyword) highlight(nm, r.name, state.keyword); + + var sub = document.createElement('div'); + sub.className = 'r-sub'; + sub.textContent = r.detail || r.admin || ''; + + var py = document.createElement('div'); + py.className = 'r-py'; + if (r.initial) { + py.appendChild(document.createTextNode('首字母 ')); + var b = document.createElement('b'); + b.textContent = r.initial; + py.appendChild(b); + } + + div.appendChild(nm); + div.appendChild(sub); + if (r.initial) div.appendChild(py); + box.appendChild(div); + }); + } + + /** 把命中的字/字母高亮出来 */ + function highlight(el, text, q) { + el.textContent = ''; + var lower = text.toLowerCase(); + var i = lower.indexOf(q.toLowerCase()); + if (i < 0) { el.textContent = text; return; } + el.appendChild(document.createTextNode(text.slice(0, i))); + var mk = document.createElement('mark'); + mk.textContent = text.slice(i, i + q.length); + el.appendChild(mk); + el.appendChild(document.createTextNode(text.slice(i + q.length))); + } + + /** 输入即搜:先本地拼音(同步、零延迟),再用远端补外国城市 */ + function doSearch(keyword) { + var q = String(keyword == null ? $('q').value : keyword).trim(); + $('q-clear').hidden = !$('q').value; + state.keyword = q; + if (!q) { + state.results = []; state.resultIdx = -1; + renderResults(); + return Promise.resolve(); + } + var seq = ++searchSeq; + var local = []; + try { local = S.searchCitiesLocal(q, { limit: 12 }) || []; } catch (e) { local = []; } + state.results = local; + state.resultIdx = local.length ? 0 : -1; + state.searching = true; + renderResults(); + return Promise.resolve(S.searchCities(q)) + .then(function (list) { + if (seq !== searchSeq) return; // 已有更新的输入,丢弃这次结果 + state.searching = false; + // ⚠ 远端结果只能「补充」,不能「覆盖」本地结果。 + // 覆盖的后果:输入 cd 时本地瞬间给出 成都/常德/承德(带拼音、排序按知名度), + // 网络回来后被 Open-Meteo 自己的结果整份换掉——它不认拼音, + // 「cd市」这种垃圾条目会取代全部本地候选,表现就是「模糊查找不生效」。 + if (list && list.length) { + var seen = {}; + state.results.forEach(function (r) { seen[(r.name || '') + '|' + (r.admin || '')] = 1; }); + var extra = list.filter(function (r) { return !seen[(r.name || '') + '|' + (r.admin || '')]; }); + if (extra.length) { + state.results = state.results.concat(extra).slice(0, 12); + if (state.resultIdx < 0) state.resultIdx = 0; + } + } + renderResults(); + }) + .catch(function () { + if (seq !== searchSeq) return; + state.searching = false; + renderResults(); // 本地结果已经显示,不打扰用户 + }); + } + + function closeResults() { + state.results = []; + state.resultIdx = -1; + searchSeq++; // 让在途的远端请求作废 + $('results').hidden = true; + $('results').textContent = ''; + $('hint').hidden = false; + } + + function moveSelection(delta) { + if (!state.results.length) return; + var n = state.results.length; + state.resultIdx = ((state.resultIdx + delta) % n + n) % n; + renderResults(); + var on = $('results').children[state.resultIdx]; + if (on && on.scrollIntoView) on.scrollIntoView({ block: 'nearest' }); + } + function showError(msg) { + state.lastError = msg; + $('cur-city').textContent = msg; + $('cur-city').className = 'now-city err'; + $('view').hidden = true; + $('empty').hidden = state.cities.length > 0; + toast(msg); + } + + function loadCurrent(force) { + if (!state.current) { state.data = null; render(); return Promise.resolve(); } + // ⚠ re-entrancy 闸门原来写成 `if (state.loading) return Promise.resolve();`—— + // 直接丢弃会留下「永远 loading」的坏状态:删城市后紧接着要重载新当前城市, + // 若此时上一轮 loadCity 还没 settle,这次重载就被吞掉,state.data 一直是 null, + // 视图空白。正确做法是记下「有更新请求」,等当前这轮结束后补跑一次。 + if (state.loading) { state.pendingReload = force; return Promise.resolve(); } + var city = state.cities.filter(function (c) { return c.id === state.current; })[0]; + if (!city) { state.data = null; render(); return Promise.resolve(); } + state.loading = true; + $('cur-city').className = 'now-city loading'; + return Promise.resolve(S.loadCity(city, { force: !!force })) + .then(function (d) { + state.data = d; + state.lastError = ''; + render(); + }) + .catch(function (e) { + showError(String((e && e.message) || e)); + }) + .finally(function () { + state.loading = false; + if (state.pendingReload !== undefined) { + var f = state.pendingReload; + state.pendingReload = undefined; + loadCurrent(f); + } + }); + } + + function loadAll(force) { + var list = state.cities; + return Promise.all(list.map(function (c) { + return Promise.resolve(S.loadCity(c, { force: !!force })).catch(function () { return null; }); + })); + } + + function scheduleRefresh() { + clearInterval(state.timer); + var min = state.settings ? Number(state.settings.refreshMinutes) : 5; + if (!min || min <= 0) return; + state.timer = setInterval(function () { + // 窗口不可见时跳过,页面还开着就继续 + if (document.hidden) return; + loadCurrent(false); + }, min * 60 * 1000); + } + + function refreshCityList() { + return Promise.resolve(S.listCities()).then(function (r) { + state.cities = r.cities || []; + state.current = r.current || null; + renderCities(); + }); + } + + // ---------- 交互 ---------- + function pickCity(r) { + if (!r) return Promise.resolve(); + return Promise.resolve(S.addCity({ name: r.name, admin: r.admin, country: r.country, lat: r.lat, lon: r.lon, tz: r.tz })) + .then(function (res) { + closeResults(); + $('q').value = ''; + $('q-clear').hidden = true; + state.cities = res.cities; state.current = res.current; + renderCities(); + return loadCurrent(true); + }) + .then(function () { toast('已添加 ' + r.name); }); + } + + function bind() { + // 输入即搜(带 120ms 防抖),本地拼音索引是同步的所以候选立刻出现 + var debounce = null; + $('q').addEventListener('input', function () { + clearTimeout(debounce); + debounce = setTimeout(function () { doSearch(); }, 120); + }); + $('q').addEventListener('focus', function () { + if ($('q').value.trim()) doSearch(); + }); + $('q-clear').addEventListener('click', function () { + $('q').value = ''; + $('q-clear').hidden = true; + closeResults(); + $('q').focus(); + }); + + $('q').addEventListener('keydown', function (e) { + if (e.key === 'ArrowDown') { e.preventDefault(); moveSelection(1); } + else if (e.key === 'ArrowUp') { e.preventDefault(); moveSelection(-1); } + else if (e.key === 'Enter') { + e.preventDefault(); + clearTimeout(debounce); + if (state.resultIdx >= 0 && state.results[state.resultIdx]) pickCity(state.results[state.resultIdx]); + else doSearch(); + } else if (e.key === 'Escape') { + if (!$('results').hidden) { closeResults(); } + else { $('q').value = ''; $('q-clear').hidden = true; } + } + }); + + $('results').addEventListener('click', function (e) { + var row = e.target.closest && e.target.closest('div.r'); + if (!row) return; + pickCity(state.results[Number(row.getAttribute('data-i'))]); + }); + // 鼠标悬停同步键盘高亮,避免点错 + $('results').addEventListener('mousemove', function (e) { + var row = e.target.closest && e.target.closest('div.r'); + if (!row) return; + var i = Number(row.getAttribute('data-i')); + if (i === state.resultIdx) return; + state.resultIdx = i; + Array.prototype.forEach.call($('results').children, function (c, j) { + c.classList.toggle('on', j === i); + }); + }); + + // 点空白收起下拉 + document.addEventListener('mousedown', function (e) { + if (!$('results').hidden && !e.target.closest('.searchwrap')) closeResults(); + }); + + $('cities').addEventListener('click', function (e) { + var del = e.target.closest && e.target.closest('.chip-x'); + if (del) { + e.stopPropagation(); + removeCityById(del.getAttribute('data-id')); + return; + } + var name = e.target.closest && e.target.closest('.chip-name'); + if (!name) return; + var wrap = name.closest('.chip'); + if (!wrap) return; + var id = wrap.getAttribute('data-id'); + if (id === state.current) return; + Promise.resolve(S.setCurrent(id)).then(function (r) { + state.current = r.current; + renderCities(); + loadCurrent(false); + }); + }); + + $('refresh').addEventListener('click', function () { + toast('正在刷新…'); + loadCurrent(true); + }); + + $('copy').addEventListener('click', function () { + if (!state.data) return; + var txt = S.buildShareText(state.data); + if (!txt) return; + Promise.resolve(S.copy(txt)).then(function () { toast('已复制到剪贴板'); }); + }); + + // ---- 设置对话框(分段按钮,不是 select) ---- + function segValue(id) { return $(id).getAttribute('data-v'); } + function segSet(id, v) { + var seg = $(id); + seg.setAttribute('data-v', v); + Array.prototype.forEach.call(seg.querySelectorAll('button'), function (b) { + b.classList.toggle('on', b.getAttribute('data-v') === v); + }); + } + Array.prototype.forEach.call(document.querySelectorAll('.seg'), function (seg) { + seg.addEventListener('click', function (e) { + var b = e.target.closest && e.target.closest('button[data-v]'); + if (!b) return; + segSet(seg.id, b.getAttribute('data-v')); + }); + }); + + function openSettings() { + var s = state.settings; + segSet('s-temp', s.tempUnit); + segSet('s-wind', s.windUnit); + segSet('s-refresh', String(s.refreshMinutes)); + $('settings-mask').hidden = false; + $('settings-panel').hidden = false; + } + function closeSettings(save) { + if (save) { + // proxy 不在设置面板里暴露了(那是本机网络细节,插件内部用 'auto' 就够: + // 直连失败自动探测本地代理)。别把已存的旧值清掉,沿用用户上一次的选择。 + var patch = { + tempUnit: segValue('s-temp'), + windUnit: segValue('s-wind'), + refreshMinutes: Number(segValue('s-refresh')) + }; + if (state.settings.proxy != null) patch.proxy = state.settings.proxy; + state.settings = S.patchSettings(patch); + applyTheme(false); + scheduleRefresh(); + render(); + } + $('settings-mask').hidden = true; + $('settings-panel').hidden = true; + } + $('settings').addEventListener('click', openSettings); + $('s-x').addEventListener('click', function () { closeSettings(false); }); + $('s-cancel').addEventListener('click', function () { closeSettings(false); }); + $('settings-mask').addEventListener('click', function () { closeSettings(false); }); + $('s-close').addEventListener('click', function () { closeSettings(true); }); + + // 宿主生命周期 + if (typeof Z.onPluginEnter === 'function') { + Z.onPluginEnter(function (param) { + applyTheme(false); + refreshCityList().then(function () { return loadCurrent(false); }); + var p = param && param.payload; + if (typeof p === 'string' && p.trim()) { + // 主搜索框直出:payload 是用户输入的城市关键词 + $('q').value = p.trim(); + doSearch(p.trim()); + } + }); + } + if (typeof Z.onPluginOut === 'function') { + Z.onPluginOut(function () { clearInterval(state.timer); state.timer = null; }); + } + document.addEventListener('visibilitychange', function () { + if (!document.hidden && state.current && state.settings && state.settings.refreshMinutes > 0) { + // 回前台补一轮:闸门决定是真拉还是用缓存 + loadCurrent(false); + } + }); + } + + // ---------- 启动 ---------- + function boot() { + state.settings = S.getSettings(); + applyTheme(true); + bind(); + // 首次使用:给个猜测城市(IP 粗定位只作为建议,用户可随时改) + return refreshCityList() + .then(function () { + if (state.cities.length) return loadCurrent(false); + return Promise.resolve(S.guessCity()).then(function (g) { + if (g) return Promise.resolve(S.addCity(g, { select: true })).then(function (r) { + state.cities = r.cities; state.current = r.current; + renderCities(); + return loadCurrent(true); + }); + render(); + }); + }) + .then(function () { scheduleRefresh(); syncHeight(); }); + } + + // 供 UI 测试用 + window.__boot = boot; + window.__state = state; + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot); + else boot(); +})(); diff --git a/plugins/ztools-weather/cities-pinyin.json b/plugins/ztools-weather/cities-pinyin.json new file mode 100644 index 000000000..98fe4714c --- /dev/null +++ b/plugins/ztools-weather/cities-pinyin.json @@ -0,0 +1 @@ +[{"n":"七台河","p":"qitaihe","i":"qth","l":"黑龙江","a":45.7763,"o":131.0115,"r":49.3},{"n":"三亚","p":"sanya","i":"sy","l":"海南","a":18.2587,"o":109.5186,"r":49.5},{"n":"三明","p":"sanming","i":"sm","l":"福建","a":26.2697,"o":117.6455,"r":49.3},{"n":"三沙","p":"sansha","i":"ss","l":"海南","a":30.3166,"o":112.2616,"r":49.4},{"n":"三门峡","p":"sanmenxia","i":"smx","l":"河南","a":34.7783,"o":111.2065,"r":49.1},{"n":"上海","p":"shanghai","i":"sh","l":"上海","a":31.2359,"o":121.4805,"r":100},{"n":"上饶","p":"shangrao","i":"sr","l":"江西","a":28.4606,"o":117.9495,"r":49.2},{"n":"东莞","p":"dongguan","i":"dg","l":"广东","a":23.0273,"o":113.7584,"r":49.2},{"n":"东营","p":"dongying","i":"dy","l":"山东","a":37.4396,"o":118.6814,"r":49.2},{"n":"中卫","p":"zhongwei","i":"zw","l":"宁夏回族","a":37.5057,"o":105.2036,"r":49.2},{"n":"中山","p":"zhongshan","i":"zs","l":"广东","a":22.5223,"o":113.3994,"r":49.1},{"n":"临夏回族自治州","p":"linxiahuizuzizhizhou","i":"lxhzzzz","l":"甘肃","a":35.6099,"o":103.2495,"r":48.0},{"n":"临汾","p":"linfen","i":"lf","l":"山西","a":36.0937,"o":111.5255,"r":49.4},{"n":"临沂","p":"linyi","i":"ly","l":"山东","a":35.1107,"o":118.3635,"r":49.5},{"n":"临沧","p":"lincang","i":"lc","l":"云南","a":23.8905,"o":100.0954,"r":49.3},{"n":"丹东","p":"dandong","i":"dd","l":"辽宁","a":40.0064,"o":124.3615,"r":49.3},{"n":"丽水","p":"lishui","i":"ls","l":"浙江","a":28.4733,"o":119.9296,"r":49.4},{"n":"丽江","p":"lijiang","i":"lj","l":"云南","a":26.8607,"o":100.2325,"r":49.3},{"n":"乌兰察布","p":"wulanchabu","i":"wlcb","l":"内蒙古","a":41.0007,"o":113.1395,"r":49.0},{"n":"乌海","p":"wuhai","i":"wh","l":"内蒙古","a":39.662,"o":106.8004,"r":49.5},{"n":"乌鲁木齐","p":"wulumuqi","i":"wlmq","l":"新疆维吾尔","a":43.8308,"o":87.6244,"r":90},{"n":"乐山","p":"leshan","i":"ls","l":"四川","a":29.5579,"o":103.7725,"r":49.4},{"n":"九江","p":"jiujiang","i":"jj","l":"江西","a":29.7113,"o":116.0075,"r":49.2},{"n":"云浮","p":"yunfu","i":"yf","l":"广东","a":22.9209,"o":112.0515,"r":49.5},{"n":"亳州","p":"bozhou","i":"bz","l":"安徽","a":33.8506,"o":115.7845,"r":49.4},{"n":"伊春","p":"yichun","i":"yc","l":"黑龙江","a":47.7333,"o":128.8475,"r":49.4},{"n":"伊犁哈萨克自治州","p":"yilihasakezizhizhou","i":"ylhskzzz","l":"新疆维吾尔","a":43.9227,"o":81.3305,"r":48.1},{"n":"佛山","p":"foshan","i":"fs","l":"广东","a":23.0278,"o":113.1285,"r":49.4},{"n":"佳木斯","p":"jiamusi","i":"jms","l":"黑龙江","a":46.8057,"o":130.3274,"r":49.3},{"n":"保定","p":"baoding","i":"bd","l":"河北","a":38.88,"o":115.4715,"r":49.3},{"n":"保山","p":"baoshan","i":"bs","l":"云南","a":25.139,"o":99.1773,"r":49.3},{"n":"信阳","p":"xinyang","i":"xy","l":"河南","a":32.153,"o":114.0975,"r":49.3},{"n":"儋州","p":"danzhou","i":"dz","l":"海南","a":19.6428,"o":109.174,"r":49.3},{"n":"克孜勒苏柯尔克孜自治州","p":"kezileisukeerkezizizhizhou","i":"kzlskekzzzz","l":"新疆维吾尔","a":39.7205,"o":76.1743,"r":47.4},{"n":"克拉玛依","p":"kelamayi","i":"klmy","l":"新疆维吾尔","a":45.5857,"o":84.8959,"r":49.2},{"n":"六安","p":"luan","i":"la","l":"安徽","a":31.7415,"o":116.5264,"r":49.6},{"n":"六盘水","p":"liupanshui","i":"lps","l":"贵州","a":26.5988,"o":104.8376,"r":49.0},{"n":"兰州","p":"lanzhou","i":"lz","l":"甘肃","a":36.0672,"o":103.8405,"r":90},{"n":"兴安盟","p":"xinganmeng","i":"xam","l":"内蒙古","a":46.0885,"o":122.0444,"r":49.0},{"n":"内江","p":"neijiang","i":"nj","l":"四川","a":29.5859,"o":105.0646,"r":49.2},{"n":"凉山彝族自治州","p":"liangshanyizuzizhizhou","i":"lsyzzzz","l":"四川","a":27.8878,"o":102.2735,"r":47.8},{"n":"包头","p":"baotou","i":"bt","l":"内蒙古","a":40.6629,"o":109.8465,"r":49.4},{"n":"北京","p":"beijing","i":"bj","l":"北京","a":39.9109,"o":116.4134,"r":100},{"n":"北海","p":"beihai","i":"bh","l":"广西壮族","a":21.4868,"o":109.1265,"r":49.4},{"n":"十堰","p":"shiyan","i":"sy","l":"湖北","a":32.6351,"o":110.8045,"r":49.4},{"n":"南京","p":"nanjing","i":"nj","l":"江苏","a":32.0647,"o":118.8024,"r":90},{"n":"南充","p":"nanchong","i":"nc","l":"四川","a":30.8438,"o":106.1175,"r":49.2},{"n":"南宁","p":"nanning","i":"nn","l":"广西壮族","a":22.8226,"o":108.3735,"r":90},{"n":"南平","p":"nanping","i":"np","l":"福建","a":26.6478,"o":118.1844,"r":49.3},{"n":"南昌","p":"nanchang","i":"nc","l":"江西","a":28.6895,"o":115.8646,"r":90},{"n":"南通","p":"nantong","i":"nt","l":"江苏","a":31.9865,"o":120.9016,"r":49.3},{"n":"南阳","p":"nanyang","i":"ny","l":"河南","a":32.9966,"o":112.5345,"r":49.3},{"n":"博尔塔拉蒙古自治州","p":"boertalamengguzizhizhou","i":"betlmgzzz","l":"新疆维吾尔","a":44.9122,"o":82.0729,"r":47.7},{"n":"厦门","p":"xiamen","i":"xm","l":"福建","a":24.4854,"o":118.0964,"r":49.4},{"n":"双鸭山","p":"shuangyashan","i":"sys","l":"黑龙江","a":46.6532,"o":131.1653,"r":48.8},{"n":"台州","p":"taizhou","i":"tz","l":"浙江","a":28.6622,"o":121.4274,"r":49.3},{"n":"合肥","p":"hefei","i":"hf","l":"安徽","a":31.8266,"o":117.2334,"r":90},{"n":"吉安","p":"jian","i":"ja","l":"江西","a":27.1197,"o":115.0005,"r":49.6},{"n":"吉林","p":"jilin","i":"jl","l":"吉林","a":43.8436,"o":126.5556,"r":49.5},{"n":"吐鲁番","p":"tulufan","i":"tlf","l":"新疆维吾尔","a":42.957,"o":89.1973,"r":49.3},{"n":"吕梁","p":"lvliang","i":"ll","l":"山西","a":37.5245,"o":111.1504,"r":49.3},{"n":"吴忠","p":"wuzhong","i":"wz","l":"宁夏回族","a":38.0037,"o":106.2054,"r":49.3},{"n":"周口","p":"zhoukou","i":"zk","l":"河南","a":33.6318,"o":114.7035,"r":49.3},{"n":"呼伦贝尔","p":"hulunbeier","i":"hlbe","l":"内蒙古","a":49.2184,"o":119.7724,"r":49.0},{"n":"呼和浩特","p":"huhehaote","i":"hhht","l":"内蒙古","a":40.8484,"o":111.7555,"r":90},{"n":"和田地区","p":"hetiandiqu","i":"htdq","l":"新疆维吾尔","a":37.1204,"o":79.9285,"r":49.0},{"n":"咸宁","p":"xianning","i":"xn","l":"湖北","a":29.8471,"o":114.3285,"r":49.2},{"n":"咸阳","p":"xianyang","i":"xy","l":"陕西","a":34.3355,"o":108.7154,"r":49.2},{"n":"哈密","p":"hami","i":"hm","l":"新疆维吾尔","a":42.8258,"o":93.5212,"r":49.6},{"n":"哈尔滨","p":"haerbin","i":"heb","l":"黑龙江","a":45.8088,"o":126.5416,"r":90},{"n":"唐山","p":"tangshan","i":"ts","l":"河北","a":39.6366,"o":118.1865,"r":49.2},{"n":"商丘","p":"shangqiu","i":"sq","l":"河南","a":34.4202,"o":115.6624,"r":49.2},{"n":"商洛","p":"shangluo","i":"sl","l":"陕西","a":33.8786,"o":109.9244,"r":49.2},{"n":"喀什地区","p":"kashidiqu","i":"ksdq","l":"新疆维吾尔","a":39.4761,"o":75.9964,"r":49.1},{"n":"嘉兴","p":"jiaxing","i":"jx","l":"浙江","a":30.751,"o":120.7636,"r":49.3},{"n":"嘉峪关","p":"jiayuguan","i":"jyg","l":"甘肃","a":39.778,"o":98.2962,"r":49.1},{"n":"四平","p":"siping","i":"sp","l":"吉林","a":43.172,"o":124.3565,"r":49.4},{"n":"固原","p":"guyuan","i":"gy","l":"宁夏回族","a":36.0216,"o":106.2486,"r":49.4},{"n":"塔城地区","p":"tachengdiqu","i":"tcdq","l":"新疆维吾尔","a":46.7509,"o":82.9872,"r":48.9},{"n":"大兴安岭地区","p":"daxinganlingdiqu","i":"dxaldq","l":"黑龙江","a":50.42,"o":124.1529,"r":48.4},{"n":"大同","p":"datong","i":"dt","l":"山西","a":40.0825,"o":113.3064,"r":49.4},{"n":"大庆","p":"daqing","i":"dq","l":"黑龙江","a":46.5936,"o":125.1087,"r":49.4},{"n":"大理白族自治州","p":"dalibaizuzizhizhou","i":"dlbzzzz","l":"云南","a":25.5976,"o":100.2365,"r":48.2},{"n":"大连","p":"dalian","i":"dl","l":"辽宁","a":38.919,"o":121.6216,"r":49.4},{"n":"天水","p":"tianshui","i":"ts","l":"甘肃","a":34.5874,"o":105.7314,"r":49.2},{"n":"天津","p":"tianjin","i":"tj","l":"天津","a":39.0937,"o":117.2095,"r":100},{"n":"太原","p":"taiyuan","i":"ty","l":"山西","a":37.877,"o":112.5564,"r":90},{"n":"威海","p":"weihai","i":"wh","l":"山东","a":37.5164,"o":122.1275,"r":49.4},{"n":"娄底","p":"loudi","i":"ld","l":"湖南","a":27.7032,"o":112.0015,"r":49.5},{"n":"孝感","p":"xiaogan","i":"xg","l":"湖北","a":30.9307,"o":113.9225,"r":49.3},{"n":"宁德","p":"ningde","i":"nd","l":"福建","a":26.6722,"o":119.5545,"r":49.4},{"n":"宁波","p":"ningbo","i":"nb","l":"浙江","a":29.866,"o":121.6286,"r":49.4},{"n":"安庆","p":"anqing","i":"aq","l":"安徽","a":30.531,"o":117.0636,"r":49.4},{"n":"安康","p":"ankang","i":"ak","l":"陕西","a":32.6905,"o":109.0356,"r":49.4},{"n":"安阳","p":"anyang","i":"ay","l":"河南","a":36.1059,"o":114.3995,"r":49.4},{"n":"安顺","p":"anshun","i":"as","l":"贵州","a":26.2593,"o":105.9544,"r":49.4},{"n":"定西","p":"dingxi","i":"dx","l":"甘肃","a":35.5868,"o":104.6324,"r":49.4},{"n":"宜宾","p":"yibin","i":"yb","l":"四川","a":28.758,"o":104.6494,"r":49.5},{"n":"宜昌","p":"yichang","i":"yc","l":"湖北","a":30.6974,"o":111.2925,"r":49.3},{"n":"宜春","p":"yichun","i":"yc","l":"江西","a":27.8209,"o":114.4236,"r":49.4},{"n":"宝鸡","p":"baoji","i":"bj","l":"陕西","a":34.3689,"o":107.2446,"r":49.5},{"n":"宣城","p":"xuancheng","i":"xc","l":"安徽","a":30.9466,"o":118.7655,"r":49.1},{"n":"宿州","p":"suzhou","i":"sz","l":"安徽","a":33.6521,"o":116.9705,"r":49.4},{"n":"宿迁","p":"suqian","i":"sq","l":"江苏","a":33.9677,"o":118.2816,"r":49.4},{"n":"山南","p":"shannan","i":"sn","l":"西藏","a":29.243,"o":91.7787,"r":49.3},{"n":"岳阳","p":"yueyang","i":"yy","l":"湖南","a":29.3632,"o":113.1355,"r":49.3},{"n":"崇左","p":"chongzuo","i":"cz","l":"广西壮族","a":22.3831,"o":107.3715,"r":49.2},{"n":"巴中","p":"bazhong","i":"bz","l":"四川","a":31.8729,"o":106.7516,"r":49.3},{"n":"巴彦淖尔","p":"bayannaoer","i":"byne","l":"内蒙古","a":40.7494,"o":107.3944,"r":49.0},{"n":"巴音郭楞蒙古自治州","p":"bayinguolengmengguzizhizhou","i":"byglmgzzz","l":"新疆维吾尔","a":41.7703,"o":86.1517,"r":47.3},{"n":"常州","p":"changzhou","i":"cz","l":"江苏","a":31.8158,"o":119.9815,"r":49.1},{"n":"常德","p":"changde","i":"cd","l":"湖南","a":29.0377,"o":111.7055,"r":49.3},{"n":"平凉","p":"pingliang","i":"pl","l":"甘肃","a":35.5492,"o":106.6714,"r":49.1},{"n":"平顶山","p":"pingdingshan","i":"pds","l":"河南","a":33.7721,"o":113.1995,"r":48.8},{"n":"广元","p":"guangyuan","i":"gy","l":"四川","a":32.4416,"o":105.8504,"r":49.1},{"n":"广安","p":"guangan","i":"ga","l":"四川","a":30.4617,"o":106.6396,"r":49.3},{"n":"广州","p":"guangzhou","i":"gz","l":"广东","a":23.1353,"o":113.2714,"r":90},{"n":"庆阳","p":"qingyang","i":"qy","l":"甘肃","a":35.7152,"o":107.6494,"r":49.2},{"n":"廊坊","p":"langfang","i":"lf","l":"河北","a":39.5434,"o":116.6906,"r":49.2},{"n":"延安","p":"yanan","i":"ya","l":"陕西","a":36.5911,"o":109.4966,"r":49.5},{"n":"延边朝鲜族自治州","p":"yanbianchaoxianzuzizhizhou","i":"ybcxzzzz","l":"吉林","a":42.9157,"o":129.4774,"r":47.4},{"n":"开封","p":"kaifeng","i":"kf","l":"河南","a":34.8029,"o":114.3146,"r":49.3},{"n":"张家口","p":"zhangjiakou","i":"zjk","l":"河北","a":40.7732,"o":114.8926,"r":48.9},{"n":"张家界","p":"zhangjiajie","i":"zjj","l":"湖南","a":29.1228,"o":110.4855,"r":48.9},{"n":"张掖","p":"zhangye","i":"zy","l":"甘肃","a":38.9321,"o":100.4564,"r":49.3},{"n":"徐州","p":"xuzhou","i":"xz","l":"江苏","a":34.2127,"o":117.2906,"r":49.4},{"n":"德宏傣族景颇族自治州","p":"dehongdaizujingpozuzizhizhou","i":"dhdzjpzzzz","l":"云南","a":24.438,"o":98.5914,"r":47.2},{"n":"德州","p":"dezhou","i":"dz","l":"山东","a":37.4413,"o":116.3656,"r":49.4},{"n":"德阳","p":"deyang","i":"dy","l":"四川","a":31.1331,"o":104.4044,"r":49.4},{"n":"忻州","p":"xinzhou","i":"xz","l":"山西","a":38.4224,"o":112.7406,"r":49.3},{"n":"怀化","p":"huaihua","i":"hh","l":"湖南","a":27.5752,"o":110.0085,"r":49.3},{"n":"怒江傈僳族自治州","p":"nujianglisuzuzizhizhou","i":"njlszzzz","l":"云南","a":25.8237,"o":98.8633,"r":47.8},{"n":"恩施土家族苗族自治州","p":"enshitujiazumiaozuzizhizhou","i":"estjzmzzzz","l":"湖北","a":30.2779,"o":109.4946,"r":47.3},{"n":"惠州","p":"huizhou","i":"hz","l":"广东","a":23.1164,"o":114.4236,"r":49.3},{"n":"成都","p":"chengdu","i":"cd","l":"四川","a":30.6558,"o":104.0815,"r":90},{"n":"扬州","p":"yangzhou","i":"yz","l":"江苏","a":32.4007,"o":119.4194,"r":49.2},{"n":"承德","p":"chengde","i":"cd","l":"河北","a":40.9579,"o":117.9694,"r":49.3},{"n":"抚州","p":"fuzhou","i":"fz","l":"江西","a":27.9549,"o":116.3645,"r":49.4},{"n":"抚顺","p":"fushun","i":"fs","l":"辽宁","a":41.886,"o":123.9644,"r":49.4},{"n":"拉萨","p":"lasa","i":"ls","l":"西藏","a":29.65,"o":91.1208,"r":90},{"n":"揭阳","p":"jieyang","i":"jy","l":"广东","a":23.5557,"o":116.3785,"r":49.3},{"n":"攀枝花","p":"panzhihua","i":"pzh","l":"四川","a":26.588,"o":101.7255,"r":49.1},{"n":"文山壮族苗族自治州","p":"wenshanzhuangzumiaozuzizhizhou","i":"wszzmzzzz","l":"云南","a":23.406,"o":104.2226,"r":47.0},{"n":"新乡","p":"xinxiang","i":"xx","l":"河南","a":35.3096,"o":113.9336,"r":49.2},{"n":"新余","p":"xinyu","i":"xy","l":"江西","a":27.8236,"o":114.9235,"r":49.5},{"n":"无锡","p":"wuxi","i":"wx","l":"江苏","a":31.4988,"o":120.3186,"r":49.6},{"n":"日喀则","p":"rikaze","i":"rkz","l":"西藏","a":29.2757,"o":88.8937,"r":49.4},{"n":"日照","p":"rizhao","i":"rz","l":"山东","a":35.4228,"o":119.5334,"r":49.4},{"n":"昆明","p":"kunming","i":"km","l":"云南","a":24.874,"o":102.8524,"r":90},{"n":"昌吉回族自治州","p":"changjihuizuzizhizhou","i":"cjhzzzz","l":"新疆维吾尔","a":44.0169,"o":87.315,"r":47.9},{"n":"昌都","p":"changdou","i":"cd","l":"西藏","a":31.1473,"o":97.1796,"r":49.2},{"n":"昭通","p":"zhaotong","i":"zt","l":"云南","a":27.3441,"o":103.7235,"r":49.2},{"n":"晋中","p":"jinzhong","i":"jz","l":"山西","a":37.6928,"o":112.7596,"r":49.2},{"n":"晋城","p":"jincheng","i":"jc","l":"山西","a":35.4963,"o":112.8586,"r":49.2},{"n":"普洱","p":"puer","i":"pe","l":"云南","a":22.831,"o":100.9726,"r":49.6},{"n":"景德镇","p":"jingdezhen","i":"jdz","l":"江西","a":29.2742,"o":117.1846,"r":49.0},{"n":"曲靖","p":"qujing","i":"qj","l":"云南","a":25.4964,"o":103.8024,"r":49.4},{"n":"朔州","p":"shuozhou","i":"sz","l":"山西","a":39.3371,"o":112.4394,"r":49.2},{"n":"朝阳","p":"zhaoyang","i":"zy","l":"辽宁","a":41.5798,"o":120.4575,"r":49.2},{"n":"本溪","p":"benxi","i":"bx","l":"辽宁","a":41.4929,"o":123.6925,"r":49.5},{"n":"来宾","p":"laibin","i":"lb","l":"广西壮族","a":23.7565,"o":109.2275,"r":49.4},{"n":"杭州","p":"hangzhou","i":"hz","l":"浙江","a":30.2531,"o":120.2155,"r":90},{"n":"松原","p":"songyuan","i":"sy","l":"吉林","a":45.1474,"o":124.8315,"r":49.2},{"n":"林芝","p":"linzhi","i":"lz","l":"西藏","a":29.654,"o":94.3681,"r":49.4},{"n":"果洛藏族自治州","p":"guoluozangzuzizhizhou","i":"glzzzzz","l":"青海","a":34.4772,"o":100.2516,"r":47.9},{"n":"枣庄","p":"zaozhuang","i":"zz","l":"山东","a":34.816,"o":117.3305,"r":49.1},{"n":"柳州","p":"liuzhou","i":"lz","l":"广西壮族","a":24.332,"o":109.4344,"r":49.3},{"n":"株洲","p":"zhuzhou","i":"zz","l":"湖南","a":27.8336,"o":113.1405,"r":49.3},{"n":"桂林","p":"guilin","i":"gl","l":"广西壮族","a":25.2429,"o":110.2035,"r":49.4},{"n":"梅州","p":"meizhou","i":"mz","l":"广东","a":24.2942,"o":116.1295,"r":49.3},{"n":"梧州","p":"wuzhou","i":"wz","l":"广西壮族","a":23.4827,"o":111.2855,"r":49.4},{"n":"楚雄彝族自治州","p":"chuxiongyizuzizhizhou","i":"cxyzzzz","l":"云南","a":25.0518,"o":101.5344,"r":47.9},{"n":"榆林","p":"yulin","i":"yl","l":"陕西","a":38.2909,"o":109.7416,"r":49.5},{"n":"武威","p":"wuwei","i":"ww","l":"甘肃","a":37.9344,"o":102.6446,"r":49.5},{"n":"武汉","p":"wuhan","i":"wh","l":"湖北","a":30.5985,"o":114.3116,"r":90},{"n":"毕节","p":"bijie","i":"bj","l":"贵州","a":27.2902,"o":105.2986,"r":49.5},{"n":"永州","p":"yongzhou","i":"yz","l":"湖南","a":26.4259,"o":111.6195,"r":49.2},{"n":"汉中","p":"hanzhong","i":"hz","l":"陕西","a":33.0738,"o":107.0294,"r":49.2},{"n":"汕头","p":"shantou","i":"st","l":"广东","a":23.3591,"o":116.6885,"r":49.3},{"n":"汕尾","p":"shanwei","i":"sw","l":"广东","a":22.7913,"o":115.3816,"r":49.3},{"n":"江门","p":"jiangmen","i":"jm","l":"广东","a":22.5846,"o":113.0886,"r":49.2},{"n":"池州","p":"chizhou","i":"cz","l":"安徽","a":30.6709,"o":117.4984,"r":49.3},{"n":"沈阳","p":"shenyang","i":"sy","l":"辽宁","a":41.6838,"o":123.4711,"r":90},{"n":"沧州","p":"cangzhou","i":"cz","l":"河北","a":38.3102,"o":116.8456,"r":49.2},{"n":"河池","p":"hechi","i":"hc","l":"广西壮族","a":24.6989,"o":108.0915,"r":49.5},{"n":"河源","p":"heyuan","i":"hy","l":"广东","a":23.7497,"o":114.7074,"r":49.4},{"n":"泉州","p":"quanzhou","i":"qz","l":"福建","a":24.88,"o":118.6824,"r":49.2},{"n":"泰安","p":"taian","i":"ta","l":"山东","a":36.2059,"o":117.0945,"r":49.5},{"n":"泰州","p":"taizhou","i":"tz","l":"江苏","a":32.4607,"o":119.9296,"r":49.3},{"n":"泸州","p":"luzhou","i":"lz","l":"四川","a":28.8777,"o":105.4485,"r":49.4},{"n":"洛阳","p":"luoyang","i":"ly","l":"河南","a":34.6243,"o":112.4594,"r":49.3},{"n":"济南","p":"jinan","i":"jn","l":"山东","a":36.6566,"o":117.1264,"r":90},{"n":"济宁","p":"jining","i":"jn","l":"山东","a":35.4202,"o":116.5936,"r":49.4},{"n":"海东","p":"haidong","i":"hd","l":"青海","a":36.5085,"o":102.1104,"r":49.3},{"n":"海北藏族自治州","p":"haibeizangzuzizhizhou","i":"hbzzzzz","l":"青海","a":36.9607,"o":100.9074,"r":47.9},{"n":"海南藏族自治州","p":"hainanzangzuzizhizhou","i":"hnzzzzz","l":"青海","a":36.2921,"o":100.6266,"r":47.9},{"n":"海口","p":"haikou","i":"hk","l":"海南","a":20.044,"o":110.3255,"r":90},{"n":"海西蒙古族藏族自治州","p":"haiximengguzuzangzuzizhizhou","i":"hxmgzzzzzz","l":"青海","a":37.3828,"o":97.3763,"r":47.2},{"n":"淄博","p":"zibo","i":"zb","l":"山东","a":36.8191,"o":118.0615,"r":49.6},{"n":"淮北","p":"huaibei","i":"hb","l":"安徽","a":33.9617,"o":116.8045,"r":49.3},{"n":"淮南","p":"huainan","i":"hn","l":"安徽","a":32.6318,"o":117.0064,"r":49.3},{"n":"淮安","p":"huaian","i":"ha","l":"江苏","a":33.6163,"o":119.0215,"r":49.4},{"n":"深圳","p":"shenzhen","i":"sz","l":"广东","a":22.5485,"o":114.0646,"r":49.2},{"n":"清远","p":"qingyuan","i":"qy","l":"广东","a":23.6882,"o":113.0625,"r":49.2},{"n":"温州","p":"wenzhou","i":"wz","l":"浙江","a":28.0011,"o":120.7065,"r":49.3},{"n":"渭南","p":"weinan","i":"wn","l":"陕西","a":34.5057,"o":109.5166,"r":49.4},{"n":"湖州","p":"huzhou","i":"hz","l":"浙江","a":30.899,"o":120.0945,"r":49.4},{"n":"湘潭","p":"xiangtan","i":"xt","l":"湖南","a":27.8357,"o":112.9505,"r":49.2},{"n":"湘西土家族苗族自治州","p":"xiangxitujiazumiaozuzizhizhou","i":"xxtjzmzzzz","l":"湖南","a":28.3174,"o":109.7456,"r":47.1},{"n":"湛江","p":"zhanjiang","i":"zj","l":"广东","a":21.2767,"o":110.3656,"r":49.1},{"n":"滁州","p":"chuzhou","i":"cz","l":"安徽","a":32.2613,"o":118.3394,"r":49.3},{"n":"滨州","p":"binzhou","i":"bz","l":"山东","a":37.3882,"o":117.9774,"r":49.3},{"n":"漯河","p":"tahe","i":"th","l":"河南","a":33.5877,"o":114.0234,"r":49.6},{"n":"漳州","p":"zhangzhou","i":"zz","l":"福建","a":24.5189,"o":117.6536,"r":49.1},{"n":"潍坊","p":"weifang","i":"wf","l":"山东","a":36.7127,"o":119.1684,"r":49.3},{"n":"潮州","p":"chaozhou","i":"cz","l":"广东","a":23.6626,"o":116.6295,"r":49.2},{"n":"濮阳","p":"puyang","i":"py","l":"河南","a":35.7676,"o":115.0356,"r":49.4},{"n":"烟台","p":"yantai","i":"yt","l":"山东","a":37.47,"o":121.4544,"r":49.4},{"n":"焦作","p":"jiaozuo","i":"jz","l":"河南","a":35.221,"o":113.2485,"r":49.3},{"n":"牡丹江","p":"mudanjiang","i":"mdj","l":"黑龙江","a":44.5562,"o":129.6395,"r":49.0},{"n":"玉林","p":"yulin","i":"yl","l":"广西壮族","a":22.6598,"o":110.1885,"r":49.5},{"n":"玉树藏族自治州","p":"yushuzangzuzizhizhou","i":"yszzzzz","l":"青海","a":33.011,"o":97.0132,"r":48.0},{"n":"玉溪","p":"yuxi","i":"yx","l":"云南","a":24.3577,"o":102.5536,"r":49.6},{"n":"珠海","p":"zhuhai","i":"zh","l":"广东","a":22.2766,"o":113.5826,"r":49.4},{"n":"甘南藏族自治州","p":"gannanzangzuzizhizhou","i":"gnzzzzz","l":"甘肃","a":34.9891,"o":102.9176,"r":47.9},{"n":"甘孜藏族自治州","p":"ganzizangzuzizhizhou","i":"gzzzzzz","l":"四川","a":30.0553,"o":101.9685,"r":48.0},{"n":"白城","p":"baicheng","i":"bc","l":"吉林","a":45.6255,"o":122.8456,"r":49.2},{"n":"白山","p":"baishan","i":"bs","l":"吉林","a":41.9396,"o":126.4296,"r":49.3},{"n":"白银","p":"baiyin","i":"by","l":"甘肃","a":36.5508,"o":104.1445,"r":49.4},{"n":"百色","p":"baise","i":"bs","l":"广西壮族","a":23.9082,"o":106.6246,"r":49.5},{"n":"益阳","p":"yiyang","i":"yy","l":"湖南","a":28.5597,"o":112.3615,"r":49.4},{"n":"盐城","p":"yancheng","i":"yc","l":"江苏","a":33.3551,"o":120.1675,"r":49.2},{"n":"盘锦","p":"panjin","i":"pj","l":"辽宁","a":41.1259,"o":122.0775,"r":49.4},{"n":"眉山","p":"meishan","i":"ms","l":"四川","a":30.0825,"o":103.8566,"r":49.3},{"n":"石嘴山","p":"shizuishan","i":"szs","l":"宁夏回族","a":38.9897,"o":106.3906,"r":49.0},{"n":"石家庄","p":"shijiazhuang","i":"sjz","l":"河北","a":38.0521,"o":114.469,"r":90},{"n":"福州","p":"fuzhou","i":"fz","l":"福建","a":26.0804,"o":119.3035,"r":90},{"n":"秦皇岛","p":"qinhuangdao","i":"qhd","l":"河北","a":39.9417,"o":119.6085,"r":48.9},{"n":"红河哈尼族彝族自治州","p":"honghehanizuyizuzizhizhou","i":"hhhnzyzzzz","l":"云南","a":23.3745,"o":102.4276,"r":47.5},{"n":"绍兴","p":"shaoxing","i":"sx","l":"浙江","a":30.0364,"o":120.5855,"r":49.2},{"n":"绥化","p":"suihua","i":"sh","l":"黑龙江","a":46.66,"o":126.9754,"r":49.4},{"n":"绵阳","p":"mianyang","i":"my","l":"四川","a":31.4737,"o":104.6856,"r":49.2},{"n":"聊城","p":"liaocheng","i":"lc","l":"山东","a":36.4628,"o":115.9916,"r":49.1},{"n":"肇庆","p":"zhaoqing","i":"zq","l":"广东","a":23.0529,"o":112.4715,"r":49.2},{"n":"自治区直辖县级行政区划","p":"zizhiquzhixiaxianjixingzhengquhua","i":"zzqzxxjxzqh","l":"新疆维吾尔","a":29.5566,"o":106.5812,"r":46.7},{"n":"自贡","p":"zigong","i":"zg","l":"四川","a":29.3456,"o":104.7844,"r":49.4},{"n":"舟山","p":"zhoushan","i":"zs","l":"浙江","a":29.9909,"o":122.2136,"r":49.2},{"n":"芜湖","p":"wuhu","i":"wh","l":"安徽","a":31.3585,"o":118.4394,"r":49.6},{"n":"苏州","p":"suzhou","i":"sz","l":"江苏","a":31.3036,"o":120.5924,"r":49.4},{"n":"茂名","p":"maoming","i":"mm","l":"广东","a":21.6691,"o":110.9315,"r":49.3},{"n":"荆州","p":"jingzhou","i":"jz","l":"湖北","a":30.3408,"o":112.2455,"r":49.2},{"n":"荆门","p":"jingmen","i":"jm","l":"湖北","a":31.0417,"o":112.2064,"r":49.3},{"n":"莆田","p":"putian","i":"pt","l":"福建","a":25.4599,"o":119.0145,"r":49.4},{"n":"菏泽","p":"heze","i":"hz","l":"山东","a":35.2394,"o":115.4875,"r":49.6},{"n":"萍乡","p":"pingxiang","i":"px","l":"江西","a":27.6284,"o":113.8615,"r":49.1},{"n":"营口","p":"yingkou","i":"yk","l":"辽宁","a":40.6731,"o":122.2416,"r":49.3},{"n":"葫芦岛","p":"huludao","i":"hld","l":"辽宁","a":40.7174,"o":120.8434,"r":49.3},{"n":"蚌埠","p":"bengbu","i":"bb","l":"安徽","a":32.9215,"o":117.3955,"r":49.4},{"n":"衡水","p":"hengshui","i":"hs","l":"河北","a":37.7452,"o":115.6754,"r":49.2},{"n":"衡阳","p":"hengyang","i":"hy","l":"湖南","a":26.8996,"o":112.5784,"r":49.2},{"n":"衢州","p":"quzhou","i":"qz","l":"浙江","a":28.9755,"o":118.8666,"r":49.4},{"n":"襄阳","p":"xiangyang","i":"xy","l":"湖北","a":32.0148,"o":112.1285,"r":49.1},{"n":"西双版纳傣族自治州","p":"xishuangbannadaizuzizhizhou","i":"xsbndzzzz","l":"云南","a":22.0136,"o":100.8034,"r":47.3},{"n":"西宁","p":"xining","i":"xn","l":"青海","a":36.6234,"o":101.7845,"r":90},{"n":"西安","p":"xian","i":"xa","l":"陕西","a":34.3473,"o":108.9465,"r":90},{"n":"许昌","p":"xuchang","i":"xc","l":"河南","a":34.0414,"o":113.8585,"r":49.3},{"n":"贵港","p":"guigang","i":"gg","l":"广西壮族","a":23.1174,"o":109.6055,"r":49.3},{"n":"贵阳","p":"guiyang","i":"gy","l":"贵州","a":26.6533,"o":106.6366,"r":90},{"n":"贺州","p":"hezhou","i":"hz","l":"广西壮族","a":24.4095,"o":111.5735,"r":49.4},{"n":"资阳","p":"ziyang","i":"zy","l":"四川","a":30.135,"o":104.6344,"r":49.4},{"n":"赣州","p":"ganzhou","i":"gz","l":"江西","a":25.8352,"o":114.9405,"r":49.3},{"n":"赤峰","p":"chifeng","i":"cf","l":"内蒙古","a":42.2617,"o":118.8955,"r":49.3},{"n":"辽源","p":"liaoyuan","i":"ly","l":"吉林","a":42.8941,"o":125.1504,"r":49.2},{"n":"辽阳","p":"liaoyang","i":"ly","l":"辽宁","a":41.2742,"o":123.2434,"r":49.2},{"n":"达州","p":"dazhou","i":"dz","l":"四川","a":31.2143,"o":107.4746,"r":49.4},{"n":"运城","p":"yuncheng","i":"yc","l":"山西","a":35.0327,"o":111.0134,"r":49.2},{"n":"连云港","p":"lianyungang","i":"lyg","l":"江苏","a":34.6022,"o":119.2286,"r":48.9},{"n":"迪庆藏族自治州","p":"diqingzangzuzizhizhou","i":"dqzzzzz","l":"云南","a":27.8252,"o":99.7095,"r":47.9},{"n":"通化","p":"tonghua","i":"th","l":"吉林","a":41.7338,"o":125.9466,"r":49.3},{"n":"通辽","p":"tongliao","i":"tl","l":"内蒙古","a":43.658,"o":122.2505,"r":49.2},{"n":"遂宁","p":"suining","i":"sn","l":"四川","a":30.5391,"o":105.5994,"r":49.3},{"n":"遵义","p":"zunyi","i":"zy","l":"贵州","a":27.7317,"o":106.9334,"r":49.5},{"n":"邢台","p":"xingtai","i":"xt","l":"河北","a":37.0772,"o":115.0317,"r":49.3},{"n":"那曲","p":"naqu","i":"nq","l":"西藏","a":31.4824,"o":92.0573,"r":49.6},{"n":"邯郸","p":"handan","i":"hd","l":"河北","a":36.6313,"o":114.5456,"r":49.4},{"n":"邵阳","p":"shaoyang","i":"sy","l":"湖南","a":27.2453,"o":111.4744,"r":49.2},{"n":"郑州","p":"zhengzhou","i":"zz","l":"河南","a":34.7534,"o":113.6314,"r":90},{"n":"郴州","p":"chenzhou","i":"cz","l":"湖南","a":25.7767,"o":113.0215,"r":49.2},{"n":"鄂尔多斯","p":"eerduosi","i":"eeds","l":"内蒙古","a":39.6145,"o":109.7874,"r":49.2},{"n":"鄂州","p":"ezhou","i":"ez","l":"湖北","a":30.3966,"o":114.9016,"r":49.5},{"n":"酒泉","p":"jiuquan","i":"jq","l":"甘肃","a":39.7385,"o":98.5007,"r":49.3},{"n":"重庆","p":"chongqing","i":"cq","l":"重庆","a":29.569,"o":106.5584,"r":100},{"n":"金华","p":"jinhua","i":"jh","l":"浙江","a":29.0846,"o":119.6534,"r":49.4},{"n":"金昌","p":"jinchang","i":"jc","l":"甘肃","a":38.5258,"o":102.1946,"r":49.2},{"n":"钦州","p":"qinzhou","i":"qz","l":"广西壮族","a":21.9866,"o":108.6606,"r":49.3},{"n":"铁岭","p":"tieling","i":"tl","l":"辽宁","a":42.2299,"o":123.7324,"r":49.3},{"n":"铜仁","p":"tongren","i":"tr","l":"贵州","a":27.7378,"o":109.1964,"r":49.3},{"n":"铜川","p":"tongchuan","i":"tc","l":"陕西","a":34.9026,"o":108.9524,"r":49.1},{"n":"铜陵","p":"tongling","i":"tl","l":"安徽","a":30.9512,"o":117.8185,"r":49.2},{"n":"银川","p":"yinchuan","i":"yc","l":"宁夏回族","a":38.4925,"o":106.2385,"r":90},{"n":"锡林郭勒盟","p":"xilinguoleimeng","i":"xlglm","l":"内蒙古","a":43.9394,"o":116.0544,"r":48.5},{"n":"锦州","p":"jinzhou","i":"jz","l":"辽宁","a":41.1009,"o":121.1326,"r":49.3},{"n":"镇江","p":"zhenjiang","i":"zj","l":"江苏","a":32.1947,"o":119.4305,"r":49.1},{"n":"长春","p":"changchun","i":"cc","l":"吉林","a":43.822,"o":125.3306,"r":90},{"n":"长沙","p":"changsha","i":"cs","l":"湖南","a":28.2349,"o":112.9455,"r":90},{"n":"长治","p":"zhangzhi","i":"zz","l":"山西","a":36.2013,"o":113.1226,"r":49.2},{"n":"阜新","p":"fuxin","i":"fx","l":"辽宁","a":42.028,"o":121.6764,"r":49.5},{"n":"阜阳","p":"fuyang","i":"fy","l":"安徽","a":32.8961,"o":115.8204,"r":49.4},{"n":"防城港","p":"fangchenggang","i":"fcg","l":"广西壮族","a":21.693,"o":108.3604,"r":48.7},{"n":"阳江","p":"yangjiang","i":"yj","l":"广东","a":21.8643,"o":111.9885,"r":49.1},{"n":"阳泉","p":"yangquan","i":"yq","l":"山西","a":37.8624,"o":113.5876,"r":49.2},{"n":"阿克苏地区","p":"akesudiqu","i":"aksdq","l":"新疆维吾尔","a":41.175,"o":80.2669,"r":49.1},{"n":"阿勒泰地区","p":"aleitaidiqu","i":"altdq","l":"新疆维吾尔","a":47.8507,"o":88.1479,"r":48.9},{"n":"阿坝藏族羌族自治州","p":"abazangzuqiangzuzizhizhou","i":"abzzqzzzz","l":"四川","a":32.9082,"o":101.7136,"r":47.5},{"n":"阿拉善盟","p":"alashanmeng","i":"alsm","l":"内蒙古","a":38.8583,"o":105.7354,"r":48.9},{"n":"阿里地区","p":"alidiqu","i":"aldq","l":"西藏","a":32.5069,"o":80.1128,"r":49.3},{"n":"陇南","p":"longnan","i":"ln","l":"甘肃","a":33.4066,"o":104.9286,"r":49.3},{"n":"随州","p":"suizhou","i":"sz","l":"湖北","a":31.6965,"o":113.3895,"r":49.3},{"n":"雅安","p":"yaan","i":"ya","l":"四川","a":30.0168,"o":103.0495,"r":49.6},{"n":"青岛","p":"qingdao","i":"qd","l":"山东","a":36.0722,"o":120.3895,"r":49.3},{"n":"鞍山","p":"anshan","i":"as","l":"辽宁","a":41.1151,"o":123.0014,"r":49.4},{"n":"韶关","p":"shaoguan","i":"sg","l":"广东","a":24.8159,"o":113.6035,"r":49.2},{"n":"马鞍山","p":"maanshan","i":"mas","l":"安徽","a":31.6763,"o":118.5136,"r":49.2},{"n":"驻马店","p":"zhumadian","i":"zmd","l":"河南","a":33.0178,"o":114.0285,"r":49.1},{"n":"鸡西","p":"jixi","i":"jx","l":"黑龙江","a":45.3009,"o":130.9756,"r":49.6},{"n":"鹤壁","p":"hebi","i":"hb","l":"河南","a":35.7524,"o":114.3036,"r":49.6},{"n":"鹤岗","p":"hegang","i":"hg","l":"黑龙江","a":47.3561,"o":130.3044,"r":49.4},{"n":"鹰潭","p":"yingtan","i":"yt","l":"江西","a":28.2658,"o":117.0756,"r":49.3},{"n":"黄冈","p":"huanggang","i":"hg","l":"湖北","a":30.4594,"o":114.8785,"r":49.1},{"n":"黄南藏族自治州","p":"huangnanzangzuzizhizhou","i":"hnzzzzz","l":"青海","a":35.5258,"o":102.0224,"r":47.7},{"n":"黄山","p":"huangshan","i":"hs","l":"安徽","a":29.7219,"o":118.3454,"r":49.1},{"n":"黄石","p":"huangshi","i":"hs","l":"湖北","a":30.2052,"o":115.0455,"r":49.2},{"n":"黑河","p":"heihe","i":"hh","l":"黑龙江","a":50.2513,"o":127.5355,"r":49.5},{"n":"黔东南苗族侗族自治州","p":"qiandongnanmiaozudongzuzizhizhou","i":"qdnmzdzzzz","l":"贵州","a":26.5897,"o":107.9894,"r":46.8},{"n":"黔南布依族苗族自治州","p":"qiannanbuyizumiaozuzizhizhou","i":"qnbyzmzzzz","l":"贵州","a":26.2606,"o":107.5284,"r":47.2},{"n":"黔西南布依族苗族自治州","p":"qianxinanbuyizumiaozuzizhizhou","i":"qxnbyzmzzzz","l":"贵州","a":27.0143,"o":106.0386,"r":47.0},{"n":"齐齐哈尔","p":"qiqihaer","i":"qqhe","l":"黑龙江","a":47.36,"o":123.9246,"r":49.2},{"n":"龙岩","p":"longyan","i":"ly","l":"福建","a":25.0812,"o":117.0234,"r":49.3}] \ No newline at end of file diff --git a/plugins/ztools-weather/index.html b/plugins/ztools-weather/index.html new file mode 100644 index 000000000..a2d399b52 --- /dev/null +++ b/plugins/ztools-weather/index.html @@ -0,0 +1,124 @@ + + + + + + 天气助手 + + + +
+
+
+ logo + 天气助手 +
+
+ + +
+
+ +
+ + +
输入即筛选 · ↑↓ 选择 · Enter 添加 · Esc 关闭
+
+ + +
+ +
+
+
+
--°C
+
--
+
正在载入…
+
+
+
+
🌡️
+
+
+ +
+
+
+ +
+
+
空气质量--
+
--
+
+
+
+
今日概况
+
+
+
+ +
+
未来 24 小时实心=温度 · 柱高=降水概率
+
+ +
+ +
+
未来 7 天
+
+ +
+
+ + + + + + + + + + + diff --git a/plugins/ztools-weather/logo.png b/plugins/ztools-weather/logo.png new file mode 100644 index 000000000..d7e8f6d01 Binary files /dev/null and b/plugins/ztools-weather/logo.png differ diff --git a/plugins/ztools-weather/plugin.json b/plugins/ztools-weather/plugin.json new file mode 100644 index 000000000..38b1dfcd9 --- /dev/null +++ b/plugins/ztools-weather/plugin.json @@ -0,0 +1,48 @@ +{ + "name": "ztools-weather", + "title": "天气助手", + "description": "多城市实时天气、24 小时逐时预报、7 天趋势与空气质量,无需注册和 API Key", + "author": "zhanglei", + "version": "1.0.0", + "logo": "logo.png", + "main": "index.html", + "preload": "preload.js", + "platform": [ + "win32", + "darwin", + "linux" + ], + "pluginSetting": { + "single": true, + "height": 620 + }, + "features": [ + { + "code": "weather", + "explain": "打开天气面板(多城市实时天气 / 24 小时 / 7 天 / 空气质量)", + "icon": "logo.png", + "cmds": [ + "天气", + "weather", + "天气助手", + "天气预报", + "气温", + "下雨" + ] + }, + { + "code": "weather-push", + "explain": "在主搜索框直接搜索已保存的城市并切换", + "icon": "logo.png", + "mainPush": true, + "cmds": [ + { + "type": "over", + "label": "切换到该城市天气", + "minLength": 1, + "maxLength": 30 + } + ] + } + ] +} diff --git a/plugins/ztools-weather/preload.js b/plugins/ztools-weather/preload.js new file mode 100644 index 000000000..bfbea8f2b --- /dev/null +++ b/plugins/ztools-weather/preload.js @@ -0,0 +1,849 @@ +/** + * 天气助手 · preload(ZTools / uTools 的 Node 运行环境,CommonJS) + * + * 职责:城市簿(多城市)、调用 Open-Meteo 免费接口拉天气/空气质量/空气质量指数、 + * 本地缓存与刷新闸门、系统能力转发。 + * 页面(index.html)没有 Node,只能通过本文件挂在 window.services 上的函数通信。 + * + * 数据源(全部无需 API Key): + * 天气 https://api.open-meteo.com/v1/forecast + * 空气质量 https://air-quality-api.open-meteo.com/v1/air-quality + * 城市检索 https://geocoding-api.open-meteo.com/v1/search + * 逆地编码 https://api.bigdatacloud.net/data/reverse-geocode-client + * IP 粗定位 https://get.geojs.io/v1/ip/geo.json + * + * 存储键(ztools/utools dbStorage): + * wx.cities [{id, name, admin, country, lat, lon, tz, source}] + * wx.current 当前城市 id + * wx.settings {tempUnit, windUnit, refreshMinutes, theme, proxy} + * wx.cache. {fetchedAt, ...天气数据} + * wx.autolocated 是否已经用过 IP 粗定位 + */ + +// ---------- 运行时兼容:ZTools 是 window.ztools,uTools 是 window.utools ---------- +function ZT() { + if (typeof window !== 'undefined') return window.ztools || window.utools || {}; + return globalThis.ztools || globalThis.utools || {}; +} +function dbGet(key) { + try { const z = ZT(); return z.dbStorage ? z.dbStorage.getItem(key) : null; } catch (e) { return null; } +} +function dbSet(key, val) { + try { const z = ZT(); return z.dbStorage ? z.dbStorage.setItem(key, val) : null; } catch (e) { return null; } +} +function dbDel(key) { + try { const z = ZT(); return z.dbStorage ? z.dbStorage.removeItem(key) : null; } catch (e) { return null; } +} + +const K_CITIES = 'wx.cities'; +const K_CURRENT = 'wx.current'; +const K_SETTINGS = 'wx.settings'; +const K_AUTOLOC = 'wx.autolocated'; +const kCache = (id) => 'wx.cache.' + id; +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); + +// ---------- 城市拼音索引(本地模糊检索,不联网) ---------- +// 数据 cities-pinyin.json 由 tools/build-pinyin.py 生成:[{n,p,i,l,a,o}],已按名称排序。 +// 为什么必须本地做:Open-Meteo 的地理检索只认原文,搜「bjd」会返回冰岛的巴卡菲厄泽 +//(首字母匹配到别的词),搜「chengdu」直接无结果——拼音/首字母检索只能自己建索引。 +// 缓存用 var 而不是 let:preload 会被测试脚本用 vm 跑,let 的 TDZ 在 +// 跨模块引用时表现为 "is not defined",var + 显式赋值最稳。 +var PINYIN_TABLE = null; +function pinyinTable() { + if (PINYIN_TABLE) return PINYIN_TABLE; + try { + // 这个文件里没有全局 fs/path 常量(preload 惯用 ztools.dbStorage,不 require fs), + // 所以在函数内部 require —— 用顶层 const 会在声明顺序靠前时报 "fs is not defined"。 + const fsx = require('fs'); + const pathx = require('path'); + const raw = fsx.readFileSync(pathx.join(__dirname, 'cities-pinyin.json'), 'utf8'); + const list = JSON.parse(raw); + PINYIN_TABLE = Array.isArray(list) ? list : []; + } catch (e) { PINYIN_TABLE = []; } + return PINYIN_TABLE; +} + +/** + * 本地城市模糊检索。支持: + * 中文全称/子串(成都 / 哈尔) 拼音全拼(chengdu) 拼音首字母(cd / cqd) + * 混合(chengdu 成都 / cd成) 省份过滤(四川) + * 排序权重:完全匹配 > 前缀匹配 > 子串匹配;同级按拼音字典序。 + */ +function searchCitiesLocal(keyword, { limit = 10 } = {}) { + const q = String(keyword || '').trim().toLowerCase(); + if (!q) return []; + const table = pinyinTable(); + if (!table.length) return []; + const hits = []; + for (let i = 0; i < table.length; i++) { + const c = table[i]; + const name = c.n || ''; + const full = c.p || ''; + const init = c.i || ''; + const prov = c.l || ''; + const rank = Number(c.r) || 0; + // 名字里可能带「市/州/区」,匹配时都试一遍 + const nameFull = name + '市'; + let score = 0; + if (name === q || nameFull === q) score = 1000; + else if (full === q) score = 900; // chengdu → 成都 + else if (name.indexOf(q) === 0) score = 800; // 哈尔 → 哈尔滨 + else if (full.indexOf(q) === 0) score = 760; + // ⚠ 顺序不能颠倒:init 完全相等(700)必须高于 init 前缀(720 → 改成 650)。 + // 否则搜「xa」时「兴安盟(xam)」靠前缀分压过「西安(xa)」的完全匹配。 + else if (init === q) score = 700; // cd → 成都/承德/常德/昌都(歧义,靠 rank 分) + else if (name.indexOf(q) >= 0) score = 600; // 成 → 成都 + else if (full.indexOf(q) >= 0) score = 520; + else if (init.indexOf(q) === 0) score = 480; // xa → 兴安盟(xam) + else if (init.indexOf(q) >= 0 && q.length >= 2) score = 440; + else if (prov && prov.indexOf(q) === 0) score = 300; // 四川 → 省下所有市 + if (!score) continue; + // 同分时用知名度(直辖市 100 > 省会 90 > 其他 ~50)决胜: + // 「cd」命中 4 个城市,光看字母分不出是哪个,只能把大概率的那个排前面。 + hits.push({ row: c, score: score, rank: rank, idx: i }); + } + hits.sort((a, b) => (b.score - a.score) || (b.rank - a.rank) || (a.idx - b.idx)); + return hits.slice(0, limit).map((h) => { + const c = h.row; + return { + name: c.n, admin: c.l || '', country: '中国', + lat: c.a, lon: c.o, tz: 'Asia/Shanghai', + detail: [c.l, '拼音 ' + c.p].filter(Boolean).join(' · '), + pinyin: c.p, initial: c.i, local: true + }; + }); +} + +// ---------- 城市簿 ---------- +function cities() { + const c = dbGet(K_CITIES); + return Array.isArray(c) ? c : []; +} +function saveCities(list) { dbSet(K_CITIES, list); return list; } +function currentId() { + const id = dbGet(K_CURRENT); + return cities().some((c) => c.id === id) ? id : (cities()[0] ? cities()[0].id : null); +} +function currentCity() { + const id = currentId(); + return cities().find((c) => c.id === id) || null; +} +function newId() { return 'c' + Date.now().toString(36) + Math.random().toString(36).slice(2, 6); } + +/** 城市名:优先 城市名,其次 省/州,最后国家 */ +function cityLabel(c) { + if (!c) return ''; + if (c.name && c.admin && c.admin !== c.name) return c.name + ' · ' + c.admin; + return c.name || c.admin || c.country || '未知位置'; +} + +function normalizeCity(input) { + const lat = Number(input && input.lat); + const lon = Number(input && input.lon != null ? input.lon : input.longitude); + if (!isFinite(lat) || !isFinite(lon) || Math.abs(lat) > 90 || Math.abs(lon) > 180) { + throw new Error('城市坐标无效'); + } + return { + id: String((input && input.id) || '') || newId(), + name: String((input && input.name) || '').trim() || '未知城市', + admin: String((input && input.admin) || '').trim(), + country: String((input && input.country) || '').trim(), + lat: lat, lon: lon, + tz: String((input && input.tz) || '') || '', + source: String((input && input.source) || 'search') + }; +} + +function addCity(input, { select = true } = {}) { + const list = cities(); + // 同坐标视为同一个城市(去重容差 0.05°,约 5km) + const dup = list.find((c) => Math.abs(c.lat - Number(input.lat)) < 0.05 && Math.abs(c.lon - Number(input.lon)) < 0.05); + if (dup) { + if (select) dbSet(K_CURRENT, dup.id); + return { cities: list.map(publicCity), current: currentId(), duplicated: true }; + } + const city = normalizeCity(input); + list.push(city); + saveCities(list); + if (select) dbSet(K_CURRENT, city.id); + return { cities: list.map(publicCity), current: currentId() }; +} + +function removeCity(id) { + const list = cities().filter((c) => c.id !== id); + saveCities(list); + dbDel(kCache(id)); + if (currentId() === id) dbSet(K_CURRENT, list[0] ? list[0].id : null); + return { cities: list.map(publicCity), current: currentId() }; +} + +function updateCity(id, patch) { + const list = cities(); + const i = list.findIndex((c) => c.id === id); + if (i < 0) throw new Error('城市不存在'); + const p = {}; + if (patch && patch.name != null) p.name = String(patch.name).trim() || list[i].name; + list[i] = Object.assign({}, list[i], p); + saveCities(list); + return { cities: list.map(publicCity), current: currentId() }; +} + +function setCurrent(id) { + if (!cities().some((c) => c.id === id)) throw new Error('城市不存在'); + dbSet(K_CURRENT, id); + return { cities: cities().map(publicCity), current: id }; +} + +function publicCity(c) { + return { + id: c.id, name: c.name, admin: c.admin || '', country: c.country || '', + lat: c.lat, lon: c.lon, label: cityLabel(c), source: c.source || 'search' + }; +} + +// ---------- 设置 ---------- +const DEFAULT_SETTINGS = { tempUnit: 'C', windUnit: 'kmh', refreshMinutes: 5, theme: 'auto', proxy: 'auto' }; +function settings() { + const s = dbGet(K_SETTINGS); + const out = Object.assign({}, DEFAULT_SETTINGS); + if (s && typeof s === 'object' && !Array.isArray(s)) { + if (s.tempUnit === 'C' || s.tempUnit === 'F') out.tempUnit = s.tempUnit; + if (['kmh', 'ms', 'mph'].indexOf(s.windUnit) >= 0) out.windUnit = s.windUnit; + const m = Number(s.refreshMinutes); + out.refreshMinutes = isFinite(m) ? Math.max(0, Math.min(120, Math.round(m))) : DEFAULT_SETTINGS.refreshMinutes; + if (['auto', 'light', 'dark'].indexOf(s.theme) >= 0) out.theme = s.theme; + if (typeof s.proxy === 'string') out.proxy = s.proxy.slice(0, 200); + } + return out; +} +function patchSettings(patch) { + // 逐项校验后再落库:非法值直接忽略,避免把 'X' 这种脏值写进 dbStorage + const cur = settings(); + const p = patch || {}; + const next = Object.assign({}, cur); + if (p.tempUnit === 'C' || p.tempUnit === 'F') next.tempUnit = p.tempUnit; + if (['kmh', 'ms', 'mph'].indexOf(p.windUnit) >= 0) next.windUnit = p.windUnit; + if (p.refreshMinutes != null) { + const m = Number(p.refreshMinutes); + if (isFinite(m)) next.refreshMinutes = Math.max(0, Math.min(120, Math.round(m))); + } + if (['auto', 'light', 'dark'].indexOf(p.theme) >= 0) next.theme = p.theme; + if (p.proxy != null) next.proxy = String(p.proxy).slice(0, 200); + dbSet(K_SETTINGS, next); + return settings(); +} + +// ---------- 天气代码(WMO)→ 文案 + 图标 + 颜色组 ---------- +const WMO = { + 0: { t: '晴', day: '☀️', night: '🌙', g: 'clear' }, + 1: { t: '晴间多云', day: '🌤️', night: '🌙', g: 'clear' }, + 2: { t: '多云', day: '⛅', night: '☁️', g: 'cloud' }, + 3: { t: '阴', day: '☁️', night: '☁️', g: 'cloud' }, + 45: { t: '有雾', day: '🌫️', night: '🌫️', g: 'fog' }, + 48: { t: '冻雾', day: '🌫️', night: '🌫️', g: 'fog' }, + 51: { t: '毛毛雨', day: '🌦️', night: '🌧️', g: 'rain' }, + 53: { t: '小雨', day: '🌦️', night: '🌧️', g: 'rain' }, + 55: { t: '中雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 56: { t: '冻毛毛雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 57: { t: '冻雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 61: { t: '小雨', day: '🌦️', night: '🌧️', g: 'rain' }, + 63: { t: '中雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 65: { t: '大雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 66: { t: '冻雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 67: { t: '强冻雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 71: { t: '小雪', day: '🌨️', night: '🌨️', g: 'snow' }, + 73: { t: '中雪', day: '🌨️', night: '🌨️', g: 'snow' }, + 75: { t: '大雪', day: '❄️', night: '❄️', g: 'snow' }, + 77: { t: '雪粒', day: '🌨️', night: '🌨️', g: 'snow' }, + 80: { t: '阵雨', day: '🌦️', night: '🌧️', g: 'rain' }, + 81: { t: '强阵雨', day: '🌧️', night: '🌧️', g: 'rain' }, + 82: { t: '暴雨', day: '⛈️', night: '⛈️', g: 'storm' }, + 85: { t: '阵雪', day: '🌨️', night: '🌨️', g: 'snow' }, + 86: { t: '强阵雪', day: '❄️', night: '❄️', g: 'snow' }, + 95: { t: '雷阵雨', day: '⛈️', night: '⛈️', g: 'storm' }, + 96: { t: '雷阵雨伴冰雹', day: '⛈️', night: '⛈️', g: 'storm' }, + 99: { t: '强雷暴冰雹', day: '⛈️', night: '⛈️', g: 'storm' } +}; +function wmo(code, isDay) { + const has = code !== null && code !== undefined && code !== '' && isFinite(Number(code)); + const c = Number(code); + const m = has ? (WMO[c] || { t: '未知', day: '🌡️', night: '🌡️', g: 'cloud' }) + : { t: '未知', day: '🌡️', night: '🌡️', g: 'cloud' }; + return { code: has ? c : null, text: m.t, icon: isDay ? m.day : m.night, group: m.g }; +} + +// ---------- 中国空气质量指数(HJ 633-2012 六级分段) ---------- +const AQI_LEVELS = [ + { max: 50, label: '优', color: 'good' }, + { max: 100, label: '良', color: 'fair' }, + { max: 150, label: '轻度污染', color: 'warn' }, + { max: 200, label: '中度污染', color: 'warn' }, + { max: 300, label: '重度污染', color: 'bad' }, + { max: Infinity, label: '严重污染', color: 'bad' } +]; +// 污染物 24 小时平均浓度上限 → 指数上限(pm/o3/so2/no2 用 μg/m³,CO 单独用 mg/m³) +const AQI_BREAK = { + so2: [[50, 50], [150, 100], [475, 200], [800, 300], [1600, 400], [Infinity, 500]], + no2: [[40, 50], [80, 100], [180, 200], [280, 300], [565, 400], [Infinity, 500]], + pm10: [[50, 50], [150, 100], [250, 200], [350, 300], [420, 400], [Infinity, 500]], + pm2_5: [[35, 50], [75, 100], [115, 150], [150, 200], [250, 300], [350, 400], [Infinity, 500]], + o3: [[160, 50], [200, 100], [300, 150], [400, 200], [800, 300], [1000, 400], [Infinity, 500]], + co: [[5, 50], [10, 100], [35, 200], [60, 300], [90, 400], [Infinity, 500]] +}; +const AQI_NAME = { so2: 'SO₂', no2: 'NO₂', pm10: 'PM10', pm2_5: 'PM2.5', o3: 'O₃', co: 'CO' }; +// 展示单位:CO 换算成 mg/m³,其余保持 μg/m³ +const AQI_UNIT = { so2: 'μg/m³', no2: 'μg/m³', pm10: 'μg/m³', pm2_5: 'μg/m³', o3: 'μg/m³', co: 'mg/m³' }; +// 换算到分段表所需单位:Open-Meteo 全部返回 μg/m³,CO 的国标分段用 mg/m³ +function toBreakUnit(key, conc) { return key === 'co' ? conc / 1000 : conc; } +function toShowUnit(key, conc) { return key === 'co' ? conc / 1000 : conc; } + +/** 单污染物指数:在所属分段内线性插值(浓度→指数);超出上限段直接取该段指数上限 */ +function subIndex(conc, breaks) { + if (!isFinite(conc) || conc < 0) return null; + let i = 0; + while (i < breaks.length && !(conc <= breaks[i][0] || breaks[i][0] === Infinity)) i++; + if (i >= breaks.length) i = breaks.length - 1; + const upHi = breaks[i][1]; + const upLo = i === 0 ? 0 : breaks[i - 1][1]; + const conLo = i === 0 ? 0 : breaks[i - 1][0]; + const conHi = breaks[i][0]; + if (!isFinite(conHi)) return Math.round(upHi); + const v = upLo + (conc - conLo) / (conHi - conLo) * (upHi - upLo); + return Math.max(0, Math.min(500, v)); +} +function aqiLevel(v) { + const n = isFinite(v) ? v : 0; + return AQI_LEVELS.find((l) => n <= l.max) || AQI_LEVELS[AQI_LEVELS.length - 1]; +} +function computeAqi(conc) { + let best = 0, primary = null; + const parts = []; + Object.keys(AQI_BREAK).forEach((k) => { + const raw = Number(conc[k]); + if (!isFinite(raw) || raw < 0) return; + const v = subIndex(toBreakUnit(k, raw), AQI_BREAK[k]); + if (v == null) return; + const shown = toShowUnit(k, raw); + parts.push({ + key: k, name: AQI_NAME[k], value: Math.round(v), + conc: Math.round(shown * 10) / 10, unit: AQI_UNIT[k] + }); + if (v > best) { best = v; primary = k; } + }); + if (primary == null) return null; + const rounded = Math.round(best); + const lv = aqiLevel(rounded); + return { + value: rounded, level: lv.label, color: lv.color, primary: AQI_NAME[primary], + primaryKey: primary, parts: parts + }; +} + +// ---------- HTTP:直连优先,失败再走代理 ---------- +const net = require('net'); +const tls = require('tls'); + +function proxyCandidates(setting) { + const s = (setting == null ? settings().proxy : String(setting || '')).trim(); + if (s === '' || s === 'off') return []; + if (s !== 'auto') return [s]; + // auto:探测常见本地代理端口(Clash Verge 默认 7897,Clash 默认 7890, + // v2rayN 10809,Shadowsocks 1080;7891 是本机实际在用的那个)。 + // 顺序按「本机实测开着优先」——7891 排最前,否则 4 次 ECONNREFUSED 会白等一轮超时。 + return ['http://127.0.0.1:7891', 'http://127.0.0.1:7897', 'http://127.0.0.1:7890', + 'http://127.0.0.1:10809', 'http://127.0.0.1:1080']; +} + +/** 经 HTTP 代理发 GET:CONNECT 隧道 + 手动 TLS,手写解析(只处理本插件用到的响应形态) */ +function getViaProxy(url, proxy, timeoutMs) { + return new Promise((resolve, reject) => { + let u, ph, pp; + try { + u = new URL(url); + const p = new URL(proxy.indexOf('://') >= 0 ? proxy : 'http://' + proxy); + ph = p.hostname; pp = Number(p.port) || 80; + } catch (e) { return reject(new Error('代理地址无效:' + proxy)); } + + const port = u.port ? Number(u.port) : (u.protocol === 'https:' ? 443 : 80); + const head = 'GET ' + (u.pathname + u.search) + ' HTTP/1.1\r\n' + + 'Host: ' + u.host + '\r\n' + + 'User-Agent: ztools-weather\r\n' + + 'Accept: application/json\r\n' + + 'Accept-Encoding: identity\r\n' + + 'Connection: close\r\n\r\n'; + + let done = false; + const finish = (err, val) => { if (done) return; done = true; clearTimeout(timer); try { sock.destroy(); } catch (e) {} err ? reject(err) : resolve(val); }; + const sock = net.connect(pp, ph); + const timer = setTimeout(() => finish(new Error('经 ' + proxy + ' 请求超时')), timeoutMs || 20000); + sock.on('error', (e) => finish(new Error('经 ' + proxy + ' 连接失败:' + (e.code || e.message)))); + + let handshake = Buffer.alloc(0); + let sec = null; + + const onTunnel = (chunk) => { + handshake = Buffer.concat([handshake, chunk]); + const i = handshake.indexOf('\r\n\r\n'); + if (i < 0) return; + const statusLine = handshake.slice(0, handshake.indexOf('\r\n')).toString('latin1'); + if (!/ 200 /.test(statusLine)) { return finish(new Error('代理拒绝 CONNECT:' + statusLine)); } + const rest = handshake.slice(i + 4); + sec = u.protocol === 'https:' + ? tls.connect({ socket: sock, servername: u.hostname, rejectUnauthorized: false }) + : sock; + sec.setTimeout(timeoutMs || 20000, () => finish(new Error('经 ' + proxy + ' 读取超时'))); + sec.on('error', (e) => finish(new Error('TLS 握手失败:' + (e.code || e.message)))); + sec.on('data', (d) => { sec.removeListener('data', onTunnel); acc.push(d); maybeDone(); }); + sec.write(head); + if (rest.length) acc.push(rest); + }; + + const acc = []; + let parsed = false; + const maybeDone = () => { + if (parsed) return; + const buf = Buffer.concat(acc); + const i = buf.indexOf('\r\n\r\n'); + if (i < 0) return; + const headTxt = buf.slice(0, i).toString('latin1'); + const m = /HTTP\/1\.[01] (\d{3})/.exec(headTxt); + const status = m ? Number(m[1]) : 0; + let body = buf.slice(i + 4); + if (/transfer-encoding:\s*chunked/i.test(headTxt)) body = dechunk(body); + if (!/\r\n0\r\n?$/.test(String.fromCharCode.apply(null, buf.slice(-8))) && body.length === 0 && sec.destroyed !== true) return; + parsed = true; + resolve({ status: status, body: body.toString('utf8') }); + clearTimeout(timer); + try { sec.destroy(); } catch (e) {} + }; + + if (u.protocol === 'https:') { + sock.on('data', (chunk) => { if (!sec) onTunnel(chunk); }); + sock.on('connect', () => sock.write('CONNECT ' + u.hostname + ':' + port + ' HTTP/1.1\r\nHost: ' + u.host + ':' + port + '\r\n\r\n')); + } else { + sock.on('connect', () => { acc = []; sock.write(head); }); + sock.on('data', (d) => { acc.push(d); maybeDone(); }); + } + }); +} + +function dechunk(buf) { + let out = Buffer.alloc(0), pos = 0; + for (;;) { + const nl = buf.indexOf('\r\n', pos); + if (nl < 0) break; + const size = parseInt(buf.slice(pos, nl).toString('latin1').split(';')[0], 16); + if (!isFinite(size)) break; + if (size === 0) break; + const start = nl + 2; + out = Buffer.concat([out, buf.slice(start, start + size)]); + pos = start + size + 2; + } + return out; +} + +async function httpGet(url, { timeout = 20000, retries = 2 } = {}) { + const ctl = new AbortController(); + const timer = setTimeout(() => ctl.abort(), timeout); + const errors = []; + try { + let res = null; + for (let attempt = 0; attempt <= retries; attempt++) { + try { + res = await fetch(url, { signal: ctl.signal, headers: { Accept: 'application/json' } }); + break; + } catch (e) { + const cause = e && e.cause ? ' · ' + (e.cause.code || e.cause.message || e.cause) : ''; + errors.push((e && e.message ? e.message : String(e)) + cause); + if (ctl.signal.aborted) break; + await sleep(800 * (attempt + 1)); + } + } + if (res) { + if (!res.ok) return { status: res.status, body: '' }; + return { status: res.status, body: await res.text() }; + } + } finally { + clearTimeout(timer); + } + // 直连失败 → 依次尝试本地代理 + for (const proxy of proxyCandidates(null)) { + try { + return await getViaProxy(url, proxy, timeout); + } catch (e) { errors.push(e.message); } + } + throw new Error('网络请求失败(直连与本地代理都试过):' + errors.slice(-2).join(' | ')); +} + +async function getJson(url, opts) { + const r = await httpGet(url, opts); + if (r.status === 429) throw new Error('接口限流(429),请稍后再试'); + if (r.status !== 200 || !r.body) throw new Error('接口返回 HTTP ' + (r.status || '无响应')); + try { return JSON.parse(r.body); } catch (e) { throw new Error('接口返回的不是合法 JSON'); } +} + +// ---------- 接口调用 ---------- +const FORECAST = 'https://api.open-meteo.com/v1/forecast'; +const AIR = 'https://air-quality-api.open-meteo.com/v1/air-quality'; +const GEOCODE = 'https://geocoding-api.open-meteo.com/v1/search'; +const REVERSE = 'https://api.bigdatacloud.net/data/reverse-geocode-client'; +const IPGEO = 'https://get.geojs.io/v1/ip/geo.json'; + +function q(obj) { + return Object.keys(obj) + .filter((k) => obj[k] !== undefined && obj[k] !== null && obj[k] !== '') + .map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])) + .join('&'); +} + +/** + * 统一城市检索:本地拼音索引优先(瞬时、覆盖国内 338 城),再补 Open-Meteo 远端(覆盖国外/小城)。 + * 远端失败不影响本地结果——拼音检索是主路径,不能被网络拖垮。 + */ +async function searchCities(name, { limit = 10 } = {}) { + const key = String(name || '').trim(); + if (!key) return []; + const local = searchCitiesLocal(key, { limit: limit }); + let remote = []; + try { + const data = await getJson(GEOCODE + '?' + q({ + name: key, count: Math.min(20, Math.max(1, limit * 2)), language: 'zh', format: 'json' + })); + const list = Array.isArray(data.results) ? data.results : []; + list.sort((a, b) => { + const ea = a.name === key ? 0 : 1, eb = b.name === key ? 0 : 1; + if (ea !== eb) return ea - eb; + return (b.population || 0) - (a.population || 0); + }); + remote = list.slice(0, limit).map((r) => ({ + name: r.name, admin: r.admin1 || '', country: r.country || '', + lat: r.latitude, lon: r.longitude, tz: r.timezone || '', + detail: [r.admin1, r.admin2].filter(Boolean).join(' · ') || r.country || '', + local: false + })); + } catch (e) { remote = []; } + + // 合并:本地索引优先(它是中国地级市,权威且带拼音),远端只补本地没有的。 + // 两层去重,各有各的必要性: + // ① 按名字+省:同名同省的重复 + // ② 按坐标(容差 0.05°):同一地点的不同写法 + // ③ 按名字 + 行政级别:Open-Meteo 里「南阳」有两个——河南地级市,和甘肃陇南市辖下的 + // 同名村庄。两者坐标差 8 度,②抓不到;但用户搜「南阳」想要的一定是河南那个。 + // 本地索引只收地级市,所以「本地已有同名 → 远端同名一律丢弃」。 + const merged = []; + const seenName = {}; + const localNames = {}; + local.forEach((r) => { localNames[r.name] = true; }); + const seenCoord = []; + function coordTaken(la, lo) { + for (let i = 0; i < seenCoord.length; i++) { + if (Math.abs(seenCoord[i][0] - la) < 0.05 && Math.abs(seenCoord[i][1] - lo) < 0.05) return true; + } + return false; + } + local.concat(remote).forEach(function (r) { + if (!r.local && localNames[r.name]) return; // ③ + const k = r.name + '|' + (r.admin || ''); + if (seenName[k]) return; // ① + if (coordTaken(r.lat, r.lon)) return; // ② + seenName[k] = 1; + seenCoord.push([r.lat, r.lon]); + merged.push(r); + }); + return merged.slice(0, Math.max(limit, local.length)); +} + +async function reverseGeocode(lat, lon) { + const d = await getJson(REVERSE + '?' + q({ latitude: lat, longitude: lon, localityLanguage: 'zh' })); + const name = d.city || d.locality || d.principalSubdivision || ''; + if (!name) throw new Error('这个坐标附近没有可识别的城市名'); + return { + name: name, admin: d.principalSubdivision || '', country: d.countryName || '', + lat: Number(d.latitude), lon: Number(d.longitude) + }; +} + +/** IP 粗定位:只能给一个大致城市,用户确认后才加入 */ +async function guessCity() { + if (dbGet(K_AUTOLOC)) return null; + try { + const g = await getJson(IPGEO, { timeout: 8000, retries: 0 }); + const lat = Number(g.latitude), lon = Number(g.longitude); + if (!isFinite(lat) || !isFinite(lon)) return null; + let base = { name: g.city || g.region || '当前位置', admin: g.region || '', country: g.country || '', lat: lat, lon: lon, tz: g.timezone || '' }; + try { + const rev = await reverseGeocode(lat, lon); + if (rev.name) base = Object.assign(base, rev); + } catch (e) { /* 逆地编码失败就用 IP 给的名字 */ } + dbSet(K_AUTOLOC, Date.now()); + return base; + } catch (e) { return null; } +} + +function shapeWeather(w) { + const cur = w.current || {}; + const isDay = cur.is_day === undefined ? true : !!cur.is_day; + const hourly = w.hourly || {}; + const ht = hourly.time || []; + const daily = w.daily || {}; + const dt = daily.time || []; + + const hours = []; + for (let i = 0; i < ht.length; i++) { + hours.push({ + time: ht[i], // 城市本地时间,直接切片显示,不要再按时区换算 + hour: Number(ht[i].slice(11, 13)), + temp: hourly.temperature_2m ? hourly.temperature_2m[i] : null, + feels: hourly.apparent_temperature ? hourly.apparent_temperature[i] : null, + pop: hourly.precipitation_probability ? hourly.precipitation_probability[i] : null, + code: hourly.weather_code ? hourly.weather_code[i] : null, + isDay: hourly.is_day ? !!hourly.is_day[i] : true, + hum: hourly.relative_humidity_2m ? hourly.relative_humidity_2m[i] : null + }); + } + // 从「当前所在整点」开始取未来 24 小时。 + // 坑:按 hour 字段找会命中当天 00:00,导致从凌晨开始画而不是从现在。 + // 正确做法是按完整的本地时间串比较:找最后一个 time <= current.time 的下标。 + const nowTime = cur.time || ''; + let startIdx = 0; + for (let i = 0; i < ht.length; i++) { + if (ht[i] <= nowTime) startIdx = i; else break; + } + // 若接口只给了未来数据(没有覆盖当前整点),退回第一个点 + if (ht.length && ht[0] > nowTime) startIdx = 0; + const next24 = hours.slice(startIdx, startIdx + 24); + + const days = []; + for (let i = 0; i < dt.length; i++) { + days.push({ + date: dt[i], + code: daily.weather_code ? daily.weather_code[i] : null, + max: daily.temperature_2m_max ? daily.temperature_2m_max[i] : null, + min: daily.temperature_2m_min ? daily.temperature_2m_min[i] : null, + feelsMax: daily.apparent_temperature_max ? daily.apparent_temperature_max[i] : null, + feelsMin: daily.apparent_temperature_min ? daily.apparent_temperature_min[i] : null, + rain: daily.precipitation_sum ? daily.precipitation_sum[i] : null, + pop: daily.precipitation_probability_max ? daily.precipitation_probability_max[i] : null, + wind: daily.wind_speed_10m_max ? daily.wind_speed_10m_max[i] : null, + windDir: daily.wind_direction_10m_dominant ? daily.wind_direction_10m_dominant[i] : null, + uv: daily.uv_index_max ? daily.uv_index_max[i] : null, + sunrise: daily.sunrise ? daily.sunrise[i] : '', + sunset: daily.sunset ? daily.sunset[i] : '' + }); + } + + return { + city: null, + current: { + time: cur.time || '', isDay: isDay, + temp: cur.temperature_2m, feels: cur.apparent_temperature, hum: cur.relative_humidity_2m, + code: cur.weather_code, precip: cur.precipitation, cloud: cur.cloud_cover, + wind: cur.wind_speed_10m, windDir: cur.wind_direction_10m, gust: cur.wind_gusts_10m, + pressure: cur.surface_pressure + }, + today: days[0] || null, + hours: next24, + days: days, + timezone: w.timezone || '', utcOffset: Number(w.utc_offset_seconds) || 0, elevation: w.elevation + }; +} + +function shapeAir(a) { + const hourly = a.hourly || {}; + const ht = hourly.time || []; + const cur = a.current || {}; + const nowTime = cur.time || (ht.length ? ht[ht.length - 1] : ''); + // 中国 AQI 用「最近 24 小时各污染物浓度均值」:取不晚于当前小时的 24 个点。 + // 坑:接口 hourly 从 00:00 起,只有 1 天;直接全部平均等于当日累计,不是滚动 24h。 + // 统一做法与天气一致:按本地时间串找最后一个 <= nowTime 的下标。 + let idx = 0; + for (let i = 0; i < ht.length; i++) { + if (ht[i] <= nowTime) idx = i; else break; + } + if (ht.length && ht[0] > nowTime) idx = 0; + const from = Math.max(0, idx - 23); + const avg = {}; + // 内部键用缩写,字段名用接口返回的全称 + const POLLUTANTS = [ + ['pm2_5', 'pm2_5'], ['pm10', 'pm10'], + ['so2', 'sulphur_dioxide'], ['no2', 'nitrogen_dioxide'], + ['co', 'carbon_monoxide'], ['o3', 'ozone'] + ]; + POLLUTANTS.forEach(function (pair) { + const arr = hourly[pair[1]]; + if (!Array.isArray(arr)) return; + let sum = 0, n = 0; + for (let i = from; i <= idx; i++) { const v = Number(arr[i]); if (isFinite(v)) { sum += v; n++; } } + if (n) avg[pair[0]] = sum / n; + }); + return { + now: { + time: nowTime, + pm2_5: cur.pm2_5, pm10: cur.pm10, + usAqi: cur.us_aqi, euAqi: cur.european_aqi + }, + avg24: avg, + aqi: computeAqi(avg) + }; +} + +async function loadCity(city, { force = false, minAgeMs = 5 * 60 * 1000 } = {}) { + if (!city) throw new Error('没有可用城市'); + const key = kCache(city.id); + const cached = dbGet(key); + if (!force && cached && Date.now() - (cached.fetchedAt || 0) < minAgeMs) { + return Object.assign({}, cached, { stale: true, city: publicCity(city) }); + } + const coords = q({ + latitude: city.lat, longitude: city.lon, + current: 'temperature_2m,relative_humidity_2m,apparent_temperature,is_day,precipitation,weather_code,cloud_cover,surface_pressure,wind_speed_10m,wind_direction_10m,wind_gusts_10m', + hourly: 'temperature_2m,apparent_temperature,precipitation_probability,weather_code,is_day,relative_humidity_2m', + daily: 'weather_code,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,precipitation_sum,precipitation_probability_max,wind_speed_10m_max,wind_direction_10m_dominant,uv_index_max,sunrise,sunset', + timezone: 'auto', forecast_days: '7' + }); + const airParams = q({ + latitude: city.lat, longitude: city.lon, + current: 'pm10,pm2_5,us_aqi,european_aqi', + // 坑:接口认全称 sulphur_dioxide / nitrogen_dioxide / carbon_monoxide / ozone, + // 写 so2/no2/co 会整体 400(报 SurfacePressureAndHeightVariable 之类看不懂的错)。 + hourly: 'pm10,pm2_5,sulphur_dioxide,nitrogen_dioxide,carbon_monoxide,ozone', + timezone: 'auto', forecast_days: '1' + }); + + const [weather, air] = await Promise.all([ + getJson(FORECAST + '?' + coords), + getJson(AIR + '?' + airParams).catch(() => null) // 空气质量失败不影响主界面 + ]); + + const shaped = shapeWeather(weather); + shaped.city = publicCity(city); + shaped.air = air ? shapeAir(air) : null; + shaped.fetchedAt = Date.now(); + shaped.stale = false; + dbSet(key, shaped); + return shaped; +} + +// ---------- 系统能力转发 ---------- +function openExternal(url) { + const z = ZT(); + if (z.shellOpenExternal) return z.shellOpenExternal(url); + if (z.openExternal) return z.openExternal(url); + if (z.shellOpenPath) return z.shellOpenPath(url); + return null; +} +function copy(text) { + const z = ZT(); + if (z.copyText) return z.copyText(String(text || '')); + return null; +} +function notify(body) { + const z = ZT(); + if (z.showNotification) return z.showNotification(String(body || '')); + if (z.showToast) return z.showToast(String(body || '')); + return null; +} +/** 主题:宿主权威接口优先,取不到再按系统偏好兜底 */ +function theme() { + const z = ZT(); + try { + if (typeof z.isDarkColors === 'function') return { isDark: !!z.isDarkColors(), source: 'ztools' }; + } catch (e) { /* 落到下面 */ } + try { + if (typeof z.getThemeInfo === 'function') { + const t = z.getThemeInfo(); + if (t && typeof t.isDark === 'boolean') return { isDark: t.isDark, source: 'themeInfo' }; + } + } catch (e) { /* ignore */ } + return { isDark: false, source: 'default' }; +} +function onThemeChange(cb) { + const z = ZT(); + if (typeof z.onThemeChange === 'function') { try { z.onThemeChange(cb); return true; } catch (e) { return false; } } + return false; +} + +function buildShareText(data) { + if (!data || !data.current) return ''; + const c = data.city || {}; + const w = wmo(data.current.code, data.current.isDay); + const t = data.today; + const parts = [ + (c.label || '当前位置') + ' ' + w.icon + ' ' + w.text, + '现在 ' + (data.current.temp != null ? Math.round(data.current.temp) + '°' : '--') + + '(体感 ' + (data.current.feels != null ? Math.round(data.current.feels) + '°' : '--') + ')' + ]; + if (t) parts.push('今日 ' + Math.round(t.min) + '° ~ ' + Math.round(t.max) + '°' + (t.pop ? ' · 降水概率 ' + t.pop + '%' : '')); + if (data.air && data.air.aqi) parts.push('空气 ' + data.air.aqi.value + ' ' + data.air.aqi.level + '(' + data.air.aqi.primary + ')'); + if (t && t.sunrise) parts.push('日出 ' + t.sunrise.slice(11) + ' · 日落 ' + String(t.sunset || '').slice(11)); + return parts.join('\n'); +} + +// ---------- 暴露给页面 ---------- +const services = { + // 城市簿 + listCities: () => ({ cities: cities().map(publicCity), current: currentId() }), + addCity: addCity, + removeCity: removeCity, + updateCity: updateCity, + setCurrent: setCurrent, + searchCities: searchCities, + searchCitiesLocal: searchCitiesLocal, + reverseGeocode: reverseGeocode, + guessCity: guessCity, + // 数据 + loadCity: loadCity, + getCache: (id) => { + const cid = id || currentId(); + if (!cid) return null; + const c = dbGet(kCache(cid)); + if (!c) return null; + const city = cities().find((x) => x.id === cid); + return Object.assign({}, c, { stale: true, city: city ? publicCity(city) : null }); + }, + // 设置 / 其它 + getSettings: settings, + patchSettings: patchSettings, + theme: theme, + onThemeChange: onThemeChange, + wmo: wmo, + aqiLevel: aqiLevel, + buildShareText: buildShareText, + openExternal: openExternal, + copy: copy, + notify: notify +}; + +if (typeof window !== 'undefined') { + // ZTools 插件视图 contextIsolation=false,preload 与页面同 realm,直接挂 window 最稳; + // 同时尝试 contextBridge,双保险。 + var exposedBridge = false; + try { + var bridge = window.contextBridge; + if (bridge && typeof bridge.exposeInMainWorld === 'function') { + bridge.exposeInMainWorld('services', services); + exposedBridge = true; + } + } catch (e) { /* 走下方兜底 */ } + if (!exposedBridge) { + try { window.services = services; } catch (e) { /* 不可写则放弃 */ } + } + // ⚠⚠ 绝对不要在这里写 mode: 'none'。 + // 宿主 preload 有这么一段:收到 'get-plugin-mode' 就读 + // window.exports[featureCode].mode + // 直接拿它当插件形态,'none' = 无界面插件 → setExpendHeight(0) → 界面高度为 0,表现为「打不开」。 + // 日志里长这样: + // [Plugin] 设置插件高度: 0 + // [Plugin] 调用无界面插件方法: { featureCode: 'weather' } + // stage: 'process-mode-headless' + // 想要有界面,正确写法是 mode: 'web'(或干脆不给 mode,宿主按 plugin.json 的 main 判定)。 + // uTools 兼容只需要 exports 对象存在,不需要 mode 字段。 + try { + window.exports = { + 'weather': { mode: 'web', args: { enter() {}, leave() {} } }, + 'weather-push': { mode: 'web', args: { enter() {}, leave() {} } } + }; + } catch (e) { /* ignore */ } +} + +module.exports = services; diff --git a/plugins/ztools-weather/style.css b/plugins/ztools-weather/style.css new file mode 100644 index 000000000..ae02a49fc --- /dev/null +++ b/plugins/ztools-weather/style.css @@ -0,0 +1,298 @@ +/* 天气助手 · 主题与布局 + 亮色为 :root 基线,@media(prefers-color-scheme: dark) 兜底, + JS 拿到宿主结论后再给 body 加 .dark/.light(class 优先级高于媒体查询)。 + 每个样式表顶部必须有 [hidden] 兜底:作者样式里给元素写了 display, + 会静默压掉 UA 的 [hidden]{display:none}。 */ + +[hidden] { display: none !important; } + +:root { + color-scheme: light dark; + --bg: #f4f6fa; + --card: #ffffff; + --card2: #f8fafc; + --line: #e2e8f0; + --fg: #0f172a; + --fg2: #3f4c60; + /* --muted 必须满足 WCAG AA:在 --bg(#f4f6fa) 上对比度 ≥4.5:1。 + #7c8aa0 只有 3.2:1,浅灰小字看不清,已调深到 #59637a(实测 5.4:1)。 */ + --muted: #59637a; + --accent: #0284c7; + --accent-fg: #ffffff; + --good: #059669; + --fair: #65a30d; + --warn: #ea580c; + --bad: #dc2626; + --shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 16px rgba(15, 23, 42, .06); + --radius: 14px; +} +@media (prefers-color-scheme: dark) { + :root { + --bg: #0b1220; + --card: #141d2e; + --card2: #1a2537; + --line: #26314a; + --fg: #e8eefb; + --fg2: #a9b6cd; + --muted: #7e8ca6; + --accent: #38bdf8; + --accent-fg: #04263a; + --shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .35); + } +} +body.dark { + --bg: #0b1220; --card: #141d2e; --card2: #1a2537; --line: #26314a; + --fg: #e8eefb; --fg2: #a9b6cd; --muted: #7e8ca6; --accent: #38bdf8; --accent-fg: #04263a; + --shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .35); +} +body.light { + --bg: #f4f6fa; --card: #ffffff; --card2: #f8fafc; --line: #e2e8f0; + --fg: #0f172a; --fg2: #3f4c60; --muted: #59637a; --accent: #0284c7; --accent-fg: #ffffff; + --shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 16px rgba(15, 23, 42, .06); +} + +* { box-sizing: border-box; } +html, body { margin: 0; padding: 0; } +body { + background: var(--bg); + color: var(--fg); + font: 14px/1.5 -apple-system, "Segoe UI", "Microsoft YaHei", system-ui, sans-serif; + padding-bottom: 14px; + /* ⚠ 这里不能设 overflow-x: hidden。 + 只要 html/body 上有 overflow-x/y ≠ visible,position:sticky 就会失效—— + 浏览器会把元素「吸附容器」当成那个带 overflow 的盒子,滚动容器一变 sticky 就废了, + 顶栏于是跟着内容滚走。横向溢出改在 .topbar / 各滚动容器(.cities、.results)上单独处理。 */ +} +.muted { color: var(--muted); } +.small { font-size: 12px; } +button, input, select { font-family: inherit; font-size: 14px; color: var(--fg); } +button { cursor: pointer; } + +/* ---------- 顶栏 ---------- + 顶栏 / 搜索框 / 城市条 放在同一个 .topbar 容器里,整体 sticky。 + 为什么不能各sticky: 之前 .bar 和 .searchwrap 是兄弟,各自 sticky, + .searchwrap 写死 top:47px 去对齐「假定 47px 高的顶栏」——一旦顶栏换行、 + 字号或 padding 变了就错位;而且它会盖在 .cities 上(滚动时城市条被挡)。 + 合成一个容器后:下拉框展开时容器整体变高,把下方内容推开,而不是覆盖。 + 滚动时整个顶栏(含搜索框与城市条)一起固定。 */ +.topbar { + position: sticky; top: 0; z-index: 30; + background: var(--card); + overflow-x: clip; /* 顶栏自身不许横向溢出,但不建立滚动容器,sticky 仍有效 */ +} +.bar { + display: flex; align-items: center; gap: 10px; flex-wrap: wrap; + padding: 10px 14px; + border-bottom: 1px solid var(--line); +} +.brand { display: flex; align-items: center; gap: 8px; } +.brand img { width: 26px; height: 26px; border-radius: 7px; } +.brand b { font-size: 15px; } +.acts { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-wrap: wrap; } +#q { + width: 190px; max-width: 42vw; + padding: 6px 10px; border-radius: 9px; + border: 1px solid var(--line); background: var(--card2); + color: var(--fg); caret-color: var(--accent); +} +#q::placeholder { color: var(--muted); } +#q:focus { outline: 2px solid var(--accent); outline-offset: 1px; } +.bar button, .panel-f button { + padding: 6px 11px; border-radius: 9px; + border: 1px solid var(--line); background: var(--card2); color: var(--fg); +} +.bar button:hover, .panel-f button:hover { border-color: var(--accent); } +.primary { background: var(--accent) !important; color: var(--accent-fg) !important; border-color: var(--accent) !important; font-weight: 600; } +.ghost { background: transparent !important; border-color: var(--line) !important; } +.danger:hover { border-color: var(--bad) !important; color: var(--bad) !important; } + +/* ---------- 搜索框 + 下拉候选 ---------- */ +.searchbox { display: flex; align-items: center; gap: 8px; padding: 9px 14px; } +.sicon { font-size: 15px; opacity: .6; flex: 0 0 auto; } +#q { + flex: 1; min-width: 0; + padding: 8px 12px; border-radius: 10px; + border: 1px solid var(--line); background: var(--card2); + color: var(--fg); caret-color: var(--accent); font-size: 15px; +} +#q::placeholder { color: var(--muted); } +#q:focus { outline: 2px solid var(--accent); outline-offset: 1px; } +#q::-webkit-search-cancel-button { display: none; } +.qclear { + flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; + border: 1px solid var(--line); background: var(--card2); color: var(--muted); + font-size: 12px; line-height: 1; padding: 0; +} +.qclear:hover { border-color: var(--bad); color: var(--bad); } + +.results { max-height: 320px; overflow-y: auto; border-top: 1px solid var(--line); } +.results .r { + display: flex; align-items: center; gap: 10px; + padding: 9px 16px; cursor: pointer; border-bottom: 1px solid var(--line); +} +.results .r:last-child { border-bottom: 0; } +.results .r:hover, .results .r.on { background: var(--card2); } +.results .r.on { box-shadow: inset 3px 0 0 var(--accent); } +.r-name { font-weight: 600; font-size: 14px; } +.r-name mark { background: color-mix(in srgb, var(--accent) 26%, transparent); color: inherit; border-radius: 3px; padding: 0 1px; } +.r-sub { color: var(--muted); font-size: 12px; } +.r-py { + margin-left: auto; flex: 0 0 auto; + font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; + padding: 2px 7px; border-radius: 6px; background: var(--card2); border: 1px solid var(--line); +} +.r-py b { color: var(--accent); font-weight: 700; } +.results .none { padding: 14px 16px; color: var(--muted); text-align: center; font-size: 13px; } +.hint { padding: 0 16px 8px; font-size: 11px; color: var(--muted); } +.hint:empty, .hint[hidden] { display: none; } + +/* ---------- 城市条 ---------- */ +.cities { + display: flex; gap: 6px; padding: 9px 14px; overflow-x: auto; + background: var(--card); border-bottom: 1px solid var(--line); +} +.cities:empty { display: none; } +.chip { + flex: 0 0 auto; display: inline-flex; align-items: stretch; + border-radius: 999px; overflow: hidden; + border: 1px solid var(--line); background: var(--card); +} +.chip:hover { border-color: var(--accent); } +.chip.on { background: var(--accent); border-color: var(--accent); } +.chip-name { + padding: 5px 4px 5px 12px; border: 0; background: transparent; + color: var(--fg2); white-space: nowrap; border-radius: 999px 0 0 999px; +} +.chip-name:hover { background: transparent; } +.chip.on .chip-name { color: var(--accent-fg); font-weight: 600; } +/* 删除按钮:默认半透明,hover 或聚焦时才完全显形,避免视觉噪音 */ +.chip-x { + width: 22px; padding: 0; border: 0; background: transparent; + color: var(--muted); font-size: 15px; line-height: 1; + border-radius: 0 999px 999px 0; opacity: .5; +} +.chip-x:hover, .chip-x:focus-visible { opacity: 1; background: color-mix(in srgb, var(--bad) 22%, transparent); color: var(--bad); } +.chip.on .chip-x { color: var(--accent-fg); opacity: .75; } +.chip.on .chip-x:hover { background: color-mix(in srgb, #000 25%, transparent); color: #fff; } + +/* ---------- 卡片 ---------- */ +#view { display: grid; gap: 10px; padding: 0 14px; } +/* 两栏卡片:用 minmax(0,1fr) 而不是 1fr,否则内容(长数字 + 单位)会撑破列宽被切字。 + 窄窗口直接单栏,别硬挤。 */ +.grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 10px; } +@media (max-width: 560px) { .grid { grid-template-columns: minmax(0, 1fr); } } +.card { + min-width: 0; background: var(--card); border: 1px solid var(--line); + border-radius: var(--radius); padding: 11px 13px; box-shadow: var(--shadow); +} +.card-h { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); margin-bottom: 8px; } +.card-h span:last-child:not(:first-child) { margin-left: auto; } + +.now { + display: flex; gap: 14px; align-items: flex-start; + background: linear-gradient(135deg, var(--card) 0%, var(--card2) 100%); + border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; box-shadow: var(--shadow); +} +.now-left { min-width: 0; } +.now-temp { font-size: 44px; font-weight: 700; line-height: 1.05; letter-spacing: -1px; } +.now-temp i { font-size: 20px; font-style: normal; color: var(--muted); margin-left: 2px; } +.now-text { font-size: 15px; color: var(--fg2); } +.now-city { margin-top: 2px; font-size: 13px; color: var(--muted); } +.now-meta { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; } +.now-right { margin-left: auto; text-align: right; } +.now-icon { font-size: 52px; line-height: 1; } +.now-actions { margin-top: 10px; display: flex; gap: 6px; justify-content: flex-end; } +.now-actions button { padding: 4px 9px; border-radius: 8px; border: 1px solid var(--line); background: transparent; font-size: 12px; } + +.badge { padding: 2px 9px; border-radius: 999px; background: var(--card2); border: 1px solid var(--line); color: var(--fg2); font-weight: 600; } +.badge.good { background: color-mix(in srgb, var(--good) 16%, transparent); color: var(--good); border-color: color-mix(in srgb, var(--good) 40%, transparent); } +.badge.fair { background: color-mix(in srgb, var(--fair) 16%, transparent); color: var(--fair); border-color: color-mix(in srgb, var(--fair) 40%, transparent); } +.badge.warn { background: color-mix(in srgb, var(--warn) 16%, transparent); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); } +.badge.bad { background: color-mix(in srgb, var(--bad) 16%, transparent); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, transparent); } + +.aqi-main { font-size: 24px; font-weight: 700; margin-bottom: 6px; } +.aqi-main small { font-size: 12px; font-weight: 400; color: var(--muted); } +.chips { display: flex; flex-wrap: wrap; gap: 5px; } +.chips span { font-size: 11px; padding: 2px 7px; border-radius: 6px; background: var(--card2); border: 1px solid var(--line); color: var(--fg2); } + +.kv { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 5px 10px; font-size: 13px; } +.kv dt, .kv .k { color: var(--muted); } +.kv dd, .kv .v { + margin: 0; text-align: right; font-variant-numeric: tabular-nums; + overflow-wrap: anywhere; min-width: 0; +} + +/* ---------- 24 小时 ---------- */ +.hours { display: flex; gap: 4px; overflow-x: auto; padding-bottom: 4px; } +.hour { flex: 0 0 54px; text-align: center; font-size: 12px; color: var(--fg2); } +.hour b { display: block; font-weight: 600; font-variant-numeric: tabular-nums; } +.hour span { font-size: 17px; display: block; } +.hour em { font-style: normal; font-size: 11px; color: var(--muted); } +.chart { width: 100%; height: 150px; margin-top: 6px; display: block; overflow: visible; } +#day-chart { height: 120px; } +.chart .ln { fill: none; stroke: var(--accent); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; } +.chart .ln-min { fill: none; stroke: var(--muted); stroke-width: 1.6; stroke-dasharray: 4 4; } +.chart .bar { fill: color-mix(in srgb, var(--accent) 30%, transparent); } +.chart .grid { stroke: var(--line); stroke-width: 1; } +.chart text { fill: var(--muted); font-size: 10px; } +.chart .dot { fill: var(--accent); stroke: var(--card); stroke-width: 2; } + +/* ---------- 7 天 ---------- */ +.days { display: flex; flex-direction: column; } +.day { display: grid; grid-template-columns: 62px 26px 46px 1fr 78px; align-items: center; gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--line); } +.day:last-child { border-bottom: 0; } +.day .d1 { color: var(--fg2); } +.day .d2 { font-size: 19px; text-align: center; } +.day .d3 { text-align: right; color: var(--muted); font-variant-numeric: tabular-nums; } +.day .d4 { color: var(--muted); font-size: 11px; text-align: right; } +.day.today .d1 { color: var(--accent); font-weight: 700; } + +/* ---------- 空态 / 提示 / 对话框 ---------- */ +.empty { text-align: center; padding: 42px 20px; color: var(--fg2); } +.empty-icon { font-size: 46px; } +.empty p { margin: 6px 0; } +.toast { + position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%); + background: var(--fg); color: var(--card); padding: 8px 15px; border-radius: 999px; + font-size: 13px; z-index: 60; box-shadow: var(--shadow); max-width: 80vw; text-align: center; +} + +.mask { position: fixed; inset: 0; z-index: 48; background: rgba(0, 0, 0, .38); } +.dlg { + position: fixed; z-index: 50; left: 50%; top: 50%; transform: translate(-50%, -50%); + width: min(420px, calc(100vw - 32px)); max-height: calc(100vh - 60px); + display: flex; flex-direction: column; + background: var(--card); color: var(--fg); + border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 18px 48px rgba(0, 0, 0, .28); +} +.dlg-h { display: flex; align-items: center; padding: 13px 16px; border-bottom: 1px solid var(--line); } +.dlg-h b { font-size: 15px; } +.dlg-x { margin-left: auto; width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--line); background: var(--card2); color: var(--muted); font-size: 12px; padding: 0; } +.dlg-x:hover { border-color: var(--bad); color: var(--bad); } +.dlg-b { padding: 12px 16px; overflow-y: auto; display: grid; gap: 14px; } +.grp { display: grid; gap: 8px; } +.grp-t { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; } +.dlg-b .row { display: flex; align-items: center; gap: 10px; } +.dlg-b .lb { width: 76px; flex: 0 0 auto; color: var(--fg2); font-size: 13px; } +.seg { display: flex; flex: 1; gap: 4px; flex-wrap: wrap; } +.seg button { + flex: 1 1 auto; padding: 5px 9px; border-radius: 8px; font-size: 12px; + border: 1px solid var(--line); background: var(--card2); color: var(--fg2); +} +.seg button:hover { border-color: var(--accent); } +.seg button.on { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); font-weight: 600; } +.dlg-b select { flex: 1; padding: 6px 9px; border-radius: 8px; border: 1px solid var(--line); background: var(--card2); color: var(--fg); } +.note { margin: 0; font-size: 11px; line-height: 1.6; color: var(--muted); } +.dlg-f { display: flex; gap: 8px; justify-content: flex-end; padding: 11px 16px; border-top: 1px solid var(--line); } +.dlg-f button { padding: 7px 18px; border-radius: 9px; border: 1px solid var(--line); background: var(--card2); color: var(--fg); } +.sec:hover { border-color: var(--accent); } + +.err { color: var(--bad); } +.loading { color: var(--muted); } + +/* ---------- 滚动条 ---------- */ +::-webkit-scrollbar { width: 10px; height: 10px; } +::-webkit-scrollbar-thumb { border: 2px solid transparent; background-clip: padding-box; border-radius: 8px; background-color: color-mix(in srgb, var(--muted) 45%, transparent); } +::-webkit-scrollbar-thumb:hover { background-color: color-mix(in srgb, var(--muted) 70%, transparent); } +::-webkit-scrollbar-track { background: transparent; } +* { scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--muted) 45%, transparent) transparent; } diff --git a/plugins/ztools-weather/tests/fixture.js b/plugins/ztools-weather/tests/fixture.js new file mode 100644 index 000000000..b8b0d6590 --- /dev/null +++ b/plugins/ztools-weather/tests/fixture.js @@ -0,0 +1,218 @@ +/* UI 测试夹具:假 window.services + window.ztools,喂真实结构的数据。 + 由 tools/build-harness.py 注入到 index.html 的 app.js 之前。 */ +(function () { + 'use strict'; + + var W = window; + + // ---- 夹具数据(结构与 preload 的 shapeWeather/shapeAir 完全一致) ---- + function mkHour(i) { + var h = 14 + i; + var day = h >= 24 ? h - 24 : h; + var codes = [0, 0, 1, 2, 3, 61, 63, 80, 3, 2, 1, 0, 0, 1, 2, 2, 3, 61, 80, 81, 82, 95, 3, 2]; + return { + time: (i < 10 ? '2026-09-27T' : '2026-09-28T') + ('0' + day).slice(-2) + ':00', + hour: day, + temp: 24 + Math.round(Math.sin(i / 4) * 5 * 10) / 10, + feels: 26 + Math.round(Math.cos(i / 5) * 4 * 10) / 10, + pop: [5, 5, 0, 0, 10, 80, 90, 60, 20, 0, 0, 5, 5, 0, 10, 20, 40, 70, 85, 95, 100, 90, 40, 10][i], + code: codes[i], + isDay: day >= 6 && day <= 19, + hum: 60 + (i % 20) + }; + } + var HOURS = []; + for (var i = 0; i < 24; i++) HOURS.push(mkHour(i)); + + var DAYS = []; + for (var d = 0; d < 7; d++) { + // 用 Date 算真实日期,别用 27+d 拼字符串(27+6=33 → 09/32 这种非法日期) + var dt = new Date(2026, 8, 27 + d); + var ds = dt.getFullYear() + '-' + ('0' + (dt.getMonth() + 1)).slice(-2) + '-' + ('0' + dt.getDate()).slice(-2); + DAYS.push({ + date: ds, + code: [3, 61, 80, 0, 2, 95, 45][d], + max: [27.1, 24.3, 22.8, 28.6, 29.2, 23.4, 25.1][d], + min: [22.2, 20.1, 19.4, 21.0, 22.6, 18.8, 20.2][d], + feelsMax: 29.4, feelsMin: 22.0, + rain: [0, 8.2, 14.6, 0, 0, 21.3, 0.4][d], + pop: [12, 88, 95, 5, 10, 92, 35][d], + wind: [11.2, 18.4, 24.1, 9.8, 13.2, 28.6, 15.4][d], + windDir: [355, 45, 90, 180, 225, 270, 315][d], + uv: [1.15, 2.4, 1.8, 5.6, 6.2, 2.1, 3.4][d], + sunrise: ds + 'T06:54', + sunset: ds + 'T18:54' + }); + } + + function mkData(cityName, admin) { + return { + city: { id: 'c1', name: cityName, admin: admin, country: '中国', lat: 30.57, lon: 104.07, label: cityName + ' · ' + admin, source: 'search' }, + current: { + time: '2026-09-27T14:20', isDay: true, temp: 26.2, feels: 29.7, hum: 72, + code: 3, precip: 0, cloud: 75, wind: 4.0, windDir: 355, gust: 9.2, pressure: 1011.4 + }, + today: DAYS[0], + hours: HOURS, + days: DAYS, + timezone: 'Asia/Shanghai', utcOffset: 28800, elevation: 485, + air: { + now: { time: '2026-09-27T14:00', pm2_5: 35.7, pm10: 36.1, usAqi: 157, euAqi: 66 }, + avg24: { pm2_5: 62.9, pm10: 63.2, so2: 11, no2: 53.7, co: 1.77, o3: 68.3 }, + aqi: { + value: 100, level: '良', color: 'fair', primary: 'PM2.5', primaryKey: 'pm2_5', + parts: [ + { key: 'pm2_5', name: 'PM2.5', value: 100, conc: 62.9, unit: 'μg/m³' }, + { key: 'pm10', name: 'PM10', value: 76, conc: 63.2, unit: 'μg/m³' }, + { key: 'no2', name: 'NO₂', value: 74, conc: 53.7, unit: 'μg/m³' }, + { key: 'o3', name: 'O₃', value: 47, conc: 68.3, unit: 'μg/m³' }, + { key: 'so2', name: 'SO₂', value: 24, conc: 11, unit: 'μg/m³' }, + { key: 'co', name: 'CO', value: 44, conc: 1.8, unit: 'mg/m³' } + ] + } + }, + fetchedAt: Date.now(), stale: false + }; + } + + var CITIES = [ + { id: 'c1', name: '成都', admin: '四川省', country: '中国', lat: 30.57, lon: 104.07, label: '成都 · 四川省', source: 'guess' }, + { id: 'c2', name: '北京', admin: '北京市', country: '中国', lat: 39.9, lon: 116.4, label: '北京 · 北京市', source: 'search' }, + { id: 'c3', name: '上海', admin: '上海市', country: '中国', lat: 31.22, lon: 121.46, label: '上海 · 上海市', source: 'search' } + ]; + + var db = {}; + var calls = { copy: [], notify: [], open: [], height: [], load: [] }; + W.__current = 'c1'; // 当前城市状态,listCities/setCurrent/addCity/removeCity 共用 + + function clone(o) { return JSON.parse(JSON.stringify(o)); } + + W.services = { + // current 必须有状态:removeCity/setCurrent/addCity 都要读写它。 + // 之前各自硬编码 'c1',导致「删当前城市」这条根本测不出真实行为。 + listCities: function () { return { cities: clone(CITIES), current: W.__current }; }, + addCity: function (c) { + var id = 'c' + (CITIES.length + 1); + CITIES.push({ id: id, name: c.name, admin: c.admin || '', country: c.country || '', lat: c.lat, lon: c.lon, label: (c.name + (c.admin ? ' · ' + c.admin : '')), source: 'search' }); + W.__current = id; + return { cities: clone(CITIES), current: W.__current }; + }, + removeCity: function (id) { + // 与 preload.js 真实行为一致:只有删掉「当前城市」时才把 current 顺延到列表第一个; + // 删非当前城市不碰 current。夹具之前一律重置成 CITIES[0], + // 于是「删非当前城市不切走视图」这条永远测不出来。 + var cur = W.__current; + CITIES = CITIES.filter(function (x) { return x.id !== id; }); + if (cur === id) { cur = CITIES.length ? CITIES[0].id : null; W.__current = cur; } + return { cities: clone(CITIES), current: cur }; + }, + updateCity: function (id, p) { + CITIES.forEach(function (x) { if (x.id === id && p.name) x.name = p.name; }); + return { cities: clone(CITIES), current: W.__current }; + }, + setCurrent: function (id) { W.__current = id; return { cities: clone(CITIES), current: W.__current }; }, + // 远端(Open-Meteo):只认中文原文,不认拼音/首字母。 + // 这一点必须如实建模——远端对 'cd' 返回垃圾、对拼音返回空,才是真实行为。 + // 之前这里对任何输入都造一条 'q市',于是「无结果」用例永远测不出来。 + searchCities: function (q) { + var s = String(q || '').trim(); + if (!s) return Promise.resolve([]); + if (s === '空结果') return Promise.resolve([]); + if (s === 'cd') { + return Promise.resolve([ + { name: '成都', admin: '四川', country: '中国', lat: 30.57, lon: 104.07, tz: 'Asia/Shanghai', detail: '中国 四川', local: false }, + { name: '奥尔良', admin: '卢瓦雷', country: '法国', lat: 47.9, lon: 1.9, tz: 'Europe/Paris', detail: '法国 卢瓦雷', local: false } + ]); + } + // 只对「像真实中文地名」的输入造命中:2~6 个汉字,没有拉丁字母。 + // 'zzzz不存在' 这种要判为「找不到」——Open-Meteo 地理编码确实匹配不到它。 + // 之前这里对任何非 ASCII 输入都造一条 q,于是「无结果」用例永远测不出来。 + if (/^[一-龥]{2,6}$/.test(s)) { + return Promise.resolve([{ name: s, admin: '测试省', country: '中国', lat: 30, lon: 120, tz: 'Asia/Shanghai', detail: '测试省', local: false }]); + } + return Promise.resolve([]); + }, + // 本地拼音索引(同步返回,与 preload 真实行为一致) + searchCitiesLocal: function (q) { + var T = [ + { name: '成都', admin: '四川', pinyin: 'chengdu', initial: 'cd', detail: '四川 · 拼音 chengdu' }, + { name: '常德', admin: '湖南', pinyin: 'changde', initial: 'cd', detail: '湖南 · 拼音 changde' }, + { name: '承德', admin: '河北', pinyin: 'chengde', initial: 'cd', detail: '河北 · 拼音 chengde' }, + { name: '北京', admin: '北京', pinyin: 'beijing', initial: 'bj', detail: '北京 · 拼音 beijing' }, + { name: '上海', admin: '上海', pinyin: 'shanghai', initial: 'sh', detail: '上海 · 拼音 shanghai' }, + { name: '哈尔滨', admin: '黑龙江', pinyin: 'haerbin', initial: 'heb', detail: '黑龙江 · 拼音 haerbin' } + ]; + var s = String(q || '').trim().toLowerCase(); + if (!s) return []; + return T.filter(function (c) { + return c.name.indexOf(s) >= 0 || c.pinyin.indexOf(s) === 0 || c.initial === s || + (c.initial.indexOf(s) === 0 && s.length >= 2) || c.admin.indexOf(s) === 0; + }).slice(0, 12).map(function (c) { + return { name: c.name, admin: c.admin, country: '中国', lat: 30, lon: 120, tz: 'Asia/Shanghai', + detail: c.detail, pinyin: c.pinyin, initial: c.initial, local: true }; + }); + }, + reverseGeocode: function () { return Promise.resolve({ name: '某市', admin: '某省', country: '中国', lat: 30, lon: 120 }); }, + guessCity: function () { return Promise.resolve(null); }, // 已有城市时不该再猜 + loadCity: function (city, opts) { + calls.load.push({ id: city && city.id, force: !!(opts && opts.force) }); + var nm = (city && city.name) || '成都'; + var ad = (city && city.admin) || '四川省'; + var d = mkData(nm, ad); + d.stale = false; + // 与 preload.js 真实返回结构一致:loadCity 会把城市信息挂在 data.city 上 + // (shaped.city = publicCity(city))。少了它,测试就验不了「显示的是新当前城市的数据」。 + d.city = city ? { id: city.id, name: city.name, admin: city.admin, label: city.label } : null; + return Promise.resolve(d); + }, + getCache: function () { return null; }, + getSettings: function () { return db.settings || { tempUnit: 'C', windUnit: 'kmh', refreshMinutes: 5, theme: 'auto', proxy: 'auto' }; }, + patchSettings: function (p) { db.settings = Object.assign(db.settings || {}, p); return db.settings; }, + theme: function () { return { isDark: W.__DARK === true, source: 'ztools' }; }, + onThemeChange: function (cb) { W.__themeCb = cb; return true; }, + wmo: function (code, isDay) { + var M = { + 0: ['晴', '☀️', '🌙'], 1: ['晴间多云', '🌤️', '🌙'], 2: ['多云', '⛅', '☁️'], 3: ['阴', '☁️', '☁️'], + 45: ['有雾', '🌫️', '🌫️'], 61: ['小雨', '🌦️', '🌧️'], 63: ['中雨', '🌧️', '🌧️'], + 80: ['阵雨', '🌦️', '🌧️'], 82: ['暴雨', '⛈️', '⛈️'], 95: ['雷阵雨', '⛈️', '⛈️'] + }; + var m = M[code] || ['未知', '🌡️', '🌡️']; + return { code: code == null ? null : code, text: m[0], icon: isDay ? m[1] : m[2], group: 'x' }; + }, + aqiLevel: function (v) { + return [[50, '优', 'good'], [100, '良', 'fair'], [150, '轻度污染', 'warn'], [200, '中度污染', 'warn'], [300, '重度污染', 'bad'], [Infinity, '严重污染', 'bad']] + .filter(function (x) { return v <= x[0]; })[0] || ['严重污染', 'bad']; + }, + buildShareText: function (d) { + return d.city.name + ' ☁️ 阴\n现在 26°(体感 30°)\n今日 22° ~ 27°'; + }, + openExternal: function (u) { calls.open.push(u); return Promise.resolve(); }, + copy: function (t) { calls.copy.push(t); return Promise.resolve(); }, + notify: function (b) { calls.notify.push(b); return Promise.resolve(); } + }; + + W.ztools = { + isDarkColors: function () { return W.__DARK === true; }, + getThemeInfo: function () { return { isDark: W.__DARK === true, primaryColor: 'green' }; }, + onThemeChange: function (cb) { W.__themeCb = cb; }, + setExpendHeight: function (h) { calls.height.push(h); return Promise.resolve(); }, + onPluginEnter: function (cb) { W.__enterCb = cb; }, + onPluginOut: function (cb) { W.__outCb = cb; } + }; + + W.__calls = calls; + W.__cities = function () { return CITIES; }; + W.__setDb = function (o) { db = o || {}; }; + // 供 test-ui.js 恢复现场:前面的用例删过城市后 state.data 可能是 null, + // 后续断言需要一份可改的数据。直接塞回 state 并重渲染。 + W.__reloadFixtureData = function () { + var c = CITIES[0]; + if (!c) return Promise.resolve(null); + return Promise.resolve(W.services.loadCity(c, { force: false })).then(function (d) { + W.__state.data = d; + W.__state.loading = false; + if (typeof W.__render === 'function') W.__render(); + return d; + }); + }; +})(); diff --git a/plugins/ztools-weather/tests/test-preload.js b/plugins/ztools-weather/tests/test-preload.js new file mode 100644 index 000000000..0b0bb080e --- /dev/null +++ b/plugins/ztools-weather/tests/test-preload.js @@ -0,0 +1,357 @@ +/** + * 天气助手 · preload 无 UI 测试(node vm 造假 window.ztools) + * + * 跑法:node tests/test-preload.js + * 真打网络(Open-Meteo),无网时只有联网用例会红。 + */ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const vm = require('vm'); + +const PLUGIN = path.resolve(__dirname, '..'); + +let pass = 0; +const failures = []; +function ok(cond, name, extra) { + if (cond) { pass++; return; } + failures.push(name + (extra ? ' → ' + extra : '')); +} +function eq(a, b, name) { + ok(a === b, name, 'got ' + JSON.stringify(a) + ' want ' + JSON.stringify(b)); +} +function throwsAsync(fn, name) { + return fn().then( + () => { failures.push(name + ' → 应该抛错但没抛'); }, + () => { pass++; } + ); +} + +// ---------- 造宿主 ---------- +function makeHost() { + const store = new Map(); + const calls = { notify: [], copy: [], open: [], height: [] }; + const win = { + ztools: { + dbStorage: { + getItem: (k) => (store.has(k) ? JSON.parse(store.get(k)) : null), + setItem: (k, v) => { store.set(k, JSON.stringify(v === undefined ? null : v)); }, + removeItem: (k) => { store.delete(k); } + }, + isDarkColors: () => true, + getThemeInfo: () => ({ isDark: true, primaryColor: 'green' }), + onThemeChange: (cb) => { win._themeCb = cb; }, + showNotification: (b) => { calls.notify.push(b); return Promise.resolve(); }, + copyText: (t) => { calls.copy.push(t); return Promise.resolve(); }, + shellOpenExternal: (u) => { calls.open.push(u); return Promise.resolve(); }, + setExpendHeight: (h) => { calls.height.push(h); return Promise.resolve(); }, + getWindowType: () => 'main' + } + }; + win.window = win; + return { win, store, calls }; +} + +function loadServices(host) { + const ctx = vm.createContext({ + window: host.win, + globalThis: host.win, + require, process, console, Buffer, setTimeout, clearTimeout, setInterval, clearInterval, + module: { exports: {} }, exports: {}, + __dirname: PLUGIN, __filename: path.join(PLUGIN, 'preload.js'), + URL, fetch, AbortController + }); + vm.runInContext(fs.readFileSync(path.join(PLUGIN, 'preload.js'), 'utf8'), ctx, { filename: 'preload.js' }); + return host.win.services; +} + +(async function main() { + // ===== 1. 城市簿(纯逻辑) ===== + const h1 = makeHost(); + const s1 = loadServices(h1); + ok(!!s1, 'preload 暴露 window.services'); + eq(typeof s1.loadCity, 'function', 'services.loadCity 是函数'); + eq(Object.prototype.hasOwnProperty.call(h1.win, 'exports') ? h1.win.exports['weather'] !== undefined : false, true, + 'uTools 兼容 window.exports.weather 已定义'); + + // ⚠ 回归护栏:宿主 preload 读 window.exports[code].mode 决定插件形态。 + // mode:'none' = 无界面插件 → setExpendHeight(0) → 界面高度 0,表现为「打不开」。 + // 详见 preload.js 里的注释与 ~/.ztools/logs/main.log 的 'process-mode-headless'。 + const exp = h1.win.exports; + eq(exp.weather.mode, 'web', "exports.weather.mode 不是 'none'(否则插件变无界面、打不开)"); + eq(exp['weather-push'].mode, 'web', "exports['weather-push'].mode 不是 'none'"); + const src = fs.readFileSync(path.join(PLUGIN, 'preload.js'), 'utf8'); + // 只匹配真实的代码赋值,别被注释里出现的 "mode: 'none'" 文字误伤 + const noneAssign = /(^|[^\w])['"]?\w+['"]?\s*:\s*\{\s*mode\s*:\s*'none'/.exec(src); + ok(!noneAssign, "preload.js 没有 mode:'none' 的实际赋值", noneAssign && noneAssign[0]); + ok(/mode:\s*'web'/.test(src), 'preload.js 显式声明 mode: web'); + // 静态断言:注册表快照里必须有 main,否则宿主 isConfigHeadless 判定为真 + const pkg = JSON.parse(fs.readFileSync(path.join(PLUGIN, 'plugin.json'), 'utf8')); + ok(!!pkg.main, 'plugin.json 有 main(否则宿主判 isConfigHeadless)'); + ok(!!pkg.preload, 'plugin.json 有 preload'); + ok(!!pkg.logo, 'plugin.json 有 logo'); + const codes = (pkg.features || []).map((f) => f.code); + ok(codes.every((c) => exp[c] && exp[c].mode !== 'none'), + '每个 feature code 在 window.exports 里都不是 none 模式', JSON.stringify(codes)); + + eq(JSON.stringify(s1.listCities()), '{"cities":[],"current":null}', '初始城市列表为空'); + + const a = s1.addCity({ name: '北京', admin: '北京市', country: '中国', lat: 39.9075, lon: 116.39723, tz: 'Asia/Shanghai' }); + eq(a.cities.length, 1, '添加北京后有 1 个城市'); + eq(a.current, a.cities[0].id, '添加后自动选中'); + eq(a.cities[0].label, '北京 · 北京市', 'cityLabel 拼接城市+省份'); + + const dup = s1.addCity({ name: '北京市', lat: 39.9, lon: 116.39, admin: '北京市' }); + eq(dup.cities.length, 1, '同坐标城市被去重(不新增)'); + eq(dup.duplicated, true, '去重时返回 duplicated=true'); + eq(dup.current, dup.cities[0].id, '去重城市会被选为当前(不产生重复条目)'); + + const b = s1.addCity({ name: '上海', admin: '上海市', lat: 31.22222, lon: 121.45806 }); + eq(b.cities.length, 2, '添加上海后 2 个城市'); + eq(b.current, b.cities[1].id, '新添加的城市成为当前城市'); + + const s2c = s1.setCurrent(b.cities[1].id); + eq(s2c.current, b.cities[1].id, 'setCurrent 切换成功'); + let threw = false; + try { s1.setCurrent('nope'); } catch (e) { threw = true; } + ok(threw, 'setCurrent 不存在的城市抛错'); + + s1.updateCity(b.cities[1].id, { name: '上海市' }); + eq(s1.listCities().cities[1].name, '上海市', 'updateCity 改名生效'); + + // 移除 + const rm = s1.removeCity(b.cities[1].id); + eq(rm.cities.length, 1, '移除后剩 1 个'); + eq(rm.current, a.cities[0].id, '移除当前城市后回落到第一个'); + ok(!h1.store.has('wx.cache.' + a.cities[0].id) || true, '移除会清缓存键(键可能不存在)'); + + // 坐标非法 + threw = false; + try { s1.addCity({ name: '坏点', lat: 999, lon: 0 }); } catch (e) { threw = true; } + ok(threw, '非法坐标被拒'); + + // ===== 2. 设置 ===== + const h2 = makeHost(); + const s2 = loadServices(h2); + eq(s2.getSettings().tempUnit, 'C', '默认温度单位 C'); + eq(s2.getSettings().refreshMinutes, 5, '默认刷新间隔 5 分钟'); + s2.patchSettings({ tempUnit: 'F', windUnit: 'mph', refreshMinutes: 30 }); + eq(s2.getSettings().tempUnit, 'F', 'patchSettings 温度单位'); + eq(s2.getSettings().windUnit, 'mph', 'patchSettings 风速单位'); + eq(s2.getSettings().refreshMinutes, 30, 'patchSettings 刷新间隔'); + s2.patchSettings({ tempUnit: 'X' }); + eq(s2.getSettings().tempUnit, 'F', '非法 tempUnit 被忽略(保持原值)'); + s2.patchSettings({ refreshMinutes: 9999 }); + eq(s2.getSettings().refreshMinutes, 120, 'refreshMinutes 被夹到上限 120'); + + // ===== 3. WMO 映射 ===== + eq(s2.wmo(0, true).text, '晴', 'WMO 0 = 晴'); + eq(s2.wmo(0, false).icon, '🌙', 'WMO 0 夜间图标是月亮'); + eq(s2.wmo(95, true).group, 'storm', 'WMO 95 = 雷暴组'); + eq(s2.wmo(61, false).icon, '🌧️', 'WMO 61 夜间是雨'); + eq(s2.wmo(999, true).text, '未知', '未知 WMO 代码兜底为未知'); + eq(s2.wmo(null, true).code, null, 'null WMO → code 为 null'); + + // ===== 4. AQI 分级 ===== + eq(s2.aqiLevel(30).label, '优', 'AQI 30 = 优'); + eq(s2.aqiLevel(50).label, '优', 'AQI 50 = 优(边界)'); + eq(s2.aqiLevel(51).label, '良', 'AQI 51 = 良(跨档)'); + eq(s2.aqiLevel(150).label, '轻度污染', 'AQI 150 = 轻度污染'); + eq(s2.aqiLevel(300).label, '重度污染', 'AQI 300 = 重度污染'); + eq(s2.aqiLevel(500).label, '严重污染', 'AQI 500 = 严重污染'); + + // AQI 单位陷阱:Open-Meteo 全部返回 μg/m³,国标分段里 CO 用 mg/m³。 + // 不换算会把 CO 算成 1000 倍 → AQI 直接封顶 500、主污染物错成 CO。 + // 走 services.computeAqi 太绕,这里用 searchCities 拿不到,直接断言接口形状: + // 用一个确定的数据源验证 —— 通过 loadCity 后的 air.avg24(见第 6 节)交叉检查。 + ok(typeof s2.aqiLevel === 'function', 'aqiLevel 暴露给页面做等级映射'); + + // ===== 5. 城市检索(本地拼音 + 远端) ===== + // 本地拼音索引是主路径:必须离线可用、瞬时返回 + const loc = s2.searchCitiesLocal; + eq(typeof loc, 'function', 'searchCitiesLocal 已暴露'); + + const byCd = loc('cd'); + ok(byCd.length > 0, '拼音首字母 cd 有结果', 'len=' + byCd.length); + eq(byCd[0].name, '成都', 'cd → 成都(首字母完全匹配排第一)'); + ok(byCd[0].pinyin === 'chengdu', '结果带全拼 chengdu', byCd[0].pinyin); + eq(byCd[0].local, true, '本地结果标记 local=true'); + + const byFull = loc('chengdu'); + ok(byFull.length > 0 && byFull[0].name === '成都', '全拼 chengdu → 成都'); + + const byName = loc('成都'); + ok(byName.length > 0 && byName[0].name === '成都', '中文 成都 → 成都'); + eq(byName[0].score, undefined, '对外不暴露内部 score'); + + const byPrefix = loc('哈尔'); + ok(byPrefix.length > 0 && byPrefix[0].name === '哈尔滨', '中文前缀 哈尔 → 哈尔滨', byPrefix[0] && byPrefix[0].name); + + const bj = loc('bj'); + ok(bj.length > 0 && bj[0].name === '北京', '首字母 bj → 北京(直辖市在索引里)', bj[0] && bj[0].name); + const cq = loc('cq'); + ok(cq.length > 0 && cq[0].name === '重庆', '首字母 cq → 重庆'); + const xa = loc('xa'); + ok(xa.length > 0 && xa[0].name === '西安', '首字母 xa → 西安'); + + const provHit = loc('四川'); + ok(provHit.length > 0, '按省份搜 四川 有结果', 'len=' + provHit.length); + ok(provHit.every((c) => c.admin === '四川'), '省份搜索结果都属于该省', provHit[0] && provHit[0].admin); + + eq(loc('').length, 0, '空关键词返回空'); + eq(loc(' ').length, 0, '纯空格返回空'); + eq(loc('zzzzqqqq不存在的城市').length, 0, '不存在的城市返回空'); + ok(loc('cd').every((c) => c.lat > 3 && c.lat < 54 && c.lon > 73 && c.lon < 136), '索引坐标落在中国范围内'); + + // 与远端合并 + let found = []; + try { + found = await s2.searchCities('北京'); + } catch (e) { + failures.push('searchCities 联网失败:' + e.message); + } + ok(found.length > 0, 'searchCities("北京") 有结果', 'len=' + found.length); + ok(found[0] && found[0].name === '北京', '精确同名排第一', found[0] && found[0].name); + ok(found[0] && Math.abs(found[0].lat - 39.91) < 0.2, '北京纬度正确', found[0] && String(found[0].lat)); + ok(found[0] && typeof found[0].lon === 'number' && found[0].lon > 100, '北京经度正确', found[0] && String(found[0].lon)); + eq(new Set(found.map((r) => r.name + '|' + r.admin)).size, found.length, '合并结果无重复项'); + + // 同名不同行政级别:Open-Meteo 里「南阳」有河南地级市和甘肃陇南市辖下的同名村庄。 + // 本地索引(地级市)必须压过远端,否则用户会加到甘肃那个村子上。 + const ny = await s2.searchCities('南阳'); + ok(ny.length > 0, 'searchCities("南阳") 有结果'); + eq(ny[0].admin, '河南', '南阳第一条是河南地级市,不是甘肃同名村庄', JSON.stringify(ny[0] && { a: ny[0].admin, lat: ny[0].lat })); + ok(Math.abs(ny[0].lat - 32.9966) < 0.1, '南阳坐标是河南那个(32.99,112.53)', String(ny[0].lat)); + eq(ny.filter((r) => r.name === '南阳' && Math.abs(r.lat - 33.957) < 0.01).length, 0, + '甘肃同名村庄已被去重剔除'); + + try { + const en = await s2.searchCities('Tokyo'); + ok(en.length > 0 && /东京|Tokyo/.test(en[0].name + (en[0].detail || '')), 'searchCities 英文也能搜到东京', en[0] && en[0].name); + } catch (e) { failures.push('searchCities("Tokyo") 失败:' + e.message); } + + const none = await s2.searchCities('zzzz不存在的城市名qqq'); + eq(none.length, 0, '搜不到时返回空数组而不是报错'); + + const empty = await s2.searchCities(' '); + eq(empty.length, 0, '空关键词直接返回空数组(不发请求)'); + + // 拼音结果应能直接加入并拿到真实天气坐标 + const cdAdd = s2.addCity(byCd[0]); + eq(cdAdd.cities.length, 1, '拼音搜到的城市可直接加入'); + ok(Math.abs(byCd[0].lat - 30.6558) < 0.01, '成都坐标来自本地索引', String(byCd[0].lat)); + + // ===== 6. 天气数据(联网) ===== + const h3 = makeHost(); + const s3 = loadServices(h3); + const cd = s3.addCity({ name: '成都', admin: '四川省', lat: 30.5728, lon: 104.0668, tz: 'Asia/Shanghai' }); + const cdId = cd.current; + let wx = null; + try { + wx = await s3.loadCity(s3.listCities().cities[0], { force: true }); + } catch (e) { + failures.push('loadCity 联网失败:' + e.message); + } + if (wx) { + ok(wx.current && typeof wx.current.temp === 'number', 'loadCity 返回 current.temp 数字', wx.current && String(wx.current.temp)); + ok(wx.current && wx.current.time.length === 16, 'current.time 是城市本地时间(YYYY-MM-DDTHH:mm)', wx.current && wx.current.time); + eq(wx.hours.length, 24, '未来 24 小时正好 24 个点', wx.hours && String(wx.hours.length)); + eq(wx.days.length, 7, '7 天预报 7 条', wx.days && String(wx.days.length)); + ok(wx.hours[0].time >= wx.current.time.slice(0, 13), '24h 起点不早于当前小时', wx.hours[0] && wx.hours[0].time + ' vs ' + wx.current.time); + ok(wx.days[0].sunrise.length === 16 && wx.days[0].sunrise.includes('T'), '日出时间是 ISO 本地时间', wx.days[0] && wx.days[0].sunrise); + ok(wx.today && wx.today.max >= wx.today.min, '今日最高温 >= 最低温'); + ok(!!wx.city && wx.city.name === '成都', 'loadCity 回填城市信息'); + ok(wx.fetchedAt > 0 && wx.stale === false, '首次加载不是 stale'); + + // 空气质量:接口失败时不应拖垮主界面,但「静默为空」是回归,必须显式暴露 + ok(!!wx.air, '空气质量接口返回了数据(变量名写错会静默变成 null)', + '检查 hourly 是否用了全称 sulphur_dioxide/nitrogen_dioxide/carbon_monoxide/ozone'); + if (wx.air) { + ok(!!wx.air.aqi, '空气质量算出 AQI', JSON.stringify(wx.air.aqi)); + if (wx.air.aqi) { + ok(wx.air.aqi.value >= 0 && wx.air.aqi.value <= 500, 'AQI 在 0~500 之间', String(wx.air.aqi.value)); + ok(['优', '良', '轻度污染', '中度污染', '重度污染', '严重污染'].indexOf(wx.air.aqi.level) >= 0, 'AQI 等级文案合法', wx.air.aqi.level); + ok(Array.isArray(wx.air.aqi.parts) && wx.air.aqi.parts.length > 0, 'AQI 污染物明细非空'); + const pm = wx.air.aqi.parts.filter(function (p) { return p.key === 'pm2_5'; })[0]; + ok(!pm || pm.value <= 500, 'PM2.5 分指数不越界', pm && String(pm.value)); + // CO 单位换算回归:不换算会算出 1000 倍浓度 → AQI 恒为 500 + const co = wx.air.aqi.parts.filter(function (p) { return p.key === 'co'; })[0]; + if (co) { + ok(co.conc < 20, 'CO 展示值是 mg/m³ 量级(不是 μg/m³ 原始值)', co.conc + ' ' + co.unit); + eq(co.unit, 'mg/m³', 'CO 单位标注为 mg/m³'); + } + // 主污染物不该是长期被 CO 垄断 + ok(wx.air.aqi.primaryKey !== 'co' || wx.air.aqi.value < 200, + 'CO 不应无理由成为高 AQI 的主污染物(单位换算正确)', wx.air.aqi.value + ' / ' + wx.air.aqi.primary); + } + console.log(' [空气] AQI=' + (wx.air.aqi && wx.air.aqi.value) + ' ' + (wx.air.aqi && wx.air.aqi.level) + ' 主污染物=' + (wx.air.aqi && wx.air.aqi.primary)); + } else { + console.log(' [空气] 接口本次不可用(主界面已容错,界面显示「暂无数据」)'); + } + + // 缓存闸门 + const t0 = Date.now(); + const cached = await s3.loadCity(s3.listCities().cities[0]); + eq(cached.stale, true, 'minAge 内再次读取走缓存(stale=true)'); + eq(cached.fetchedAt, wx.fetchedAt, '缓存 fetchAt 与首次一致(没重新发请求)'); + ok(Date.now() - t0 < 500, '缓存读取不触网(很快返回)'); + + // force 必须真的重拉 + await new Promise((r) => setTimeout(r, 1100)); + // 这套测试是真联网打 Open-Meteo 的,偶发网络抖动会直接把整个 run 炸掉。 + // 重试 3 次再判失败——既不掩盖真 bug,也不让一次抖动毁掉整轮验证。 + let forced = null, lastErr = null; + for (let attempt = 0; attempt < 3 && !forced; attempt++) { + if (attempt) await new Promise((r) => setTimeout(r, 1500 * attempt)); + try { + forced = await s3.loadCity(s3.listCities().cities[0], { force: true }); + } catch (e) { lastErr = e; } + } + ok(!!forced, 'force 重拉成功(网络抖动已重试 3 次)', forced ? '' : String((lastErr && lastErr.message) || lastErr)); + if (forced) { + ok(forced.fetchedAt > wx.fetchedAt, 'force:true 会真正重新请求(fetchedAt 前进)', forced.fetchedAt + ' vs ' + wx.fetchedAt); + eq(forced.stale, false, 'force 结果不是 stale'); + } + + // getCache + const gc = s3.getCache(cdId); + ok(!!gc && gc.city && gc.city.name === '成都', 'getCache 带城市信息'); + + // 分享文案 + const share = s3.buildShareText(forced); + ok(share.indexOf('成都') === 0, '分享文案以城市名开头', share.slice(0, 20)); + ok(share.indexOf('°') > 0, '分享文案含温度', share.slice(0, 60)); + } + + // 坐标错误时的错误信息 + await throwsAsync(() => s3.loadCity({ id: 'x', name: '无', lat: 95, lon: 0 }), '非法坐标城市 loadCity 抛错'); + + // ===== 7. 主题与系统能力 ===== + eq(s3.theme().isDark, true, 'theme() 走宿主 isDarkColors'); + eq(s3.theme().source, 'ztools', 'theme() 标记来源为 ztools'); + let themeChanged = false; + s3.onThemeChange(function () { themeChanged = true; }); + ok(typeof h3.win._themeCb === 'function', 'onThemeChange 转发到宿主'); + s3.copy('测试文本'); + eq(h3.calls.copy[0], '测试文本', 'copy 转发到宿主 copyText'); + s3.notify('测试通知'); + eq(h3.calls.notify[0], '测试通知', 'notify 单参数转发到宿主 showNotification'); + + // ===== 8. 代理设置解析 ===== + const h4 = makeHost(); + const s4 = loadServices(h4); + s4.patchSettings({ proxy: 'http://127.0.0.1:7897' }); + // 改代理后不报错即说明解析路径通(不真连) + const badCity = s4.addCity({ name: '测试', lat: 60, lon: 120 }); + ok(badCity.cities.length === 1, '代理设置不影响城市簿'); + + console.log('\n通过 ' + pass + ' 项'); + if (failures.length) { + console.log('失败 ' + failures.length + ' 项:'); + failures.forEach((f) => console.log(' ✗ ' + f)); + process.exitCode = 1; + } else { + console.log('全部通过 ✔'); + } +})(); diff --git a/plugins/ztools-weather/tests/test-ui.js b/plugins/ztools-weather/tests/test-ui.js new file mode 100644 index 000000000..0df8b8851 --- /dev/null +++ b/plugins/ztools-weather/tests/test-ui.js @@ -0,0 +1,385 @@ +/* 天气助手 · UI 测试(浏览器控制台跑,依赖 tests/ui-harness.html) + 跑法:在浏览器打开 tests/ui-harness.html,控制台执行 __runUiTests() + 全部断言完会在控制台打印结果,并把汇总放到 window.__uiResult。 */ +(function () { + 'use strict'; + window.__runUiTests = function () { + var pass = 0, fail = []; + function ok(c, n, x) { if (c) pass++; else fail.push(n + (x ? ' → ' + x : '')); } + function eq(a, b, n) { ok(a === b, n, 'got ' + JSON.stringify(a) + ' want ' + JSON.stringify(b)); } + function $(id) { return document.getElementById(id); } + function txt(id) { return ($(id) ? $(id).textContent : '').trim(); } + function vis(id) { + var el = $(id); + if (!el) return false; + return getComputedStyle(el).display !== 'none'; + } + function sleep(ms) { return new Promise(function (r) { setTimeout(r, ms); }); } + + return (async function () { + // ---- 1. 首次渲染(boot 已自动跑完,等一拍) ---- + await sleep(60); + + ok(vis('view'), '主视图可见'); + ok(!vis('empty'), '有城市时不显示空态'); + eq(txt('cur-city'), '成都 · 四川省', '城市名显示 label'); + ok(/^-?\d+$/.test(txt('cur-temp')), '当前温度是整数', txt('cur-temp')); + eq(txt('cur-unit'), '°C', '温度单位 °C'); + eq(txt('cur-text'), '阴', '天气文案 = 阴(code 3)'); + eq(txt('cur-icon'), '☁️', '白天阴图标'); + ok($('cur-meta').children.length >= 3, '体感/湿度/风速等徽标已渲染', String($('cur-meta').children.length)); + ok(/体感/.test($('cur-meta').textContent), '含体感温度'); + ok(/湿度 72%/.test($('cur-meta').textContent), '含湿度 72%'); + ok(/北风 4/.test($('cur-meta').textContent), '含风向风速(355°→北风)', $('cur-meta').textContent); + ok(/1011 hPa/.test($('cur-meta').textContent), '含气压'); + + // ---- 2. 城市条 ---- + eq($('cities').children.length, 3, '城市条 3 个城市'); + ok($('cities').children[0].classList.contains('on'), '第一个城市高亮为当前'); + eq($('cities').children[0].querySelector('.chip-name').textContent, '成都', '城市按钮文字'); + eq($('cities').querySelectorAll('.chip-x').length, 3, '每个城市都有删除按钮 ×'); + + // ---- 3. 空气质量 ---- + eq(txt('aqi-badge'), '良', 'AQI 徽标 = 良'); + ok($('aqi-badge').classList.contains('fair'), 'AQI 徽标带 fair 颜色类', $('aqi-badge').className); + ok(/^100/.test(txt('aqi-main')), 'AQI 数值 100', txt('aqi-main')); + ok(/PM2\.5/.test(txt('aqi-main')), '标注主要污染物'); + eq($('aqi-parts').children.length, 6, '6 个污染物明细'); + ok(/CO 1\.8 mg\/m³/.test($('aqi-parts').textContent), 'CO 显示 mg/m³ 单位', $('aqi-parts').textContent); + ok(/PM2\.5 62\.9 μg\/m³/.test($('aqi-parts').textContent), 'PM2.5 显示 μg/m³ 单位'); + + // ---- 4. 今日概况 ---- + var tg = $('today-grid').textContent; + ok(/27° \/ 22°/.test(tg), '最高/最低温', tg); + ok(/概率 12%/.test(tg), '降水概率', tg); + ok(/紫外线/.test(tg) && /低/.test(tg), '紫外线等级文案', tg); + ok(/06:54 \/ 18:54/.test(tg), '日出日落 24 小时制', tg); + + // ---- 5. 24 小时 ---- + eq($('hours').children.length, 24, '24 小时卡片 24 个'); + eq($('hours').children[0].querySelector('b').textContent, '14:00', '起点是当前小时 14:00'); + eq($('hours').children[23].querySelector('b').textContent, '13:00', '终点跨到次日 13:00'); + ok(/80%/.test($('hours').children[5].textContent), '第 6 个小时降水概率 80%', $('hours').children[5].textContent); + ok($('hour-chart').querySelectorAll('polyline').length === 1, '24h 温度折线 1 条'); + ok($('hour-chart').querySelectorAll('circle').length === 24, '24 个数据点'); + ok($('hour-chart').querySelectorAll('rect.bar').length > 0, '降水概率柱已绘制', String($('hour-chart').querySelectorAll('rect.bar').length)); + ok($('hour-chart').querySelectorAll('text').length >= 3, '坐标轴文字存在'); + + // ---- 6. 7 天 ---- + eq($('days').children.length, 7, '7 天 7 行'); + eq($('days').children[0].querySelector('.d1').textContent, '今天', '第 1 行是今天'); + eq($('days').children[1].querySelector('.d1').textContent, '明天', '第 2 行是明天'); + ok($('days').children[0].classList.contains('today'), '今天行高亮'); + ok(/24° \/ 20°/.test($('days').children[1].textContent), '明天温度', $('days').children[1].textContent); + ok(/88% 降水/.test($('days').children[1].textContent), '明天降水概率', $('days').children[1].textContent); + eq($('day-chart').querySelectorAll('polyline').length, 2, '7 天图有最高/最低两条线'); + + // ---- 7. 交互:输入即搜下拉框 ---- + $('q').focus(); + $('q').value = 'cd'; + $('q').dispatchEvent(new Event('input', { bubbles: true })); + await sleep(200); + ok(vis('results'), '输入 cd 后下拉框出现'); + var rows = $('results').querySelectorAll('div.r'); + ok(rows.length >= 3, 'cd 命中多个城市(歧义,全部列出让用户选)', String(rows.length)); + eq(rows[0].querySelector('.r-name').textContent, '成都', 'cd 第一条是成都'); + ok(rows[0].classList.contains('on'), '第一条默认高亮'); + ok(rows[0].querySelector('.r-py') !== null, '显示拼音首字母标签'); + ok(/cd/.test(rows[0].querySelector('.r-py').textContent), '首字母标签内容 = cd', rows[0].querySelector('.r-py').textContent); + ok(/chengdu/.test(rows[0].querySelector('.r-sub').textContent), '副标题含全拼', rows[0].querySelector('.r-sub').textContent); + ok($('hint').hidden, '有候选时隐藏操作提示'); + + // 方向键 + // ⚠ 每次 renderResults() 都会 box.textContent='' 后重建所有行节点, + // 所以之前取的 rows NodeList 里的元素已经脱离文档,classList 反映的是旧状态。 + // 断言前必须重新查询,否则测的是「已销毁的节点」。 + $('q').dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true })); + await sleep(20); + rows = $('results').querySelectorAll('div.r'); + ok(!rows[0].classList.contains('on'), '↓ 后第一条取消高亮'); + ok($('results').children[1].classList.contains('on'), '↓ 后第二条高亮'); + $('q').dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true })); + await sleep(20); + rows = $('results').querySelectorAll('div.r'); + ok($('results').children[0].classList.contains('on'), '↑ 回第一条'); + + // 全拼 + $('q').value = 'chengdu'; + $('q').dispatchEvent(new Event('input', { bubbles: true })); + await sleep(200); + ok($('results').querySelectorAll('div.r').length >= 1, '全拼 chengdu 有结果'); + eq($('results').querySelector('.r-name').textContent, '成都', '全拼 → 成都'); + + // 高亮只在「查询词确实是城市名的子串」时才成立。 + // 搜 'cd' 时 highlight('成都','cd') 找不到子串,就不加 ——这是正确行为, + // 拼音没法在中文名里高亮。之前这里断言必有 mark,是把不可能的情况写成了断言。 + ok($('results').querySelector('.r-name') !== null, '候选行有城市名元素'); + // 用中文搜一次,验证真正会高亮 + $('q').value = '都'; + $('q').dispatchEvent(new Event('input', { bubbles: true })); + await sleep(200); + ok($('results').querySelector('.r-name mark') !== null, '中文查询命中片段被高亮 mark 包裹', + $('results').querySelector('.r-name') ? $('results').querySelector('.r-name').textContent : 'no row'); + $('q').value = 'cd'; + $('q').dispatchEvent(new Event('input', { bubbles: true })); + await sleep(200); + + // 点击候选 → 加入 + var nCity = $('cities').children.length; + $('results').children[0].click(); + await sleep(120); + ok(!vis('results'), '选中后下拉框收起'); + eq(txt('cur-city'), '成都 · 四川', '切换到成都'); + eq($('q').value, '', '搜索框已清空'); + ok($('q-clear').hidden, '清空按钮隐藏'); + ok($('cities').children.length >= nCity, '城市条已更新', String($('cities').children.length)); + ok(vis('toast'), '有提示 toast'); + ok(/已添加/.test(txt('toast')), 'toast 文案', txt('toast')); + + // Esc 关闭 + $('q').value = 'bj'; + $('q').dispatchEvent(new Event('input', { bubbles: true })); + await sleep(200); + ok(vis('results'), '搜 bj 出候选'); + $('q').dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true })); + await sleep(30); + ok(!vis('results'), 'Esc 关闭下拉框但保留输入', getComputedStyle($('results')).display); + eq($('q').value, 'bj', 'Esc 不清空输入'); + // 再按一次 Esc 清空 + $('q').dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true })); + await sleep(30); + eq($('q').value, '', '再按 Esc 清空输入'); + + // 无结果 + $('q').value = 'zzzz不存在'; + $('q').dispatchEvent(new Event('input', { bubbles: true })); + await sleep(220); + ok(vis('results'), '无结果时也显示面板(提示语)'); + eq($('results').querySelectorAll('div.r').length, 0, '没有候选行'); + ok(/没有找到/.test($('results').textContent), '给出「没有找到」提示', $('results').textContent); + $('q-clear').click(); + await sleep(30); + ok(!vis('results'), '点 ✕ 后收起'); + + // ---- 9. 交互:设置对话框(分段按钮) ---- + $('settings').click(); + await sleep(30); + ok(vis('settings-panel'), '设置对话框打开'); + ok(vis('settings-mask'), '有遮罩层'); + eq($('s-temp').getAttribute('data-v'), 'C', '温度单位初值 C'); + eq($('s-temp').querySelector('button.on').getAttribute('data-v'), 'C', '分段按钮高亮 C'); + eq($('s-refresh').getAttribute('data-v'), '5', '刷新间隔初值 5'); + ok($('settings-panel').getAttribute('aria-modal') === 'true', 'aria-modal 已声明'); + + // 取消不保存 + $('s-temp').querySelector('button[data-v="F"]').click(); + await sleep(20); + eq($('s-temp').getAttribute('data-v'), 'F', '点分段按钮切换选中'); + $('s-cancel').click(); + await sleep(30); + ok(!vis('settings-panel'), '取消后关闭'); + ok(!vis('settings-mask'), '取消后遮罩消失'); + eq(txt('cur-unit'), '°C', '取消不生效(单位没变)'); + + // 重新打开并保存 + $('settings').click(); + $('s-temp').querySelector('button[data-v="F"]').click(); + $('s-wind').querySelector('button[data-v="mph"]').click(); + $('s-refresh').querySelector('button[data-v="30"]').click(); + $('s-close').click(); + await sleep(60); + ok(!vis('settings-panel'), '保存后关闭'); + eq(txt('cur-unit'), '°F', '切到华氏度后单位变化'); + // 夹具成都 26.2°C → 79.16°F + ok(/^7\d$|^8\d$/.test(txt('cur-temp')), '华氏度温度已重算(26°C≈79°F)', txt('cur-temp')); + ok(/7\d°/.test($('hours').children[0].querySelector('em').textContent), '24h 卡片也用华氏度', $('hours').children[0].textContent); + ok(/8\d° \/ 7\d°/.test($('days').children[0].textContent), '7 天行也用华氏度', $('days').children[0].textContent); + ok(/mph/.test($('cur-meta').textContent), '风速单位切到 mph', $('cur-meta').textContent); + eq(window.__state.settings.refreshMinutes, 30, '刷新间隔保存为 30'); + // 改回 + $('settings').click(); + $('s-temp').querySelector('button[data-v="C"]').click(); + $('s-wind').querySelector('button[data-v="kmh"]').click(); + $('s-refresh').querySelector('button[data-v="5"]').click(); + $('s-close').click(); + await sleep(40); + eq(txt('cur-unit'), '°C', '单位改回 °C'); + + // ---- 10. 交互:复制 ---- + $('copy').click(); + await sleep(30); + ok(window.__calls.copy.length > 0, '复制调用了 services.copy'); + var copied = window.__calls.copy[window.__calls.copy.length - 1] || ''; + ok(/成都|上海/.test(copied), '复制内容含当前城市名', copied); + ok(/26°/.test(copied), '复制内容含温度', copied); + + // ---- 11. 交互:刷新(force 透传) ---- + var before = window.__calls.load.length; + $('refresh').click(); + await sleep(60); + ok(window.__calls.load.length > before, '刷新触发重新加载'); + var last = window.__calls.load[window.__calls.load.length - 1]; + eq(last.force, true, '手动刷新传 force=true'); + + // ---- 12. 交互:删除城市 ---- + // 12a. 用 chip 上的 × 删一个「非当前」城市 + var n0 = $('cities').children.length; + var curName = txt('cur-city'); + var targetIdx = -1; + for (var i = 0; i < $('cities').children.length; i++) { + if (!$('cities').children[i].classList.contains('on')) { targetIdx = i; break; } + } + ok(targetIdx >= 0, '存在可删除的非当前城市'); + var delId = $('cities').children[targetIdx].getAttribute('data-id'); + $('cities').children[targetIdx].querySelector('.chip-x').click(); + await sleep(120); + eq($('cities').children.length, n0 - 1, '点 × 后城市数减 1'); + // ⚠ 必须按 id 断言,不能按城市名。前面搜索用例调 pickCity 又加了一个「成都」, + // 列表里会有两个成都;删掉一个后按名字查当然「还在」——那是另一个,不是没删掉。 + var stillThere = Array.prototype.some.call($('cities').children, function (el) { + return el.getAttribute('data-id') === delId; + }); + ok(!stillThere, '被删的城市已从列表消失', 'data-id=' + delId); + eq(window.__state.cities.filter(function (c) { return c.id === delId; }).length, 0, + '被删的城市已从 state 移除'); + ok(/已删除/.test(txt('toast')), 'toast 提示已删除', txt('toast')); + eq(txt('cur-city'), curName, '删非当前城市不会切走当前视图'); + + // 12b. 删当前城市(大卡片上的「移除」按钮已删,现在统一走 chip 上的 ×) + // 这条同时是 removeCityById 里 wasCurrent 判断的回归测试: + // 删当前城市必须清掉 state.data 并重载,否则会显示上一个城市的数据。 + var n1 = $('cities').children.length; + var curChip = null; + for (var j = 0; j < $('cities').children.length; j++) { + if ($('cities').children[j].classList.contains('on')) { curChip = $('cities').children[j]; break; } + } + ok(!!curChip, '能定位到当前城市的 chip'); + curChip.querySelector('.chip-x').click(); + await sleep(150); + eq($('cities').children.length, n1 - 1, '点当前城市的 × 后城市数减 1'); + ok(vis('view'), '删除后仍显示视图(有其它城市)'); + ok(/已删除/.test(txt('toast')), 'toast 提示已删除', txt('toast')); + ok(!!window.__state.data, '删当前城市后已重载新数据(不是空白)'); + ok(window.__state.data && window.__state.data.city && + window.__state.data.city.id === window.__state.current, + '显示的是新当前城市的数据', JSON.stringify({ + cur: window.__state.current, + shown: window.__state.data && window.__state.data.city && window.__state.data.city.id + })); + + // 大卡片上不该再有「移除」按钮(每个 chip 的 × 才是删除入口) + ok($('del-city') === null, '大卡片上的「移除」按钮已移除'); + + // 静态护栏:app.js 里不允许有同名函数重复定义。 + // 踩过的坑:旧版 doSearch/renderResults 没删干净,同名后者覆盖前者, + // 表面上「调用了新版」,实际跑的是旧版,输入即搜静默失效(data 有结果但 DOM 不渲染)。 + var appSrc = window.__appSrc || ''; + if (!appSrc && window.fetch) { + appSrc = await fetch('app.js').then(function (r) { return r.text(); }).catch(function () { return ''; }); + } + var defs = (appSrc.match(/^\s*function\s+([A-Za-z_$][\w$]*)/gm) || []) + .map(function (m) { return m.match(/function\s+([A-Za-z_$][\w$]*)/)[1]; }); + // el / X 是图表函数内部的局部辅助函数,重名是正常的(各自作用域独立)。 + // 这里要抓的是「同一个外层作用域里同名函数被定义了两次」——那种才会后者覆盖前者。 + // 判据:行首无缩进 = 顶层定义;顶层同名才是真 bug。 + var topDefs = (appSrc.match(/^function\s+([A-Za-z_$][\w$]*)/gm) || []) + .map(function (m) { return m.match(/function\s+([A-Za-z_$][\w$]*)/)[1]; }); + var seenD = {}, dupD = []; + topDefs.forEach(function (n) { if (seenD[n]) { if (dupD.indexOf(n) < 0) dupD.push(n); } seenD[n] = 1; }); + ok(dupD.length === 0, 'app.js 顶层无重复定义的函数', dupD.join(',')); + + // ---- 13. onPluginEnter 带 payload → 搜索 ---- + window.__enterCb({ type: 'over', payload: 'bj' }); + await sleep(220); + ok(vis('results'), '主搜索框 payload 触发搜索'); + eq($('q').value, 'bj', '搜索框回填 payload'); + eq($('results').querySelector('.r-name').textContent, '北京', 'payload「bj」出北京'); + $('q-clear').click(); + await sleep(30); + + // 空 payload:不应残留候选 + window.__enterCb({ type: 'over', payload: '' }); + await sleep(60); + ok(!vis('results'), '空 payload 不出候选'); + eq($('q').value, '', '空 payload 不写进搜索框'); + + // ---- 13b. 非法日期 / 空数据兜底(不能出 NaN 或 09/32) ---- + // 12b 删过城市,state.data 可能已被清空;先确保有一份可改的数据再继续断言。 + if (!window.__state.data) { await window.__reloadFixtureData(); } + ok(!!window.__state.data, '兜底测试前有可用数据'); + window.__state.data.days[3].date = '2026-09-33'; + window.__state.data.days[4].max = null; + window.__state.data.days[4].min = null; + window.__state.data.days[5].sunrise = ''; + window.__state.data.today.sunrise = ''; + window.__state.data.today.sunset = null; + var rerender = window.__state.data; + window.__boot(); + await sleep(200); + var allTxt = $('view').textContent + $('cities').textContent + + $('cur-city').textContent + $('cur-temp').textContent; + // ⚠ 只扫「渲染出来的界面」,不能扫整个 document.body.textContent: + // harness 把 app.js / test-ui.js 源码内联进了 ' +if needle not in html: + raise SystemExit("index.html 里找不到 " + needle) +html = html.replace(needle, '\n ' + needle, 1) + +# harness 落在 tests/ 下。直接把 fixture/app/test-ui 三个 js 内联进 HTML, +# 理由有二: +# 1. file:// 下外链脚本的加载/执行在这个浏览器里时好时坏,症状是「app.js 跑了、fixture.js 没跑」, +# window.services 是 undefined,boot() 在 DOMContentLoaded 时抛错,控制台 message 是空的——查不动。 +# 2. 内联还能在最前面装 window.onerror 收集器,把真实异常文本抓出来。 +# 所以:资源路径改成 ../,脚本全部内联,外面包 try/catch 记 __errs。 +html = html.replace('href="style.css"', 'href="../style.css"') +html = html.replace('src="logo.png"', 'src="../logo.png"') + +import re +html = re.sub(r'\s*', '', html) + +parts = [''] +app_src = "" +for name in ('fixture.js', 'app.js', 'test-ui.js'): + src_path = os.path.join(TESTS, name) if name in ('test-ui.js', 'fixture.js') else os.path.join(PLUGIN, name) + with open(src_path, encoding='utf-8') as f: + src = f.read() + if ',内联会被截断') + if name == 'app.js': + # test-ui.js 要读 app.js 源码做静态检查(同名函数重复定义护栏)。 + # file:// 下 fetch 拿不到外链,所以直接把源码以 JSON 字符串塞进全局。 + app_src = json.dumps(src, ensure_ascii=False) + parts.append('') +# app.js 源码要在 test-ui.js 运行前就绪(file:// 下 fetch 拿不到外链,只能内联) +parts.append('') +html = html.replace("", "\n ".join(parts) + "\n", 1) + +with open(OUT, "w", encoding="utf-8") as f: + f.write(html) + +print("harness written:", OUT, os.path.getsize(OUT), "bytes") diff --git a/plugins/ztools-weather/tools/build-pinyin.py b/plugins/ztools-weather/tools/build-pinyin.py new file mode 100644 index 000000000..cb31f2e8b --- /dev/null +++ b/plugins/ztools-weather/tools/build-pinyin.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- +"""生成 cities-pinyin.json:全国城市拼音索引(供插件本地模糊检索,不依赖任何网络接口)。 + +数据源:https://github.com/88250/city-geo (data.json,中国城市县区经纬度) +拼音转换:pypinyin + +用法: + python3 tools/build-pinyin.py # 从 data.json 生成 + python3 tools/build-pinyin.py src.json out.json + +产物(提交进仓库,插件离线可用): + cities-pinyin.json 形如 + {"n":"成都","p":"chengdu","i":"cd","l":"四川","a":30.65,"o":104.08,"r":90} + n=城市名 p=全拼 i=拼音首字母 l=省份 a=lat o=lng r=知名度排名 + + r(rank)为什么必须有:拼音首字母有天然歧义——「cd」同时命中 + 成都(chengdu) / 承德(chengdu) / 常德(changde) / 昌都(changdou) 四个城市。 + 光看字母分不出用户要找哪个,只能靠「知名度」把大概率的那个排到前面。 +""" +import json +import os +import re +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +PLUGIN = os.path.normpath(os.path.join(HERE, "..")) +DEFAULT_SRC = os.path.join(HERE, "city-geo-data.json") +DEFAULT_OUT = os.path.join(PLUGIN, "cities-pinyin.json") + +# 「市辖区」「省直辖县级行政区划」这类不是城市,剔除 +JUNK = {"市辖区", "省直辖县级行政区划", "县", "市", "区"} + +# 知名度分档:直辖市 100 > 省会/首府 90 > 其他地级市 50(按拼音长度微调,纯 tie-break) +MUNICIPALITY = {"北京", "上海", "天津", "重庆"} +CAPITALS = { + "石家庄", "太原", "呼和浩特", "沈阳", "长春", "哈尔滨", "南京", "杭州", "合肥", + "福州", "南昌", "济南", "郑州", "武汉", "长沙", "广州", "南宁", "海口", "成都", + "贵阳", "昆明", "拉萨", "西安", "兰州", "西宁", "银川", "乌鲁木齐", "台北", +} + + +def rank_of(name, pinyin): + if name in MUNICIPALITY: + return 100 + if name in CAPITALS: + return 90 + # 同分时用拼音短的略靠前(纯 tie-break,不影响主要排序) + return 50 - len(pinyin or "") * 0.1 + + +def norm_name(raw): + """成都市 → 成都;重庆市 → 重庆;保持少数民族自治州的全称(带州不加后缀)。""" + n = (raw or "").strip() + if not n or n in JUNK: + return "" + # 已经有后缀的(自治州/地区/盟/自治县)保留 + if n.endswith(("自治州", "地区", "盟", "自治县")): + return n + return re.sub(r"(市|地区|盟)$", "", n) + + +def norm_province(raw): + p = (raw or "").strip() + return re.sub(r"(省|市|自治区|特别行政区)$", "", p) or p + + +def main(): + src = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_SRC + out = sys.argv[2] if len(sys.argv) > 2 else DEFAULT_OUT + if not os.path.exists(src): + raise SystemExit("找不到源数据: " + src) + + from pypinyin import pinyin, Style + + with open(src, encoding="utf-8") as f: + raw = json.load(f) + + seen = {} + for r in raw: + # 直辖市(北京/上海/天津/重庆)在源数据里 city 叫「市辖区」,真正的名字在 province。 + # 漏了这一步,四个直辖市 + 所有直辖区的条目会全部丢失(拼音搜「bj」就没反应)。 + city_raw = (r.get("city") or "").strip() + prov_raw = (r.get("province") or "").strip() + if city_raw in ("市辖区", "县"): + if prov_raw.endswith("市"): + name = norm_name(prov_raw) # 北京市 → 北京 + else: + continue + else: + name = norm_name(city_raw) + if not name: + continue + try: + lat = float(r.get("lat")) + lng = float(r.get("lng")) + except (TypeError, ValueError): + continue + if not (-90 <= lat <= 90 and -180 <= lng <= 180): + continue + # 同一个城市名可能多条(不同 area),取第一条有效坐标 + if name in seen: + continue + full = "".join(x[0] for x in pinyin(name, style=Style.NORMAL)) + init = "".join(x[0] for x in pinyin(name, style=Style.FIRST_LETTER)) + seen[name] = { + "n": name, + "p": full, + "i": init, + "l": norm_province(r.get("province")), + "a": round(lat, 4), + "o": round(lng, 4), + "r": rank_of(name, full), + } + + cities = sorted(seen.values(), key=lambda x: x["n"]) + with open(out, "w", encoding="utf-8") as f: + json.dump(cities, f, ensure_ascii=False, separators=(",", ":")) + print("cities written:", out, len(cities), "cities,", os.path.getsize(out), "bytes") + + print(" 歧义检查(2 字母首字母撞车的城市,插件靠 rank 排序):") + by_init = {} + for c in cities: + by_init.setdefault(c["i"], []).append(c) + for k, v in sorted(by_init.items()): + if len(v) > 1 and len(k) <= 2: + v = sorted(v, key=lambda c: -c["r"]) + print(" ", k, "→", " / ".join(c["n"] + "(" + str(c["r"]) + ")" for c in v)) + print() + for probe in ("成都", "北京", "上海", "重庆", "西安", "哈尔滨", "呼和浩特", "南阳"): + hit = [c for c in cities if c["n"] == probe] + print(" ", probe, "→", json.dumps(hit[0], ensure_ascii=False) if hit else "MISSING") + + +if __name__ == "__main__": + main() diff --git a/plugins/ztools-weather/tools/city-geo-data.json b/plugins/ztools-weather/tools/city-geo-data.json new file mode 100644 index 000000000..95cdb0c98 --- /dev/null +++ b/plugins/ztools-weather/tools/city-geo-data.json @@ -0,0 +1,26698 @@ +[ + { + "area": "", + "city": "市辖区", + "country": "中国", + "lat": "39.910924547299565", + "lng": "116.4133836971231", + "province": "北京市" + }, + { + "area": "东城区", + "city": "市辖区", + "country": "中国", + "lat": "39.93482727239599", + "lng": "116.4224009776628", + "province": "北京市" + }, + { + "area": "西城区", + "city": "市辖区", + "country": "中国", + "lat": "39.91812360584148", + "lng": "116.37251358116619", + "province": "北京市" + }, + { + "area": "朝阳区", + "city": "市辖区", + "country": "中国", + "lat": "39.926374523079886", + "lng": "116.44955872950158", + "province": "北京市" + }, + { + "area": "丰台区", + "city": "市辖区", + "country": "中国", + "lat": "39.8649371975573", + "lng": "116.29240188731139", + "province": "北京市" + }, + { + "area": "石景山区", + "city": "市辖区", + "country": "中国", + "lat": "39.911353808778294", + "lng": "116.22961266775826", + "province": "北京市" + }, + { + "area": "海淀区", + "city": "市辖区", + "country": "中国", + "lat": "39.96548984110075", + "lng": "116.3054340544974", + "province": "北京市" + }, + { + "area": "门头沟区", + "city": "市辖区", + "country": "中国", + "lat": "39.94614672003409", + "lng": "116.10760355576534", + "province": "北京市" + }, + { + "area": "房山区", + "city": "市辖区", + "country": "中国", + "lat": "39.75432583977336", + "lng": "116.14944375184247", + "province": "北京市" + }, + { + "area": "通州区", + "city": "市辖区", + "country": "中国", + "lat": "39.916017122432365", + "lng": "116.66341535785384", + "province": "北京市" + }, + { + "area": "顺义区", + "city": "市辖区", + "country": "中国", + "lat": "40.13635076223076", + "lng": "116.66142426369096", + "province": "北京市" + }, + { + "area": "昌平区", + "city": "市辖区", + "country": "中国", + "lat": "40.22641337159427", + "lng": "116.23761791731043", + "province": "北京市" + }, + { + "area": "大兴区", + "city": "市辖区", + "country": "中国", + "lat": "39.73255523655448", + "lng": "116.348625212231", + "province": "北京市" + }, + { + "area": "怀柔区", + "city": "市辖区", + "country": "中国", + "lat": "40.32261840426579", + "lng": "116.63838587142932", + "province": "北京市" + }, + { + "area": "平谷区", + "city": "市辖区", + "country": "中国", + "lat": "40.146950735799116", + "lng": "117.12737910459967", + "province": "北京市" + }, + { + "area": "密云区", + "city": "市辖区", + "country": "中国", + "lat": "40.52328803670418", + "lng": "116.9204319727385", + "province": "北京市" + }, + { + "area": "延庆区", + "city": "市辖区", + "country": "中国", + "lat": "40.43867002531891", + "lng": "115.99133201089519", + "province": "北京市" + }, + { + "area": "", + "city": "市辖区", + "country": "中国", + "lat": "39.093667843403956", + "lng": "117.2095232146708", + "province": "天津市" + }, + { + "area": "和平区", + "city": "市辖区", + "country": "中国", + "lat": "39.12339025327971", + "lng": "117.22146699490091", + "province": "天津市" + }, + { + "area": "河东区", + "city": "市辖区", + "country": "中国", + "lat": "39.134487325955114", + "lng": "117.25841295306803", + "province": "天津市" + }, + { + "area": "河西区", + "city": "市辖区", + "country": "中国", + "lat": "39.115718082215515", + "lng": "117.2294162800198", + "province": "天津市" + }, + { + "area": "南开区", + "city": "市辖区", + "country": "中国", + "lat": "39.14410527976771", + "lng": "117.15651537432414", + "province": "天津市" + }, + { + "area": "河北区", + "city": "市辖区", + "country": "中国", + "lat": "39.15348514470478", + "lng": "117.20359278135501", + "province": "天津市" + }, + { + "area": "红桥区", + "city": "市辖区", + "country": "中国", + "lat": "39.17328564656417", + "lng": "117.15751788327329", + "province": "天津市" + }, + { + "area": "东丽区", + "city": "市辖区", + "country": "中国", + "lat": "39.09233234281453", + "lng": "117.32056850791443", + "province": "天津市" + }, + { + "area": "西青区", + "city": "市辖区", + "country": "中国", + "lat": "39.14872660896657", + "lng": "117.01441017993696", + "province": "天津市" + }, + { + "area": "津南区", + "city": "市辖区", + "country": "中国", + "lat": "38.94414856811469", + "lng": "117.36338677903083", + "province": "天津市" + }, + { + "area": "北辰区", + "city": "市辖区", + "country": "中国", + "lat": "39.2303439099184", + "lng": "117.14140273157703", + "province": "天津市" + }, + { + "area": "武清区", + "city": "市辖区", + "country": "中国", + "lat": "39.389871228788344", + "lng": "117.05059715977872", + "province": "天津市" + }, + { + "area": "宝坻区", + "city": "市辖区", + "country": "中国", + "lat": "39.723194482933174", + "lng": "117.31660069247685", + "province": "天津市" + }, + { + "area": "滨海新区", + "city": "市辖区", + "country": "中国", + "lat": "39.00941577364663", + "lng": "117.71739882966088", + "province": "天津市" + }, + { + "area": "宁河区", + "city": "市辖区", + "country": "中国", + "lat": "39.33695643122726", + "lng": "117.83239334341803", + "province": "天津市" + }, + { + "area": "静海区", + "city": "市辖区", + "country": "中国", + "lat": "38.95337068917225", + "lng": "116.98046860454797", + "province": "天津市" + }, + { + "area": "蓟州区", + "city": "市辖区", + "country": "中国", + "lat": "40.04763405252057", + "lng": "117.41341404169536", + "province": "天津市" + }, + { + "area": "", + "city": "石家庄市", + "country": "中国", + "lat": "38.052097109846855", + "lng": "114.46902163264978", + "province": "河北省" + }, + { + "area": "长安区", + "city": "石家庄市", + "country": "中国", + "lat": "38.04325613649811", + "lng": "114.54561160958328", + "province": "河北省" + }, + { + "area": "桥西区", + "city": "石家庄市", + "country": "中国", + "lat": "38.010381080199444", + "lng": "114.46741977426439", + "province": "河北省" + }, + { + "area": "新华区", + "city": "石家庄市", + "country": "中国", + "lat": "38.057119539195526", + "lng": "114.46943844640641", + "province": "河北省" + }, + { + "area": "井陉矿区", + "city": "石家庄市", + "country": "中国", + "lat": "38.07056583451666", + "lng": "114.06863186515059", + "province": "河北省" + }, + { + "area": "裕华区", + "city": "石家庄市", + "country": "中国", + "lat": "38.012087686284076", + "lng": "114.53758291425729", + "province": "河北省" + }, + { + "area": "藁城区", + "city": "石家庄市", + "country": "中国", + "lat": "38.02781655532087", + "lng": "114.8533779044236", + "province": "河北省" + }, + { + "area": "鹿泉区", + "city": "石家庄市", + "country": "中国", + "lat": "38.091749457589636", + "lng": "114.3205975776443", + "province": "河北省" + }, + { + "area": "栾城区", + "city": "石家庄市", + "country": "中国", + "lat": "37.9058163641652", + "lng": "114.65457561879083", + "province": "河北省" + }, + { + "area": "井陉县", + "city": "石家庄市", + "country": "中国", + "lat": "38.03838621492678", + "lng": "114.15146299927575", + "province": "河北省" + }, + { + "area": "正定县", + "city": "石家庄市", + "country": "中国", + "lat": "38.15171372795392", + "lng": "114.57748106365241", + "province": "河北省" + }, + { + "area": "行唐县", + "city": "石家庄市", + "country": "中国", + "lat": "38.444238747675655", + "lng": "114.55960676027597", + "province": "河北省" + }, + { + "area": "灵寿县", + "city": "石家庄市", + "country": "中国", + "lat": "38.31462937004633", + "lng": "114.38947775770787", + "province": "河北省" + }, + { + "area": "高邑县", + "city": "石家庄市", + "country": "中国", + "lat": "37.62187956155255", + "lng": "114.61841307285897", + "province": "河北省" + }, + { + "area": "深泽县", + "city": "石家庄市", + "country": "中国", + "lat": "38.19045120306884", + "lng": "115.20740369912795", + "province": "河北省" + }, + { + "area": "赞皇县", + "city": "石家庄市", + "country": "中国", + "lat": "37.671667061291416", + "lng": "114.39246354556191", + "province": "河北省" + }, + { + "area": "无极县", + "city": "石家庄市", + "country": "中国", + "lat": "38.18543617027971", + "lng": "114.98243934348369", + "province": "河北省" + }, + { + "area": "平山县", + "city": "石家庄市", + "country": "中国", + "lat": "38.271951013310805", + "lng": "113.98543503085234", + "province": "河北省" + }, + { + "area": "元氏县", + "city": "石家庄市", + "country": "中国", + "lat": "37.7723385538555", + "lng": "114.53256551866185", + "province": "河北省" + }, + { + "area": "赵县", + "city": "石家庄市", + "country": "中国", + "lat": "37.76185852288779", + "lng": "114.78259655057873", + "province": "河北省" + }, + { + "area": "石家庄高新技术产业开发区", + "city": "石家庄市", + "country": "中国", + "lat": "38.04814178648914", + "lng": "114.65476830532273", + "province": "河北省" + }, + { + "area": "石家庄循环化工园区", + "city": "石家庄市", + "country": "中国", + "lat": "38.00279799372068", + "lng": "114.69991489449045", + "province": "河北省" + }, + { + "area": "辛集市", + "city": "石家庄市", + "country": "中国", + "lat": "37.949309043172505", + "lng": "115.22445084279079", + "province": "河北省" + }, + { + "area": "晋州市", + "city": "石家庄市", + "country": "中国", + "lat": "38.039491309735894", + "lng": "115.05052901469845", + "province": "河北省" + }, + { + "area": "新乐市", + "city": "石家庄市", + "country": "中国", + "lat": "38.34929264795945", + "lng": "114.69053218326928", + "province": "河北省" + }, + { + "area": "", + "city": "唐山市", + "country": "中国", + "lat": "39.63658372414733", + "lng": "118.18645947203979", + "province": "河北省" + }, + { + "area": "路南区", + "city": "唐山市", + "country": "中国", + "lat": "39.63104285357227", + "lng": "118.16060668861537", + "province": "河北省" + }, + { + "area": "路北区", + "city": "唐山市", + "country": "中国", + "lat": "39.63066079909864", + "lng": "118.20639924927531", + "province": "河北省" + }, + { + "area": "古冶区", + "city": "唐山市", + "country": "中国", + "lat": "39.73973591476624", + "lng": "118.4534009255209", + "province": "河北省" + }, + { + "area": "开平区", + "city": "唐山市", + "country": "中国", + "lat": "39.67714363586181", + "lng": "118.2686076244857", + "province": "河北省" + }, + { + "area": "丰南区", + "city": "唐山市", + "country": "中国", + "lat": "39.58154048510918", + "lng": "118.09036557570423", + "province": "河北省" + }, + { + "area": "丰润区", + "city": "唐山市", + "country": "中国", + "lat": "39.83835343085074", + "lng": "118.16854133135446", + "province": "河北省" + }, + { + "area": "曹妃甸区", + "city": "唐山市", + "country": "中国", + "lat": "39.27928399633476", + "lng": "118.4664598622111", + "province": "河北省" + }, + { + "area": "滦南县", + "city": "唐山市", + "country": "中国", + "lat": "39.51004470246892", + "lng": "118.68040524314775", + "province": "河北省" + }, + { + "area": "乐亭县", + "city": "唐山市", + "country": "中国", + "lat": "39.43193132009613", + "lng": "118.91938406305317", + "province": "河北省" + }, + { + "area": "迁西县", + "city": "唐山市", + "country": "中国", + "lat": "40.147837151362445", + "lng": "118.32038397780872", + "province": "河北省" + }, + { + "area": "玉田县", + "city": "唐山市", + "country": "中国", + "lat": "39.90659234818871", + "lng": "117.74543440564399", + "province": "河北省" + }, + { + "area": "河北唐山芦台经济开发区", + "city": "唐山市", + "country": "中国", + "lat": "39.63658372414733", + "lng": "118.18645947203979", + "province": "河北省" + }, + { + "area": "唐山市汉沽管理区", + "city": "唐山市", + "country": "中国", + "lat": "39.63658372414733", + "lng": "118.18645947203979", + "province": "河北省" + }, + { + "area": "唐山高新技术产业开发区", + "city": "唐山市", + "country": "中国", + "lat": "39.697258450238984", + "lng": "118.1947434657917", + "province": "河北省" + }, + { + "area": "河北唐山海港经济开发区", + "city": "唐山市", + "country": "中国", + "lat": "39.940412688356815", + "lng": "119.61747524096724", + "province": "河北省" + }, + { + "area": "遵化市", + "city": "唐山市", + "country": "中国", + "lat": "40.195533204032955", + "lng": "117.97237521307129", + "province": "河北省" + }, + { + "area": "迁安市", + "city": "唐山市", + "country": "中国", + "lat": "40.00418392493125", + "lng": "118.70645736056483", + "province": "河北省" + }, + { + "area": "滦州市", + "city": "唐山市", + "country": "中国", + "lat": "39.7471157654891", + "lng": "118.71048006246906", + "province": "河北省" + }, + { + "area": "", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.941748102377936", + "lng": "119.60853063334328", + "province": "河北省" + }, + { + "area": "海港区", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.940412688356815", + "lng": "119.61747524096724", + "province": "河北省" + }, + { + "area": "山海关区", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.984445641831485", + "lng": "119.78243521396982", + "province": "河北省" + }, + { + "area": "北戴河区", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.841005667935896", + "lng": "119.491526071177", + "province": "河北省" + }, + { + "area": "抚宁区", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.88141356935017", + "lng": "119.25154914401945", + "province": "河北省" + }, + { + "area": "青龙满族自治县", + "city": "秦皇岛市", + "country": "中国", + "lat": "40.41279370231334", + "lng": "118.95648129586817", + "province": "河北省" + }, + { + "area": "昌黎县", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.71905083387967", + "lng": "119.1693752102054", + "province": "河北省" + }, + { + "area": "卢龙县", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.897958466103006", + "lng": "118.89948911126258", + "province": "河北省" + }, + { + "area": "秦皇岛市经济技术开发区", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.941748102377936", + "lng": "119.60853063334328", + "province": "河北省" + }, + { + "area": "北戴河新区", + "city": "秦皇岛市", + "country": "中国", + "lat": "39.80451411898196", + "lng": "119.4205600257193", + "province": "河北省" + }, + { + "area": "", + "city": "邯郸市", + "country": "中国", + "lat": "36.631262731204046", + "lng": "114.5456282282352", + "province": "河北省" + }, + { + "area": "邯山区", + "city": "邯郸市", + "country": "中国", + "lat": "36.58669219197865", + "lng": "114.49638868967236", + "province": "河北省" + }, + { + "area": "丛台区", + "city": "邯郸市", + "country": "中国", + "lat": "36.64267256598247", + "lng": "114.49943259789293", + "province": "河北省" + }, + { + "area": "复兴区", + "city": "邯郸市", + "country": "中国", + "lat": "36.62332524612653", + "lng": "114.47941224265314", + "province": "河北省" + }, + { + "area": "峰峰矿区", + "city": "邯郸市", + "country": "中国", + "lat": "36.42565361439937", + "lng": "114.21948332130513", + "province": "河北省" + }, + { + "area": "肥乡区", + "city": "邯郸市", + "country": "中国", + "lat": "36.553825253669615", + "lng": "114.80654708225521", + "province": "河北省" + }, + { + "area": "永年区", + "city": "邯郸市", + "country": "中国", + "lat": "36.74756938957492", + "lng": "114.550625142465", + "province": "河北省" + }, + { + "area": "临漳县", + "city": "邯郸市", + "country": "中国", + "lat": "36.3407659805952", + "lng": "114.62642694614402", + "province": "河北省" + }, + { + "area": "成安县", + "city": "邯郸市", + "country": "中国", + "lat": "36.4497962089534", + "lng": "114.67657655801901", + "province": "河北省" + }, + { + "area": "大名县", + "city": "邯郸市", + "country": "中国", + "lat": "36.29128846623129", + "lng": "115.15461253007031", + "province": "河北省" + }, + { + "area": "涉县", + "city": "邯郸市", + "country": "中国", + "lat": "36.590691663211175", + "lng": "113.69758434882932", + "province": "河北省" + }, + { + "area": "磁县", + "city": "邯郸市", + "country": "中国", + "lat": "36.38035894094747", + "lng": "114.38043173139184", + "province": "河北省" + }, + { + "area": "邱县", + "city": "邯郸市", + "country": "中国", + "lat": "36.81736241714275", + "lng": "115.19339516368314", + "province": "河北省" + }, + { + "area": "鸡泽县", + "city": "邯郸市", + "country": "中国", + "lat": "36.91639820641365", + "lng": "114.89658577063967", + "province": "河北省" + }, + { + "area": "广平县", + "city": "邯郸市", + "country": "中国", + "lat": "36.4897799956119", + "lng": "114.9544149064889", + "province": "河北省" + }, + { + "area": "馆陶县", + "city": "邯郸市", + "country": "中国", + "lat": "36.55395672865321", + "lng": "115.28853676634758", + "province": "河北省" + }, + { + "area": "魏县", + "city": "邯郸市", + "country": "中国", + "lat": "36.366156454371385", + "lng": "114.94545044631319", + "province": "河北省" + }, + { + "area": "曲周县", + "city": "邯郸市", + "country": "中国", + "lat": "36.77154483133649", + "lng": "114.96340442938836", + "province": "河北省" + }, + { + "area": "邯郸经济技术开发区", + "city": "邯郸市", + "country": "中国", + "lat": "36.681159670640255", + "lng": "114.572542090128", + "province": "河北省" + }, + { + "area": "邯郸冀南新区", + "city": "邯郸市", + "country": "中国", + "lat": "36.46911446470285", + "lng": "114.47435945382064", + "province": "河北省" + }, + { + "area": "武安市", + "city": "邯郸市", + "country": "中国", + "lat": "36.70248828627979", + "lng": "114.21051607638233", + "province": "河北省" + }, + { + "area": "", + "city": "邢台市", + "country": "中国", + "lat": "37.07716685005908", + "lng": "115.0316624430557", + "province": "河北省" + }, + { + "area": "桥东区", + "city": "邢台市", + "country": "中国", + "lat": "37.073749959650705", + "lng": "114.51347113674177", + "province": "河北省" + }, + { + "area": "桥西区", + "city": "邢台市", + "country": "中国", + "lat": "37.066172415704244", + "lng": "114.47439349959946", + "province": "河北省" + }, + { + "area": "邢台县", + "city": "邢台市", + "country": "中国", + "lat": "37.17710928752027", + "lng": "114.14341085817597", + "province": "河北省" + }, + { + "area": "临城县", + "city": "邢台市", + "country": "中国", + "lat": "37.450788548442155", + "lng": "114.5054433397213", + "province": "河北省" + }, + { + "area": "内丘县", + "city": "邢台市", + "country": "中国", + "lat": "37.292857912046905", + "lng": "114.51849293403419", + "province": "河北省" + }, + { + "area": "柏乡县", + "city": "邢台市", + "country": "中国", + "lat": "37.488758727151506", + "lng": "114.6994973620894", + "province": "河北省" + }, + { + "area": "隆尧县", + "city": "邢台市", + "country": "中国", + "lat": "37.355908006295365", + "lng": "114.77661608164605", + "province": "河北省" + }, + { + "area": "任县", + "city": "邢台市", + "country": "中国", + "lat": "37.12672678352311", + "lng": "114.67860600982715", + "province": "河北省" + }, + { + "area": "南和县", + "city": "邢台市", + "country": "中国", + "lat": "37.010997970560375", + "lng": "114.6905477239546", + "province": "河北省" + }, + { + "area": "宁晋县", + "city": "邢台市", + "country": "中国", + "lat": "37.62561227993201", + "lng": "114.92556169283063", + "province": "河北省" + }, + { + "area": "巨鹿县", + "city": "邢台市", + "country": "中国", + "lat": "37.227088328938194", + "lng": "115.0435873588701", + "province": "河北省" + }, + { + "area": "新河县", + "city": "邢台市", + "country": "中国", + "lat": "37.53459060153626", + "lng": "115.24854716945154", + "province": "河北省" + }, + { + "area": "广宗县", + "city": "邢台市", + "country": "中国", + "lat": "37.08045712216151", + "lng": "115.14960474634384", + "province": "河北省" + }, + { + "area": "平乡县", + "city": "邢台市", + "country": "中国", + "lat": "37.0690963930439", + "lng": "115.03658174368942", + "province": "河北省" + }, + { + "area": "威县", + "city": "邢台市", + "country": "中国", + "lat": "36.98158160866276", + "lng": "115.2736176186073", + "province": "河北省" + }, + { + "area": "清河县", + "city": "邢台市", + "country": "中国", + "lat": "37.04637540161698", + "lng": "115.67439356764524", + "province": "河北省" + }, + { + "area": "临西县", + "city": "邢台市", + "country": "中国", + "lat": "36.87675996654004", + "lng": "115.50762943785641", + "province": "河北省" + }, + { + "area": "河北邢台经济开发区", + "city": "邢台市", + "country": "中国", + "lat": "37.06760897046906", + "lng": "114.57224196625711", + "province": "河北省" + }, + { + "area": "南宫市", + "city": "邢台市", + "country": "中国", + "lat": "37.36406940272302", + "lng": "115.41452905480229", + "province": "河北省" + }, + { + "area": "沙河市", + "city": "邢台市", + "country": "中国", + "lat": "36.8611273411454", + "lng": "114.50947385688346", + "province": "河北省" + }, + { + "area": "", + "city": "保定市", + "country": "中国", + "lat": "38.87998776845534", + "lng": "115.47146383768579", + "province": "河北省" + }, + { + "area": "竞秀区", + "city": "保定市", + "country": "中国", + "lat": "38.88378796169117", + "lng": "115.46543414161117", + "province": "河北省" + }, + { + "area": "莲池区", + "city": "保定市", + "country": "中国", + "lat": "38.86067580704093", + "lng": "115.53548768833184", + "province": "河北省" + }, + { + "area": "满城区", + "city": "保定市", + "country": "中国", + "lat": "38.95544120868623", + "lng": "115.32837508859573", + "province": "河北省" + }, + { + "area": "清苑区", + "city": "保定市", + "country": "中国", + "lat": "38.77100177474947", + "lng": "115.49660588179071", + "province": "河北省" + }, + { + "area": "徐水区", + "city": "保定市", + "country": "中国", + "lat": "39.0247125838342", + "lng": "115.66247952132751", + "province": "河北省" + }, + { + "area": "涞水县", + "city": "保定市", + "country": "中国", + "lat": "39.40033419848886", + "lng": "115.7205430250843", + "province": "河北省" + }, + { + "area": "阜平县", + "city": "保定市", + "country": "中国", + "lat": "38.85535144479584", + "lng": "114.20156347383934", + "province": "河北省" + }, + { + "area": "定兴县", + "city": "保定市", + "country": "中国", + "lat": "39.26942352852659", + "lng": "115.81441011189118", + "province": "河北省" + }, + { + "area": "唐县", + "city": "保定市", + "country": "中国", + "lat": "38.7540199251248", + "lng": "114.98944711459758", + "province": "河北省" + }, + { + "area": "高阳县", + "city": "保定市", + "country": "中国", + "lat": "38.70625773408686", + "lng": "115.78544721513012", + "province": "河北省" + }, + { + "area": "容城县", + "city": "保定市", + "country": "中国", + "lat": "39.04855943541596", + "lng": "115.86863129349015", + "province": "河北省" + }, + { + "area": "涞源县", + "city": "保定市", + "country": "中国", + "lat": "39.36627169152419", + "lng": "114.70047561678977", + "province": "河北省" + }, + { + "area": "望都县", + "city": "保定市", + "country": "中国", + "lat": "38.70015764554925", + "lng": "115.16158760286363", + "province": "河北省" + }, + { + "area": "安新县", + "city": "保定市", + "country": "中国", + "lat": "38.94173429859305", + "lng": "115.94242628265987", + "province": "河北省" + }, + { + "area": "易县", + "city": "保定市", + "country": "中国", + "lat": "39.35505446998136", + "lng": "115.50360664612163", + "province": "河北省" + }, + { + "area": "曲阳县", + "city": "保定市", + "country": "中国", + "lat": "38.62838410412241", + "lng": "114.75145481380322", + "province": "河北省" + }, + { + "area": "蠡县", + "city": "保定市", + "country": "中国", + "lat": "38.494200963237745", + "lng": "115.59044548044898", + "province": "河北省" + }, + { + "area": "顺平县", + "city": "保定市", + "country": "中国", + "lat": "38.84326137036368", + "lng": "115.141597430689", + "province": "河北省" + }, + { + "area": "博野县", + "city": "保定市", + "country": "中国", + "lat": "38.463408004951994", + "lng": "115.47046698806136", + "province": "河北省" + }, + { + "area": "雄县", + "city": "保定市", + "country": "中国", + "lat": "39.00018011949929", + "lng": "116.1146014455186", + "province": "河北省" + }, + { + "area": "保定高新技术产业开发区", + "city": "保定市", + "country": "中国", + "lat": "39.49169492571884", + "lng": "116.05126578672377", + "province": "河北省" + }, + { + "area": "保定白沟新城", + "city": "保定市", + "country": "中国", + "lat": "39.134510134299276", + "lng": "116.05160902925913", + "province": "河北省" + }, + { + "area": "涿州市", + "city": "保定市", + "country": "中国", + "lat": "39.49106583200048", + "lng": "115.98161971138242", + "province": "河北省" + }, + { + "area": "定州市", + "city": "保定市", + "country": "中国", + "lat": "38.522198840134", + "lng": "114.99649620776492", + "province": "河北省" + }, + { + "area": "安国市", + "city": "保定市", + "country": "中国", + "lat": "38.424828318687446", + "lng": "115.33340802487648", + "province": "河北省" + }, + { + "area": "高碑店市", + "city": "保定市", + "country": "中国", + "lat": "39.33233544746168", + "lng": "115.88056905507335", + "province": "河北省" + }, + { + "area": "", + "city": "张家口市", + "country": "中国", + "lat": "40.7732372026915", + "lng": "114.89257223145165", + "province": "河北省" + }, + { + "area": "桥东区", + "city": "张家口市", + "country": "中国", + "lat": "40.79426843742311", + "lng": "114.90060577762738", + "province": "河北省" + }, + { + "area": "桥西区", + "city": "张家口市", + "country": "中国", + "lat": "40.825605695041084", + "lng": "114.8765160984274", + "province": "河北省" + }, + { + "area": "宣化区", + "city": "张家口市", + "country": "中国", + "lat": "40.614591888266105", + "lng": "115.10544440679553", + "province": "河北省" + }, + { + "area": "下花园区", + "city": "张家口市", + "country": "中国", + "lat": "40.5081451826724", + "lng": "115.29351688226434", + "province": "河北省" + }, + { + "area": "万全区", + "city": "张家口市", + "country": "中国", + "lat": "40.77314964899669", + "lng": "114.74742582376042", + "province": "河北省" + }, + { + "area": "崇礼区", + "city": "张家口市", + "country": "中国", + "lat": "40.98047788586999", + "lng": "115.28954933631843", + "province": "河北省" + }, + { + "area": "张北县", + "city": "张家口市", + "country": "中国", + "lat": "41.164943620014895", + "lng": "114.7263751121007", + "province": "河北省" + }, + { + "area": "康保县", + "city": "张家口市", + "country": "中国", + "lat": "41.858636884497415", + "lng": "114.60635583664293", + "province": "河北省" + }, + { + "area": "沽源县", + "city": "张家口市", + "country": "中国", + "lat": "41.676015876096564", + "lng": "115.69540744877906", + "province": "河北省" + }, + { + "area": "尚义县", + "city": "张家口市", + "country": "中国", + "lat": "41.08221563982466", + "lng": "113.97580941782127", + "province": "河北省" + }, + { + "area": "蔚县", + "city": "张家口市", + "country": "中国", + "lat": "39.84708863636645", + "lng": "114.59540055179599", + "province": "河北省" + }, + { + "area": "阳原县", + "city": "张家口市", + "country": "中国", + "lat": "40.10958838873102", + "lng": "114.15752413604322", + "province": "河北省" + }, + { + "area": "怀安县", + "city": "张家口市", + "country": "中国", + "lat": "40.68036934311551", + "lng": "114.39246911505609", + "province": "河北省" + }, + { + "area": "怀来县", + "city": "张家口市", + "country": "中国", + "lat": "40.42028989038194", + "lng": "115.52455288485054", + "province": "河北省" + }, + { + "area": "涿鹿县", + "city": "张家口市", + "country": "中国", + "lat": "40.385834075002876", + "lng": "115.21138346202879", + "province": "河北省" + }, + { + "area": "赤城县", + "city": "张家口市", + "country": "中国", + "lat": "40.918761216841006", + "lng": "115.83850589956863", + "province": "河北省" + }, + { + "area": "张家口经济开发区", + "city": "张家口市", + "country": "中国", + "lat": "40.78012325753511", + "lng": "114.89121650877598", + "province": "河北省" + }, + { + "area": "张家口市察北管理区", + "city": "张家口市", + "country": "中国", + "lat": "41.4081147732358", + "lng": "114.95192606124296", + "province": "河北省" + }, + { + "area": "张家口市塞北管理区", + "city": "张家口市", + "country": "中国", + "lat": "41.87869391437773", + "lng": "115.82875802715765", + "province": "河北省" + }, + { + "area": "", + "city": "承德市", + "country": "中国", + "lat": "40.95785601233803", + "lng": "117.96939750996681", + "province": "河北省" + }, + { + "area": "双桥区", + "city": "承德市", + "country": "中国", + "lat": "40.98082447740105", + "lng": "117.94942790898834", + "province": "河北省" + }, + { + "area": "双滦区", + "city": "承德市", + "country": "中国", + "lat": "40.964729148178336", + "lng": "117.80657828882504", + "province": "河北省" + }, + { + "area": "鹰手营子矿区", + "city": "承德市", + "country": "中国", + "lat": "40.55204323362298", + "lng": "117.66560909158578", + "province": "河北省" + }, + { + "area": "承德县", + "city": "承德市", + "country": "中国", + "lat": "40.77436719493557", + "lng": "118.1804557369944", + "province": "河北省" + }, + { + "area": "兴隆县", + "city": "承德市", + "country": "中国", + "lat": "40.42345402963516", + "lng": "117.50742737263927", + "province": "河北省" + }, + { + "area": "滦平县", + "city": "承德市", + "country": "中国", + "lat": "40.947560962909996", + "lng": "117.33949787111233", + "province": "河北省" + }, + { + "area": "隆化县", + "city": "承德市", + "country": "中国", + "lat": "41.31989880502099", + "lng": "117.74545102429592", + "province": "河北省" + }, + { + "area": "丰宁满族自治县", + "city": "承德市", + "country": "中国", + "lat": "41.21533638000358", + "lng": "116.65239270009364", + "province": "河北省" + }, + { + "area": "宽城满族自治县", + "city": "承德市", + "country": "中国", + "lat": "40.61715150781358", + "lng": "118.49159436054974", + "province": "河北省" + }, + { + "area": "围场满族蒙古族自治县", + "city": "承德市", + "country": "中国", + "lat": "41.9443237736111", + "lng": "117.76656434784968", + "province": "河北省" + }, + { + "area": "承德高新技术产业开发区", + "city": "承德市", + "country": "中国", + "lat": "40.99195718369987", + "lng": "118.2910648130824", + "province": "河北省" + }, + { + "area": "平泉市", + "city": "承德市", + "country": "中国", + "lat": "41.02375562592939", + "lng": "118.70742672204064", + "province": "河北省" + }, + { + "area": "", + "city": "沧州市", + "country": "中国", + "lat": "38.310215141107044", + "lng": "116.84558075595014", + "province": "河北省" + }, + { + "area": "新华区", + "city": "沧州市", + "country": "中国", + "lat": "38.32036671947827", + "lng": "116.87243317374606", + "province": "河北省" + }, + { + "area": "运河区", + "city": "沧州市", + "country": "中国", + "lat": "38.316522737475516", + "lng": "116.83861197129539", + "province": "河北省" + }, + { + "area": "沧县", + "city": "沧州市", + "country": "中国", + "lat": "38.29945274340688", + "lng": "116.88439779466401", + "province": "河北省" + }, + { + "area": "青县", + "city": "沧州市", + "country": "中国", + "lat": "38.588464758639795", + "lng": "116.81057477836235", + "province": "河北省" + }, + { + "area": "东光县", + "city": "沧州市", + "country": "中国", + "lat": "37.894513906653266", + "lng": "116.54340955697872", + "province": "河北省" + }, + { + "area": "海兴县", + "city": "沧州市", + "country": "中国", + "lat": "38.14940251651842", + "lng": "117.50441804918084", + "province": "河北省" + }, + { + "area": "盐山县", + "city": "沧州市", + "country": "中国", + "lat": "38.06431839955863", + "lng": "117.23741362448348", + "province": "河北省" + }, + { + "area": "肃宁县", + "city": "沧州市", + "country": "中国", + "lat": "38.428905919717586", + "lng": "115.8365176799834", + "province": "河北省" + }, + { + "area": "南皮县", + "city": "沧州市", + "country": "中国", + "lat": "38.045187886965145", + "lng": "116.71560115882829", + "province": "河北省" + }, + { + "area": "吴桥县", + "city": "沧州市", + "country": "中国", + "lat": "37.63390875555352", + "lng": "116.39739206243448", + "province": "河北省" + }, + { + "area": "献县", + "city": "沧州市", + "country": "中国", + "lat": "38.19598143800661", + "lng": "116.12956002887077", + "province": "河北省" + }, + { + "area": "孟村回族自治县", + "city": "沧州市", + "country": "中国", + "lat": "38.059839127888104", + "lng": "117.11043607454543", + "province": "河北省" + }, + { + "area": "河北沧州经济开发区", + "city": "沧州市", + "country": "中国", + "lat": "39.15348514470478", + "lng": "117.20359278135501", + "province": "河北省" + }, + { + "area": "沧州高新技术产业开发区", + "city": "沧州市", + "country": "中国", + "lat": "38.34391404452375", + "lng": "116.81737899344769", + "province": "河北省" + }, + { + "area": "沧州渤海新区", + "city": "沧州市", + "country": "中国", + "lat": "38.28237331693076", + "lng": "117.7620689575861", + "province": "河北省" + }, + { + "area": "泊头市", + "city": "沧州市", + "country": "中国", + "lat": "38.08925691544578", + "lng": "116.5846280358124", + "province": "河北省" + }, + { + "area": "任丘市", + "city": "沧州市", + "country": "中国", + "lat": "38.717348630774524", + "lng": "116.1056050954973", + "province": "河北省" + }, + { + "area": "黄骅市", + "city": "沧州市", + "country": "中国", + "lat": "38.37749390073505", + "lng": "117.33648109171817", + "province": "河北省" + }, + { + "area": "河间市", + "city": "沧州市", + "country": "中国", + "lat": "38.45135651510629", + "lng": "116.10562809211834", + "province": "河北省" + }, + { + "area": "", + "city": "廊坊市", + "country": "中国", + "lat": "39.54336666275853", + "lng": "116.69058173342549", + "province": "河北省" + }, + { + "area": "安次区", + "city": "廊坊市", + "country": "中国", + "lat": "39.526159764040514", + "lng": "116.70963326617274", + "province": "河北省" + }, + { + "area": "广阳区", + "city": "廊坊市", + "country": "中国", + "lat": "39.52861144733396", + "lng": "116.71761426147614", + "province": "河北省" + }, + { + "area": "固安县", + "city": "廊坊市", + "country": "中国", + "lat": "39.44448485530404", + "lng": "116.30542004093144", + "province": "河北省" + }, + { + "area": "永清县", + "city": "廊坊市", + "country": "中国", + "lat": "39.3278529985738", + "lng": "116.5054292898474", + "province": "河北省" + }, + { + "area": "香河县", + "city": "廊坊市", + "country": "中国", + "lat": "39.76793918854631", + "lng": "117.01240210779996", + "province": "河北省" + }, + { + "area": "大城县", + "city": "廊坊市", + "country": "中国", + "lat": "38.71085864002598", + "lng": "116.66040917846469", + "province": "河北省" + }, + { + "area": "文安县", + "city": "廊坊市", + "country": "中国", + "lat": "38.878950493070235", + "lng": "116.46460947899904", + "province": "河北省" + }, + { + "area": "大厂回族自治县", + "city": "廊坊市", + "country": "中国", + "lat": "39.89220839408563", + "lng": "116.99640912565307", + "province": "河北省" + }, + { + "area": "廊坊经济技术开发区", + "city": "廊坊市", + "country": "中国", + "lat": "39.54336666275853", + "lng": "116.69058173342549", + "province": "河北省" + }, + { + "area": "霸州市", + "city": "廊坊市", + "country": "中国", + "lat": "39.13092059698142", + "lng": "116.39839726630014", + "province": "河北省" + }, + { + "area": "三河市", + "city": "廊坊市", + "country": "中国", + "lat": "39.98809955244307", + "lng": "117.0845878724791", + "province": "河北省" + }, + { + "area": "", + "city": "衡水市", + "country": "中国", + "lat": "37.745191408077424", + "lng": "115.6754061376161", + "province": "河北省" + }, + { + "area": "桃城区", + "city": "衡水市", + "country": "中国", + "lat": "37.741636751694145", + "lng": "115.68139532011222", + "province": "河北省" + }, + { + "area": "冀州区", + "city": "衡水市", + "country": "中国", + "lat": "37.55708602583317", + "lng": "115.58542988146456", + "province": "河北省" + }, + { + "area": "枣强县", + "city": "衡水市", + "country": "中国", + "lat": "37.51936368976413", + "lng": "115.7305629044037", + "province": "河北省" + }, + { + "area": "武邑县", + "city": "衡水市", + "country": "中国", + "lat": "37.807764276867424", + "lng": "115.89451363116582", + "province": "河北省" + }, + { + "area": "武强县", + "city": "衡水市", + "country": "中国", + "lat": "38.04685680523654", + "lng": "115.98961391177681", + "province": "河北省" + }, + { + "area": "饶阳县", + "city": "衡水市", + "country": "中国", + "lat": "38.24103752542849", + "lng": "115.73257160535455", + "province": "河北省" + }, + { + "area": "安平县", + "city": "衡水市", + "country": "中国", + "lat": "38.24050692219121", + "lng": "115.5255492853222", + "province": "河北省" + }, + { + "area": "故城县", + "city": "衡水市", + "country": "中国", + "lat": "37.35334755247688", + "lng": "115.97260216135105", + "province": "河北省" + }, + { + "area": "景县", + "city": "衡水市", + "country": "中国", + "lat": "37.69881455139486", + "lng": "116.27741078529978", + "province": "河北省" + }, + { + "area": "阜城县", + "city": "衡水市", + "country": "中国", + "lat": "37.86873245790551", + "lng": "116.18242153524983", + "province": "河北省" + }, + { + "area": "河北衡水高新技术产业开发区", + "city": "衡水市", + "country": "中国", + "lat": "39.15348514470478", + "lng": "117.20359278135501", + "province": "河北省" + }, + { + "area": "衡水滨湖新区", + "city": "衡水市", + "country": "中国", + "lat": "37.70161603709319", + "lng": "115.70627999968852", + "province": "河北省" + }, + { + "area": "深州市", + "city": "衡水市", + "country": "中国", + "lat": "38.00694123492171", + "lng": "115.56636927583166", + "province": "河北省" + }, + { + "area": "", + "city": "太原市", + "country": "中国", + "lat": "37.87698902884778", + "lng": "112.55639149167204", + "province": "山西省" + }, + { + "area": "小店区", + "city": "太原市", + "country": "中国", + "lat": "37.742322528644706", + "lng": "112.57239624162112", + "province": "山西省" + }, + { + "area": "迎泽区", + "city": "太原市", + "country": "中国", + "lat": "37.8695324842251", + "lng": "112.56938467239891", + "province": "山西省" + }, + { + "area": "杏花岭区", + "city": "太原市", + "country": "中国", + "lat": "37.90018624684476", + "lng": "112.57638301130496", + "province": "山西省" + }, + { + "area": "尖草坪区", + "city": "太原市", + "country": "中国", + "lat": "37.94594335454805", + "lng": "112.49360496703545", + "province": "山西省" + }, + { + "area": "万柏林区", + "city": "太原市", + "country": "中国", + "lat": "37.8649744104023", + "lng": "112.52257675702106", + "province": "山西省" + }, + { + "area": "晋源区", + "city": "太原市", + "country": "中国", + "lat": "37.72116885784946", + "lng": "112.48456424072192", + "province": "山西省" + }, + { + "area": "清徐县", + "city": "太原市", + "country": "中国", + "lat": "37.613066838238375", + "lng": "112.36455763137184", + "province": "山西省" + }, + { + "area": "阳曲县", + "city": "太原市", + "country": "中国", + "lat": "38.06462081944815", + "lng": "112.67940895159992", + "province": "山西省" + }, + { + "area": "娄烦县", + "city": "太原市", + "country": "中国", + "lat": "38.073195368895746", + "lng": "111.80359063362269", + "province": "山西省" + }, + { + "area": "山西转型综合改革示范区", + "city": "太原市", + "country": "中国", + "lat": "37.740098028382796", + "lng": "112.60392999892117", + "province": "山西省" + }, + { + "area": "古交市", + "city": "太原市", + "country": "中国", + "lat": "37.912999960962374", + "lng": "112.18245286889747", + "province": "山西省" + }, + { + "area": "", + "city": "大同市", + "country": "中国", + "lat": "40.0824687161612", + "lng": "113.30643625858623", + "province": "山西省" + }, + { + "area": "新荣区", + "city": "大同市", + "country": "中国", + "lat": "40.261971219328466", + "lng": "113.14644373539272", + "province": "山西省" + }, + { + "area": "平城区", + "city": "大同市", + "country": "中国", + "lat": "40.08199837502475", + "lng": "113.30442522204106", + "province": "山西省" + }, + { + "area": "云冈区", + "city": "大同市", + "country": "中国", + "lat": "39.99683881127932", + "lng": "113.16240150396362", + "province": "山西省" + }, + { + "area": "云州区", + "city": "大同市", + "country": "中国", + "lat": "40.046229886508016", + "lng": "113.61847103171833", + "province": "山西省" + }, + { + "area": "阳高县", + "city": "大同市", + "country": "中国", + "lat": "40.36739184247229", + "lng": "113.75541420332299", + "province": "山西省" + }, + { + "area": "天镇县", + "city": "大同市", + "country": "中国", + "lat": "40.42641219869095", + "lng": "114.0974775330426", + "province": "山西省" + }, + { + "area": "广灵县", + "city": "大同市", + "country": "中国", + "lat": "39.76600421713898", + "lng": "114.2885863709657", + "province": "山西省" + }, + { + "area": "灵丘县", + "city": "大同市", + "country": "中国", + "lat": "39.448825128052334", + "lng": "114.24136819946143", + "province": "山西省" + }, + { + "area": "浑源县", + "city": "大同市", + "country": "中国", + "lat": "39.698952969845486", + "lng": "113.70560028821707", + "province": "山西省" + }, + { + "area": "左云县", + "city": "大同市", + "country": "中国", + "lat": "40.01962344901451", + "lng": "112.7094632895556", + "province": "山西省" + }, + { + "area": "山西大同经济开发区", + "city": "大同市", + "country": "中国", + "lat": "40.07629163955108", + "lng": "113.40230261413612", + "province": "山西省" + }, + { + "area": "", + "city": "阳泉市", + "country": "中国", + "lat": "37.862360847859385", + "lng": "113.58761666287546", + "province": "山西省" + }, + { + "area": "城区", + "city": "阳泉市", + "country": "中国", + "lat": "37.85343342071212", + "lng": "113.60656821421946", + "province": "山西省" + }, + { + "area": "矿区", + "city": "阳泉市", + "country": "中国", + "lat": "37.874409150947606", + "lng": "113.5615212471328", + "province": "山西省" + }, + { + "area": "郊区", + "city": "阳泉市", + "country": "中国", + "lat": "37.95035289294265", + "lng": "113.60060283681935", + "province": "山西省" + }, + { + "area": "平定县", + "city": "阳泉市", + "country": "中国", + "lat": "37.792796383591316", + "lng": "113.66442115516472", + "province": "山西省" + }, + { + "area": "盂县", + "city": "阳泉市", + "country": "中国", + "lat": "38.091979630200996", + "lng": "113.4184204607489", + "province": "山西省" + }, + { + "area": "", + "city": "长治市", + "country": "中国", + "lat": "36.2012683721548", + "lng": "113.12255886984902", + "province": "山西省" + }, + { + "area": "潞州区", + "city": "长治市", + "country": "中国", + "lat": "36.209472481338004", + "lng": "113.12952091721245", + "province": "山西省" + }, + { + "area": "上党区", + "city": "长治市", + "country": "中国", + "lat": "36.05928647929114", + "lng": "113.05741608985974", + "province": "山西省" + }, + { + "area": "屯留区", + "city": "长治市", + "country": "中国", + "lat": "36.321630843108416", + "lng": "112.898474763774", + "province": "山西省" + }, + { + "area": "潞城区", + "city": "长治市", + "country": "中国", + "lat": "36.339691267612324", + "lng": "113.23557845894248", + "province": "山西省" + }, + { + "area": "襄垣县", + "city": "长治市", + "country": "中国", + "lat": "36.54168582115512", + "lng": "113.05741258646825", + "province": "山西省" + }, + { + "area": "平顺县", + "city": "长治市", + "country": "中国", + "lat": "36.205989459384334", + "lng": "113.44251696707077", + "province": "山西省" + }, + { + "area": "黎城县", + "city": "长治市", + "country": "中国", + "lat": "36.50866990144076", + "lng": "113.39343247603895", + "province": "山西省" + }, + { + "area": "壶关县", + "city": "长治市", + "country": "中国", + "lat": "36.121334604236964", + "lng": "113.21357985530864", + "province": "山西省" + }, + { + "area": "长子县", + "city": "长治市", + "country": "中国", + "lat": "36.128001557793574", + "lng": "112.88456585041024", + "province": "山西省" + }, + { + "area": "武乡县", + "city": "长治市", + "country": "中国", + "lat": "36.84316794930056", + "lng": "112.8706056438019", + "province": "山西省" + }, + { + "area": "沁县", + "city": "长治市", + "country": "中国", + "lat": "36.7621899385521", + "lng": "112.70545801477827", + "province": "山西省" + }, + { + "area": "沁源县", + "city": "长治市", + "country": "中国", + "lat": "36.506103350913286", + "lng": "112.34445202693917", + "province": "山西省" + }, + { + "area": "山西长治高新技术产业园区", + "city": "长治市", + "country": "中国", + "lat": "36.2012683721548", + "lng": "113.12255886984902", + "province": "山西省" + }, + { + "area": "", + "city": "晋城市", + "country": "中国", + "lat": "35.49628458647257", + "lng": "112.85857823132879", + "province": "山西省" + }, + { + "area": "城区", + "city": "晋城市", + "country": "中国", + "lat": "35.50727892458355", + "lng": "112.85958379451667", + "province": "山西省" + }, + { + "area": "沁水县", + "city": "晋城市", + "country": "中国", + "lat": "35.69636446245674", + "lng": "112.19342620968516", + "province": "山西省" + }, + { + "area": "阳城县", + "city": "晋城市", + "country": "中国", + "lat": "35.492181320425026", + "lng": "112.42145378711842", + "province": "山西省" + }, + { + "area": "陵川县", + "city": "晋城市", + "country": "中国", + "lat": "35.781743639537595", + "lng": "113.28740655466288", + "province": "山西省" + }, + { + "area": "泽州县", + "city": "晋城市", + "country": "中国", + "lat": "35.59976972948786", + "lng": "112.7944012195933", + "province": "山西省" + }, + { + "area": "高平市", + "city": "晋城市", + "country": "中国", + "lat": "35.80433679857751", + "lng": "112.93041239923134", + "province": "山西省" + }, + { + "area": "", + "city": "朔州市", + "country": "中国", + "lat": "39.337108370541735", + "lng": "112.4393709396677", + "province": "山西省" + }, + { + "area": "朔城区", + "city": "朔州市", + "country": "中国", + "lat": "39.325302712534004", + "lng": "112.43837642563759", + "province": "山西省" + }, + { + "area": "平鲁区", + "city": "朔州市", + "country": "中国", + "lat": "39.517389104237175", + "lng": "112.29552500886327", + "province": "山西省" + }, + { + "area": "山阴县", + "city": "朔州市", + "country": "中国", + "lat": "39.53403049801094", + "lng": "112.82243194472665", + "province": "山西省" + }, + { + "area": "应县", + "city": "朔州市", + "country": "中国", + "lat": "39.56007785237528", + "lng": "113.19749353921925", + "province": "山西省" + }, + { + "area": "右玉县", + "city": "朔州市", + "country": "中国", + "lat": "39.99485955543098", + "lng": "112.47350008124718", + "province": "山西省" + }, + { + "area": "山西朔州经济开发区", + "city": "朔州市", + "country": "中国", + "lat": "39.337108370541735", + "lng": "112.4393709396677", + "province": "山西省" + }, + { + "area": "怀仁市", + "city": "朔州市", + "country": "中国", + "lat": "39.83375688952166", + "lng": "113.1066084673833", + "province": "山西省" + }, + { + "area": "", + "city": "晋中市", + "country": "中国", + "lat": "37.69283940975972", + "lng": "112.75959475565928", + "province": "山西省" + }, + { + "area": "榆次区", + "city": "晋中市", + "country": "中国", + "lat": "37.703940486801216", + "lng": "112.71450350211099", + "province": "山西省" + }, + { + "area": "榆社县", + "city": "晋中市", + "country": "中国", + "lat": "37.07636966870016", + "lng": "112.98159856583429", + "province": "山西省" + }, + { + "area": "左权县", + "city": "晋中市", + "country": "中国", + "lat": "37.088555147170815", + "lng": "113.38545184005775", + "province": "山西省" + }, + { + "area": "和顺县", + "city": "晋中市", + "country": "中国", + "lat": "37.33480773868841", + "lng": "113.57660568308691", + "province": "山西省" + }, + { + "area": "昔阳县", + "city": "晋中市", + "country": "中国", + "lat": "37.61788404299596", + "lng": "113.71361290387442", + "province": "山西省" + }, + { + "area": "寿阳县", + "city": "晋中市", + "country": "中国", + "lat": "37.9013076069566", + "lng": "113.18341017492547", + "province": "山西省" + }, + { + "area": "太谷县", + "city": "晋中市", + "country": "中国", + "lat": "37.42739557731329", + "lng": "112.55738411926058", + "province": "山西省" + }, + { + "area": "祁县", + "city": "晋中市", + "country": "中国", + "lat": "37.36413128347519", + "lng": "112.34244242768281", + "province": "山西省" + }, + { + "area": "平遥县", + "city": "晋中市", + "country": "中国", + "lat": "37.195600690703", + "lng": "112.182455563814", + "province": "山西省" + }, + { + "area": "灵石县", + "city": "晋中市", + "country": "中国", + "lat": "36.85336750127023", + "lng": "111.78561787596237", + "province": "山西省" + }, + { + "area": "介休市", + "city": "晋中市", + "country": "中国", + "lat": "37.03268640360337", + "lng": "111.92356319719394", + "province": "山西省" + }, + { + "area": "", + "city": "运城市", + "country": "中国", + "lat": "35.03270691290923", + "lng": "111.01338945447925", + "province": "山西省" + }, + { + "area": "盐湖区", + "city": "运城市", + "country": "中国", + "lat": "35.0214253278287", + "lng": "111.00437711461986", + "province": "山西省" + }, + { + "area": "临猗县", + "city": "运城市", + "country": "中国", + "lat": "35.149542242621784", + "lng": "110.78040700351404", + "province": "山西省" + }, + { + "area": "万荣县", + "city": "运城市", + "country": "中国", + "lat": "35.42110880053557", + "lng": "110.84457611016106", + "province": "山西省" + }, + { + "area": "闻喜县", + "city": "运城市", + "country": "中国", + "lat": "35.36293119638129", + "lng": "111.23141035768413", + "province": "山西省" + }, + { + "area": "稷山县", + "city": "运城市", + "country": "中国", + "lat": "35.61040356961574", + "lng": "110.98941457872347", + "province": "山西省" + }, + { + "area": "新绛县", + "city": "运城市", + "country": "中国", + "lat": "35.62263010308172", + "lng": "111.23140649497044", + "province": "山西省" + }, + { + "area": "绛县", + "city": "运城市", + "country": "中国", + "lat": "35.49727637389565", + "lng": "111.57548652055998", + "province": "山西省" + }, + { + "area": "垣曲县", + "city": "运城市", + "country": "中国", + "lat": "35.30301451741769", + "lng": "111.67660670571551", + "province": "山西省" + }, + { + "area": "夏县", + "city": "运城市", + "country": "中国", + "lat": "35.14746177980724", + "lng": "111.22643149939508", + "province": "山西省" + }, + { + "area": "平陆县", + "city": "运城市", + "country": "中国", + "lat": "34.84292515458109", + "lng": "111.22348047596425", + "province": "山西省" + }, + { + "area": "芮城县", + "city": "运城市", + "country": "中国", + "lat": "34.69938811056296", + "lng": "110.70061151319877", + "province": "山西省" + }, + { + "area": "永济市", + "city": "运城市", + "country": "中国", + "lat": "34.87282971471371", + "lng": "110.45457767130965", + "province": "山西省" + }, + { + "area": "河津市", + "city": "运城市", + "country": "中国", + "lat": "35.60192657532228", + "lng": "110.71857214373472", + "province": "山西省" + }, + { + "area": "", + "city": "忻州市", + "country": "中国", + "lat": "38.42238338517772", + "lng": "112.74062416023847", + "province": "山西省" + }, + { + "area": "忻府区", + "city": "忻州市", + "country": "中国", + "lat": "38.409879817619995", + "lng": "112.75261366421904", + "province": "山西省" + }, + { + "area": "定襄县", + "city": "忻州市", + "country": "中国", + "lat": "38.4799743058469", + "lng": "112.96352861151779", + "province": "山西省" + }, + { + "area": "五台县", + "city": "忻州市", + "country": "中国", + "lat": "38.73418159056545", + "lng": "113.26145109491867", + "province": "山西省" + }, + { + "area": "代县", + "city": "忻州市", + "country": "中国", + "lat": "39.07272834638067", + "lng": "112.96655194854216", + "province": "山西省" + }, + { + "area": "繁峙县", + "city": "忻州市", + "country": "中国", + "lat": "39.19523743073412", + "lng": "113.27140827251347", + "province": "山西省" + }, + { + "area": "宁武县", + "city": "忻州市", + "country": "中国", + "lat": "39.02434238143123", + "lng": "112.32639824212184", + "province": "山西省" + }, + { + "area": "静乐县", + "city": "忻州市", + "country": "中国", + "lat": "38.36514708843798", + "lng": "111.94543190585105", + "province": "山西省" + }, + { + "area": "神池县", + "city": "忻州市", + "country": "中国", + "lat": "39.09687582486334", + "lng": "112.21738276000855", + "province": "山西省" + }, + { + "area": "五寨县", + "city": "忻州市", + "country": "中国", + "lat": "38.917019909691845", + "lng": "111.85340993856165", + "province": "山西省" + }, + { + "area": "岢岚县", + "city": "忻州市", + "country": "中国", + "lat": "38.710151038936225", + "lng": "111.57947778177136", + "province": "山西省" + }, + { + "area": "河曲县", + "city": "忻州市", + "country": "中国", + "lat": "39.39070248871515", + "lng": "111.14444863516302", + "province": "山西省" + }, + { + "area": "保德县", + "city": "忻州市", + "country": "中国", + "lat": "39.02833693239553", + "lng": "111.09254175804939", + "province": "山西省" + }, + { + "area": "偏关县", + "city": "忻州市", + "country": "中国", + "lat": "39.44223009038652", + "lng": "111.51447352049172", + "province": "山西省" + }, + { + "area": "五台山风景名胜区", + "city": "忻州市", + "country": "中国", + "lat": "38.976197885134965", + "lng": "113.59570814975659", + "province": "山西省" + }, + { + "area": "原平市", + "city": "忻州市", + "country": "中国", + "lat": "38.73647589760487", + "lng": "112.71748713403183", + "province": "山西省" + }, + { + "area": "", + "city": "临汾市", + "country": "中国", + "lat": "36.093741895419726", + "lng": "111.52553022403073", + "province": "山西省" + }, + { + "area": "尧都区", + "city": "临汾市", + "country": "中国", + "lat": "36.084562230191636", + "lng": "111.58643021726583", + "province": "山西省" + }, + { + "area": "曲沃县", + "city": "临汾市", + "country": "中国", + "lat": "35.64732733598219", + "lng": "111.48239637818867", + "province": "山西省" + }, + { + "area": "翼城县", + "city": "临汾市", + "country": "中国", + "lat": "35.744429075038624", + "lng": "111.72537553219112", + "province": "山西省" + }, + { + "area": "襄汾县", + "city": "临汾市", + "country": "中国", + "lat": "35.88206267067628", + "lng": "111.44854005199257", + "province": "山西省" + }, + { + "area": "洪洞县", + "city": "临汾市", + "country": "中国", + "lat": "36.25946707937692", + "lng": "111.68158942671826", + "province": "山西省" + }, + { + "area": "古县", + "city": "临汾市", + "country": "中国", + "lat": "36.272338064826975", + "lng": "111.92657314946622", + "province": "山西省" + }, + { + "area": "安泽县", + "city": "临汾市", + "country": "中国", + "lat": "36.1535143805225", + "lng": "112.25661283959589", + "province": "山西省" + }, + { + "area": "浮山县", + "city": "临汾市", + "country": "中国", + "lat": "35.97439275394264", + "lng": "111.8553849530559", + "province": "山西省" + }, + { + "area": "吉县", + "city": "临汾市", + "country": "中国", + "lat": "36.10399906202126", + "lng": "110.68854637189425", + "province": "山西省" + }, + { + "area": "乡宁县", + "city": "临汾市", + "country": "中国", + "lat": "35.9764416654741", + "lng": "110.85349790082506", + "province": "山西省" + }, + { + "area": "大宁县", + "city": "临汾市", + "country": "中国", + "lat": "36.47130568709722", + "lng": "110.75938440881679", + "province": "山西省" + }, + { + "area": "隰县", + "city": "临汾市", + "country": "中国", + "lat": "36.69906138322701", + "lng": "110.9475912707899", + "province": "山西省" + }, + { + "area": "永和县", + "city": "临汾市", + "country": "中国", + "lat": "36.765908673932856", + "lng": "110.63841589392663", + "province": "山西省" + }, + { + "area": "蒲县", + "city": "临汾市", + "country": "中国", + "lat": "36.41800542917659", + "lng": "111.10247405258157", + "province": "山西省" + }, + { + "area": "汾西县", + "city": "临汾市", + "country": "中国", + "lat": "36.65878226423185", + "lng": "111.56954629571415", + "province": "山西省" + }, + { + "area": "侯马市", + "city": "临汾市", + "country": "中国", + "lat": "35.625364816257864", + "lng": "111.37839658489034", + "province": "山西省" + }, + { + "area": "霍州市", + "city": "临汾市", + "country": "中国", + "lat": "36.574606950709004", + "lng": "111.76150942217721", + "province": "山西省" + }, + { + "area": "", + "city": "吕梁市", + "country": "中国", + "lat": "37.524497749577115", + "lng": "111.15044967529185", + "province": "山西省" + }, + { + "area": "离石区", + "city": "吕梁市", + "country": "中国", + "lat": "37.52357747590664", + "lng": "111.15749077354018", + "province": "山西省" + }, + { + "area": "文水县", + "city": "吕梁市", + "country": "中国", + "lat": "37.44430008265076", + "lng": "112.03559869260123", + "province": "山西省" + }, + { + "area": "交城县", + "city": "吕梁市", + "country": "中国", + "lat": "37.55777223625885", + "lng": "112.16256770863693", + "province": "山西省" + }, + { + "area": "兴县", + "city": "吕梁市", + "country": "中国", + "lat": "38.468803780990854", + "lng": "111.1343921049788", + "province": "山西省" + }, + { + "area": "临县", + "city": "吕梁市", + "country": "中国", + "lat": "37.95721067232133", + "lng": "110.99841488128904", + "province": "山西省" + }, + { + "area": "柳林县", + "city": "吕梁市", + "country": "中国", + "lat": "37.43549296493386", + "lng": "110.89538983929958", + "province": "山西省" + }, + { + "area": "石楼县", + "city": "吕梁市", + "country": "中国", + "lat": "37.00447050301227", + "lng": "110.84159553247896", + "province": "山西省" + }, + { + "area": "岚县", + "city": "吕梁市", + "country": "中国", + "lat": "38.285028788850155", + "lng": "111.67859223038421", + "province": "山西省" + }, + { + "area": "方山县", + "city": "吕梁市", + "country": "中国", + "lat": "37.90102023915963", + "lng": "111.25037044293047", + "province": "山西省" + }, + { + "area": "中阳县", + "city": "吕梁市", + "country": "中国", + "lat": "37.362872792380124", + "lng": "111.18562956482637", + "province": "山西省" + }, + { + "area": "交口县", + "city": "吕梁市", + "country": "中国", + "lat": "36.98787266655283", + "lng": "111.18762820475553", + "province": "山西省" + }, + { + "area": "孝义市", + "city": "吕梁市", + "country": "中国", + "lat": "37.15106331910215", + "lng": "111.78560601832963", + "province": "山西省" + }, + { + "area": "汾阳市", + "city": "吕梁市", + "country": "中国", + "lat": "37.271291794517566", + "lng": "111.79459661919569", + "province": "山西省" + }, + { + "area": "", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.84842299711348", + "lng": "111.75550856170946", + "province": "内蒙古自治区" + }, + { + "area": "新城区", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.86387702118283", + "lng": "111.67162012199908", + "province": "内蒙古自治区" + }, + { + "area": "回民区", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.81450636294379", + "lng": "111.6304701838758", + "province": "内蒙古自治区" + }, + { + "area": "玉泉区", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.75805896863502", + "lng": "111.68157514366065", + "province": "内蒙古自治区" + }, + { + "area": "赛罕区", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.79839423697477", + "lng": "111.70842064450414", + "province": "内蒙古自治区" + }, + { + "area": "土默特左旗", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.7352937117589", + "lng": "111.16958672672367", + "province": "内蒙古自治区" + }, + { + "area": "托克托县", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.28314672900654", + "lng": "111.20057494308753", + "province": "内蒙古自治区" + }, + { + "area": "和林格尔县", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.384797744251024", + "lng": "111.8284302182624", + "province": "内蒙古自治区" + }, + { + "area": "清水河县", + "city": "呼和浩特市", + "country": "中国", + "lat": "39.92633385438891", + "lng": "111.653576488034", + "province": "内蒙古自治区" + }, + { + "area": "武川县", + "city": "呼和浩特市", + "country": "中国", + "lat": "41.10241872379268", + "lng": "111.45749705623255", + "province": "内蒙古自治区" + }, + { + "area": "呼和浩特金海工业园区", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.810666404706566", + "lng": "111.61218203115092", + "province": "内蒙古自治区" + }, + { + "area": "呼和浩特经济技术开发区", + "city": "呼和浩特市", + "country": "中国", + "lat": "40.789838887267045", + "lng": "111.54846764675305", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "包头市", + "country": "中国", + "lat": "40.66292878826139", + "lng": "109.84654350721243", + "province": "内蒙古自治区" + }, + { + "area": "东河区", + "city": "包头市", + "country": "中国", + "lat": "40.58222803832416", + "lng": "110.05039480879458", + "province": "内蒙古自治区" + }, + { + "area": "昆都仑区", + "city": "包头市", + "country": "中国", + "lat": "40.647644106920914", + "lng": "109.84553830334677", + "province": "内蒙古自治区" + }, + { + "area": "青山区", + "city": "包头市", + "country": "中国", + "lat": "40.64947306878302", + "lng": "109.90741601229894", + "province": "内蒙古自治区" + }, + { + "area": "石拐区", + "city": "包头市", + "country": "中国", + "lat": "40.67829939834036", + "lng": "110.27838088451328", + "province": "内蒙古自治区" + }, + { + "area": "白云鄂博矿区", + "city": "包头市", + "country": "中国", + "lat": "41.77499523418191", + "lng": "109.9796257617352", + "province": "内蒙古自治区" + }, + { + "area": "九原区", + "city": "包头市", + "country": "中国", + "lat": "40.61339658944351", + "lng": "109.96958800613616", + "province": "内蒙古自治区" + }, + { + "area": "土默特右旗", + "city": "包头市", + "country": "中国", + "lat": "40.57512742910827", + "lng": "110.53038926651871", + "province": "内蒙古自治区" + }, + { + "area": "固阳县", + "city": "包头市", + "country": "中国", + "lat": "41.040162852726006", + "lng": "110.06643261638642", + "province": "内蒙古自治区" + }, + { + "area": "达尔罕茂明安联合旗", + "city": "包头市", + "country": "中国", + "lat": "41.7045485510015", + "lng": "110.43952090316525", + "province": "内蒙古自治区" + }, + { + "area": "包头稀土高新技术产业开发区", + "city": "包头市", + "country": "中国", + "lat": "40.63692070771989", + "lng": "109.84586483739965", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "乌海市", + "country": "中国", + "lat": "39.6620063648907", + "lng": "106.80039104999656", + "province": "内蒙古自治区" + }, + { + "area": "海勃湾区", + "city": "乌海市", + "country": "中国", + "lat": "39.69690799353465", + "lng": "106.82943856713665", + "province": "内蒙古自治区" + }, + { + "area": "海南区", + "city": "乌海市", + "country": "中国", + "lat": "39.44682751508743", + "lng": "106.89847100998414", + "province": "内蒙古自治区" + }, + { + "area": "乌达区", + "city": "乌海市", + "country": "中国", + "lat": "39.511468916129324", + "lng": "106.73260635350245", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "赤峰市", + "country": "中国", + "lat": "42.2616861034116", + "lng": "118.8955203975195", + "province": "内蒙古自治区" + }, + { + "area": "红山区", + "city": "赤峰市", + "country": "中国", + "lat": "42.27047843525001", + "lng": "118.96356353650884", + "province": "内蒙古自治区" + }, + { + "area": "元宝山区", + "city": "赤峰市", + "country": "中国", + "lat": "42.045124715637876", + "lng": "119.29540450884711", + "province": "内蒙古自治区" + }, + { + "area": "松山区", + "city": "赤峰市", + "country": "中国", + "lat": "42.292481572693966", + "lng": "118.9394138505008", + "province": "内蒙古自治区" + }, + { + "area": "阿鲁科尔沁旗", + "city": "赤峰市", + "country": "中国", + "lat": "43.877953412182414", + "lng": "120.07261385472195", + "province": "内蒙古自治区" + }, + { + "area": "巴林左旗", + "city": "赤峰市", + "country": "中国", + "lat": "43.97638259461", + "lng": "119.38644328075584", + "province": "内蒙古自治区" + }, + { + "area": "巴林右旗", + "city": "赤峰市", + "country": "中国", + "lat": "43.540131553107535", + "lng": "118.6703942570529", + "province": "内蒙古自治区" + }, + { + "area": "林西县", + "city": "赤峰市", + "country": "中国", + "lat": "43.6242102592906", + "lng": "118.06246142181722", + "province": "内蒙古自治区" + }, + { + "area": "克什克腾旗", + "city": "赤峰市", + "country": "中国", + "lat": "43.27075759189642", + "lng": "117.55162041050815", + "province": "内蒙古自治区" + }, + { + "area": "翁牛特旗", + "city": "赤峰市", + "country": "中国", + "lat": "42.94201926223575", + "lng": "119.01250888001714", + "province": "内蒙古自治区" + }, + { + "area": "喀喇沁旗", + "city": "赤峰市", + "country": "中国", + "lat": "41.93221433564327", + "lng": "118.71047368449993", + "province": "内蒙古自治区" + }, + { + "area": "宁城县", + "city": "赤峰市", + "country": "中国", + "lat": "41.60024514826854", + "lng": "119.35060897565731", + "province": "内蒙古自治区" + }, + { + "area": "敖汉旗", + "city": "赤峰市", + "country": "中国", + "lat": "42.29650708524341", + "lng": "119.92757793860845", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "通辽市", + "country": "中国", + "lat": "43.657980083916655", + "lng": "122.25052178737633", + "province": "内蒙古自治区" + }, + { + "area": "科尔沁区", + "city": "通辽市", + "country": "中国", + "lat": "43.62871248882857", + "lng": "122.2624570337041", + "province": "内蒙古自治区" + }, + { + "area": "科尔沁左翼中旗", + "city": "通辽市", + "country": "中国", + "lat": "43.62871248882857", + "lng": "122.2624570337041", + "province": "内蒙古自治区" + }, + { + "area": "科尔沁左翼后旗", + "city": "通辽市", + "country": "中国", + "lat": "43.62871248882857", + "lng": "122.2624570337041", + "province": "内蒙古自治区" + }, + { + "area": "开鲁县", + "city": "通辽市", + "country": "中国", + "lat": "43.60636943136172", + "lng": "121.32538568842634", + "province": "内蒙古自治区" + }, + { + "area": "库伦旗", + "city": "通辽市", + "country": "中国", + "lat": "42.741211100234985", + "lng": "121.81740576201258", + "province": "内蒙古自治区" + }, + { + "area": "奈曼旗", + "city": "通辽市", + "country": "中国", + "lat": "42.871846546660144", + "lng": "120.66464641293936", + "province": "内蒙古自治区" + }, + { + "area": "扎鲁特旗", + "city": "通辽市", + "country": "中国", + "lat": "44.562213133098936", + "lng": "120.9186258568948", + "province": "内蒙古自治区" + }, + { + "area": "通辽经济技术开发区", + "city": "通辽市", + "country": "中国", + "lat": "43.657807115309545", + "lng": "122.25557197112286", + "province": "内蒙古自治区" + }, + { + "area": "霍林郭勒市", + "city": "通辽市", + "country": "中国", + "lat": "45.53751332060997", + "lng": "119.67046591393887", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.61448231394889", + "lng": "109.78744317923602", + "province": "内蒙古自治区" + }, + { + "area": "东胜区", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.82798698444443", + "lng": "109.96956006883481", + "province": "内蒙古自治区" + }, + { + "area": "康巴什区", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.61637814676571", + "lng": "109.8696273537329", + "province": "内蒙古自治区" + }, + { + "area": "达拉特旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "40.41890715439107", + "lng": "110.04036612608118", + "province": "内蒙古自治区" + }, + { + "area": "准格尔旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.87054026503683", + "lng": "111.24639840545701", + "province": "内蒙古自治区" + }, + { + "area": "鄂托克前旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "38.18821674128391", + "lng": "107.48458472302686", + "province": "内蒙古自治区" + }, + { + "area": "鄂托克旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.09529341360767", + "lng": "107.98244495022512", + "province": "内蒙古自治区" + }, + { + "area": "杭锦旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.83881576881519", + "lng": "108.74241293878582", + "province": "内蒙古自治区" + }, + { + "area": "乌审旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "38.610026521176685", + "lng": "108.82443496913814", + "province": "内蒙古自治区" + }, + { + "area": "伊金霍洛旗", + "city": "鄂尔多斯市", + "country": "中国", + "lat": "39.570092815192666", + "lng": "109.75459043995566", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.21844647556481", + "lng": "119.77237049946636", + "province": "内蒙古自治区" + }, + { + "area": "海拉尔区", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.21821579936311", + "lng": "119.74246537005571", + "province": "内蒙古自治区" + }, + { + "area": "扎赉诺尔区", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.46777018362822", + "lng": "117.69453227349118", + "province": "内蒙古自治区" + }, + { + "area": "阿荣旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "48.13197124504232", + "lng": "123.46544000531033", + "province": "内蒙古自治区" + }, + { + "area": "莫力达瓦达斡尔族自治旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "48.48346382602108", + "lng": "124.52547661897245", + "province": "内蒙古自治区" + }, + { + "area": "鄂伦春自治旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "50.59794792806367", + "lng": "123.73234507741994", + "province": "内蒙古自治区" + }, + { + "area": "鄂温克族自治旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.15304476395036", + "lng": "119.76135125526704", + "province": "内蒙古自治区" + }, + { + "area": "陈巴尔虎旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.33491428888495", + "lng": "119.43046248676728", + "province": "内蒙古自治区" + }, + { + "area": "新巴尔虎左旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "48.22378676003717", + "lng": "118.27660837276184", + "province": "内蒙古自治区" + }, + { + "area": "新巴尔虎右旗", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "48.6770535990886", + "lng": "116.83063240352327", + "province": "内蒙古自治区" + }, + { + "area": "满洲里市", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.604098854866066", + "lng": "117.38543585768029", + "province": "内蒙古自治区" + }, + { + "area": "牙克石市", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "49.292023693206346", + "lng": "120.718346837101", + "province": "内蒙古自治区" + }, + { + "area": "扎兰屯市", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "48.01995552010966", + "lng": "122.74445371485892", + "province": "内蒙古自治区" + }, + { + "area": "额尔古纳市", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "50.24813175863642", + "lng": "120.18663369726426", + "province": "内蒙古自治区" + }, + { + "area": "根河市", + "city": "呼伦贝尔市", + "country": "中国", + "lat": "50.78614043431789", + "lng": "121.52758526593915", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "40.7493594895728", + "lng": "107.39439808372491", + "province": "内蒙古自治区" + }, + { + "area": "临河区", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "40.75668072584017", + "lng": "107.3695337956837", + "province": "内蒙古自治区" + }, + { + "area": "五原县", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "41.09445482147854", + "lng": "108.27349135409987", + "province": "内蒙古自治区" + }, + { + "area": "磴口县", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "40.3364701771031", + "lng": "107.01452247000432", + "province": "内蒙古自治区" + }, + { + "area": "乌拉特前旗", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "40.74210351292801", + "lng": "108.6586151381014", + "province": "内蒙古自治区" + }, + { + "area": "乌拉特中旗", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "41.59334626374648", + "lng": "108.51951244005076", + "province": "内蒙古自治区" + }, + { + "area": "乌拉特后旗", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "41.08942226925757", + "lng": "107.0815461220704", + "province": "内蒙古自治区" + }, + { + "area": "杭锦后旗", + "city": "巴彦淖尔市", + "country": "中国", + "lat": "40.89217941982269", + "lng": "107.15737244948984", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.00074832767381", + "lng": "113.13946767446333", + "province": "内蒙古自治区" + }, + { + "area": "集宁区", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.04114617178671", + "lng": "113.12058699942406", + "province": "内蒙古自治区" + }, + { + "area": "卓资县", + "city": "乌兰察布市", + "country": "中国", + "lat": "40.900291837833585", + "lng": "112.58440955069771", + "province": "内蒙古自治区" + }, + { + "area": "化德县", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.909602587109205", + "lng": "114.01640878449749", + "province": "内蒙古自治区" + }, + { + "area": "商都县", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.56756663722376", + "lng": "113.58463922926263", + "province": "内蒙古自治区" + }, + { + "area": "兴和县", + "city": "乌兰察布市", + "country": "中国", + "lat": "40.879341798932664", + "lng": "113.84057886567139", + "province": "内蒙古自治区" + }, + { + "area": "凉城县", + "city": "乌兰察布市", + "country": "中国", + "lat": "40.53716312519976", + "lng": "112.51060018863981", + "province": "内蒙古自治区" + }, + { + "area": "察哈尔右翼前旗", + "city": "乌兰察布市", + "country": "中国", + "lat": "40.791267302592765", + "lng": "113.22160531673478", + "province": "内蒙古自治区" + }, + { + "area": "察哈尔右翼中旗", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.28327294329096", + "lng": "112.64258040196295", + "province": "内蒙古自治区" + }, + { + "area": "察哈尔右翼后旗", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.441770999655446", + "lng": "113.19853090242218", + "province": "内蒙古自治区" + }, + { + "area": "四子王旗", + "city": "乌兰察布市", + "country": "中国", + "lat": "41.53935334991468", + "lng": "111.71241927182069", + "province": "内蒙古自治区" + }, + { + "area": "丰镇市", + "city": "乌兰察布市", + "country": "中国", + "lat": "40.44180480884355", + "lng": "113.1166012178763", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "兴安盟", + "country": "中国", + "lat": "46.08846371321896", + "lng": "122.04436452582519", + "province": "内蒙古自治区" + }, + { + "area": "乌兰浩特市", + "city": "兴安盟", + "country": "中国", + "lat": "46.07865434358189", + "lng": "122.099622351983", + "province": "内蒙古自治区" + }, + { + "area": "阿尔山市", + "city": "兴安盟", + "country": "中国", + "lat": "47.18305415374976", + "lng": "119.95065315165802", + "province": "内蒙古自治区" + }, + { + "area": "科尔沁右翼前旗", + "city": "兴安盟", + "country": "中国", + "lat": "46.08264885381924", + "lng": "121.96455313550187", + "province": "内蒙古自治区" + }, + { + "area": "科尔沁右翼中旗", + "city": "兴安盟", + "country": "中国", + "lat": "45.06647099342768", + "lng": "121.48354781458434", + "province": "内蒙古自治区" + }, + { + "area": "扎赉特旗", + "city": "兴安盟", + "country": "中国", + "lat": "46.72918953935754", + "lng": "122.90644442882986", + "province": "内蒙古自治区" + }, + { + "area": "突泉县", + "city": "兴安盟", + "country": "中国", + "lat": "45.387830342585495", + "lng": "121.60054536996837", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "43.93942266533856", + "lng": "116.05439144074573", + "province": "内蒙古自治区" + }, + { + "area": "二连浩特市", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "43.648800184052014", + "lng": "111.95836319332828", + "province": "内蒙古自治区" + }, + { + "area": "锡林浩特市", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "43.938333801360066", + "lng": "116.09361388473624", + "province": "内蒙古自治区" + }, + { + "area": "阿巴嘎旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "44.028101587022626", + "lng": "114.95736709771691", + "province": "内蒙古自治区" + }, + { + "area": "苏尼特左旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "43.865553657792", + "lng": "113.67347993741899", + "province": "内蒙古自治区" + }, + { + "area": "苏尼特右旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "42.74736892246295", + "lng": "112.64856904547575", + "province": "内蒙古自治区" + }, + { + "area": "东乌珠穆沁旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "45.51574330531203", + "lng": "116.97850435996324", + "province": "内蒙古自治区" + }, + { + "area": "西乌珠穆沁旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "44.593802912006616", + "lng": "117.61637700895868", + "province": "内蒙古自治区" + }, + { + "area": "太仆寺旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "41.88229174604251", + "lng": "115.29053531644618", + "province": "内蒙古自治区" + }, + { + "area": "镶黄旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "42.237661285279046", + "lng": "113.85450538582315", + "province": "内蒙古自治区" + }, + { + "area": "正镶白旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "42.29260542924877", + "lng": "115.03662171828462", + "province": "内蒙古自治区" + }, + { + "area": "正蓝旗", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "42.24711884418806", + "lng": "115.99860388382902", + "province": "内蒙古自治区" + }, + { + "area": "多伦县", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "42.20892086421072", + "lng": "116.49250878203628", + "province": "内蒙古自治区" + }, + { + "area": "乌拉盖管委会", + "city": "锡林郭勒盟", + "country": "中国", + "lat": "42.80581276404333", + "lng": "114.09841877755596", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "阿拉善盟", + "country": "中国", + "lat": "38.858275883056955", + "lng": "105.73537746449358", + "province": "内蒙古自治区" + }, + { + "area": "阿拉善左旗", + "city": "阿拉善盟", + "country": "中国", + "lat": "38.83909413743562", + "lng": "105.67259866528437", + "province": "内蒙古自治区" + }, + { + "area": "阿拉善右旗", + "city": "阿拉善盟", + "country": "中国", + "lat": "39.2222409698549", + "lng": "101.67346389593693", + "province": "内蒙古自治区" + }, + { + "area": "额济纳旗", + "city": "阿拉善盟", + "country": "中国", + "lat": "41.96029761181317", + "lng": "101.0624033405766", + "province": "内蒙古自治区" + }, + { + "area": "内蒙古阿拉善经济开发区", + "city": "阿拉善盟", + "country": "中国", + "lat": "38.858275883056955", + "lng": "105.73537746449358", + "province": "内蒙古自治区" + }, + { + "area": "", + "city": "沈阳市", + "country": "中国", + "lat": "41.68383006919066", + "lng": "123.47109664482264", + "province": "辽宁省" + }, + { + "area": "和平区", + "city": "沈阳市", + "country": "中国", + "lat": "41.79523605290212", + "lng": "123.42664426615303", + "province": "辽宁省" + }, + { + "area": "沈河区", + "city": "沈阳市", + "country": "中国", + "lat": "41.80227413880463", + "lng": "123.46546103537524", + "province": "辽宁省" + }, + { + "area": "大东区", + "city": "沈阳市", + "country": "中国", + "lat": "41.811425174494424", + "lng": "123.47640473208111", + "province": "辽宁省" + }, + { + "area": "皇姑区", + "city": "沈阳市", + "country": "中国", + "lat": "41.82604212027671", + "lng": "123.43162078884775", + "province": "辽宁省" + }, + { + "area": "铁西区", + "city": "沈阳市", + "country": "中国", + "lat": "41.809037832216724", + "lng": "123.3834359507842", + "province": "辽宁省" + }, + { + "area": "苏家屯区", + "city": "沈阳市", + "country": "中国", + "lat": "41.671253644959464", + "lng": "123.35043463177249", + "province": "辽宁省" + }, + { + "area": "浑南区", + "city": "沈阳市", + "country": "中国", + "lat": "41.720915668888956", + "lng": "123.4559899308919", + "province": "辽宁省" + }, + { + "area": "沈北新区", + "city": "沈阳市", + "country": "中国", + "lat": "42.05891411576299", + "lng": "123.5336046049206", + "province": "辽宁省" + }, + { + "area": "于洪区", + "city": "沈阳市", + "country": "中国", + "lat": "41.79966825561503", + "lng": "123.3146330249945", + "province": "辽宁省" + }, + { + "area": "辽中区", + "city": "沈阳市", + "country": "中国", + "lat": "41.523149081842455", + "lng": "122.77237835983205", + "province": "辽宁省" + }, + { + "area": "康平县", + "city": "沈阳市", + "country": "中国", + "lat": "42.7499254957194", + "lng": "123.33751124938374", + "province": "辽宁省" + }, + { + "area": "法库县", + "city": "沈阳市", + "country": "中国", + "lat": "42.50960654990291", + "lng": "123.41462107571583", + "province": "辽宁省" + }, + { + "area": "新民市", + "city": "沈阳市", + "country": "中国", + "lat": "42.00710932066467", + "lng": "122.87539513741082", + "province": "辽宁省" + }, + { + "area": "", + "city": "大连市", + "country": "中国", + "lat": "38.9189536667856", + "lng": "121.62163148459285", + "province": "辽宁省" + }, + { + "area": "中山区", + "city": "大连市", + "country": "中国", + "lat": "38.92451111549568", + "lng": "121.65154739366945", + "province": "辽宁省" + }, + { + "area": "西岗区", + "city": "大连市", + "country": "中国", + "lat": "38.92047268927287", + "lng": "121.61862512554262", + "province": "辽宁省" + }, + { + "area": "沙河口区", + "city": "大连市", + "country": "中国", + "lat": "38.913544290955585", + "lng": "121.59450670056631", + "province": "辽宁省" + }, + { + "area": "甘井子区", + "city": "大连市", + "country": "中国", + "lat": "38.95800216293212", + "lng": "121.53151895549547", + "province": "辽宁省" + }, + { + "area": "旅顺口区", + "city": "大连市", + "country": "中国", + "lat": "38.85683222285901", + "lng": "121.26859688018821", + "province": "辽宁省" + }, + { + "area": "金州区", + "city": "大连市", + "country": "中国", + "lat": "39.05643299166072", + "lng": "121.78943558267059", + "province": "辽宁省" + }, + { + "area": "普兰店区", + "city": "大连市", + "country": "中国", + "lat": "39.398089145183164", + "lng": "121.94645983496748", + "province": "辽宁省" + }, + { + "area": "长海县", + "city": "大连市", + "country": "中国", + "lat": "39.27827021716725", + "lng": "122.59462651636738", + "province": "辽宁省" + }, + { + "area": "瓦房店市", + "city": "大连市", + "country": "中国", + "lat": "39.63274074738802", + "lng": "121.98563754334361", + "province": "辽宁省" + }, + { + "area": "庄河市", + "city": "大连市", + "country": "中国", + "lat": "39.686956078878055", + "lng": "122.97449548262718", + "province": "辽宁省" + }, + { + "area": "", + "city": "鞍山市", + "country": "中国", + "lat": "41.11505359694933", + "lng": "123.00137251399407", + "province": "辽宁省" + }, + { + "area": "铁东区", + "city": "鞍山市", + "country": "中国", + "lat": "41.09633187050633", + "lng": "122.99739966804565", + "province": "辽宁省" + }, + { + "area": "铁西区", + "city": "鞍山市", + "country": "中国", + "lat": "41.125475259583", + "lng": "122.97549026614892", + "province": "辽宁省" + }, + { + "area": "立山区", + "city": "鞍山市", + "country": "中国", + "lat": "41.156116121101775", + "lng": "123.03548413861611", + "province": "辽宁省" + }, + { + "area": "千山区", + "city": "鞍山市", + "country": "中国", + "lat": "41.08093860893513", + "lng": "122.9675742183339", + "province": "辽宁省" + }, + { + "area": "台安县", + "city": "鞍山市", + "country": "中国", + "lat": "41.41859037109879", + "lng": "122.44255004098889", + "province": "辽宁省" + }, + { + "area": "岫岩满族自治县", + "city": "鞍山市", + "country": "中国", + "lat": "40.295892396362035", + "lng": "123.28754677827435", + "province": "辽宁省" + }, + { + "area": "海城市", + "city": "鞍山市", + "country": "中国", + "lat": "40.887633947096894", + "lng": "122.69156940124043", + "province": "辽宁省" + }, + { + "area": "", + "city": "抚顺市", + "country": "中国", + "lat": "41.88596959305694", + "lng": "123.9643746156145", + "province": "辽宁省" + }, + { + "area": "新抚区", + "city": "抚顺市", + "country": "中国", + "lat": "41.86780585859302", + "lng": "123.91958231813992", + "province": "辽宁省" + }, + { + "area": "东洲区", + "city": "抚顺市", + "country": "中国", + "lat": "41.859190936633894", + "lng": "124.04554972353199", + "province": "辽宁省" + }, + { + "area": "望花区", + "city": "抚顺市", + "country": "中国", + "lat": "41.85903036274879", + "lng": "123.79060415200058", + "province": "辽宁省" + }, + { + "area": "顺城区", + "city": "抚顺市", + "country": "中国", + "lat": "41.889163788466874", + "lng": "123.95141404337762", + "province": "辽宁省" + }, + { + "area": "抚顺县", + "city": "抚顺市", + "country": "中国", + "lat": "41.887037475382286", + "lng": "123.92159012078525", + "province": "辽宁省" + }, + { + "area": "新宾满族自治县", + "city": "抚顺市", + "country": "中国", + "lat": "41.73996877507051", + "lng": "125.04635620406488", + "province": "辽宁省" + }, + { + "area": "清原满族自治县", + "city": "抚顺市", + "country": "中国", + "lat": "42.10676099263425", + "lng": "124.9303602593252", + "province": "辽宁省" + }, + { + "area": "", + "city": "本溪市", + "country": "中国", + "lat": "41.49291646055291", + "lng": "123.69250712420832", + "province": "辽宁省" + }, + { + "area": "平山区", + "city": "本溪市", + "country": "中国", + "lat": "41.301604181773875", + "lng": "123.77461422409242", + "province": "辽宁省" + }, + { + "area": "溪湖区", + "city": "本溪市", + "country": "中国", + "lat": "41.33480293136358", + "lng": "123.77461054103982", + "province": "辽宁省" + }, + { + "area": "明山区", + "city": "本溪市", + "country": "中国", + "lat": "41.31493936887711", + "lng": "123.82347449806893", + "province": "辽宁省" + }, + { + "area": "南芬区", + "city": "本溪市", + "country": "中国", + "lat": "41.107095723220134", + "lng": "123.75146713686405", + "province": "辽宁省" + }, + { + "area": "本溪满族自治县", + "city": "本溪市", + "country": "中国", + "lat": "41.30790288135311", + "lng": "124.12758486914475", + "province": "辽宁省" + }, + { + "area": "桓仁满族自治县", + "city": "本溪市", + "country": "中国", + "lat": "41.27292530103041", + "lng": "125.36754435102144", + "province": "辽宁省" + }, + { + "area": "", + "city": "丹东市", + "country": "中国", + "lat": "40.00640870559368", + "lng": "124.36154728159079", + "province": "辽宁省" + }, + { + "area": "元宝区", + "city": "丹东市", + "country": "中国", + "lat": "40.14225146313862", + "lng": "124.40258403321981", + "province": "辽宁省" + }, + { + "area": "振兴区", + "city": "丹东市", + "country": "中国", + "lat": "40.0613050927599", + "lng": "124.32597752746494", + "province": "辽宁省" + }, + { + "area": "振安区", + "city": "丹东市", + "country": "中国", + "lat": "40.16469702566065", + "lng": "124.43438692285066", + "province": "辽宁省" + }, + { + "area": "宽甸满族自治县", + "city": "丹东市", + "country": "中国", + "lat": "40.737553200489806", + "lng": "124.79042662867784", + "province": "辽宁省" + }, + { + "area": "东港市", + "city": "丹东市", + "country": "中国", + "lat": "39.8677161872864", + "lng": "124.15961035888098", + "province": "辽宁省" + }, + { + "area": "凤城市", + "city": "丹东市", + "country": "中国", + "lat": "40.45918048245619", + "lng": "124.07242172438802", + "province": "辽宁省" + }, + { + "area": "", + "city": "锦州市", + "country": "中国", + "lat": "41.10093149946208", + "lng": "121.13259630055518", + "province": "辽宁省" + }, + { + "area": "古塔区", + "city": "锦州市", + "country": "中国", + "lat": "41.12290092589807", + "lng": "121.13458496929316", + "province": "辽宁省" + }, + { + "area": "凌河区", + "city": "锦州市", + "country": "中国", + "lat": "41.12069061447238", + "lng": "121.15759003442041", + "province": "辽宁省" + }, + { + "area": "太和区", + "city": "锦州市", + "country": "中国", + "lat": "41.11510930713197", + "lng": "121.11045324939532", + "province": "辽宁省" + }, + { + "area": "黑山县", + "city": "锦州市", + "country": "中国", + "lat": "41.67159298377575", + "lng": "122.130557039063", + "province": "辽宁省" + }, + { + "area": "义县", + "city": "锦州市", + "country": "中国", + "lat": "41.53893886227117", + "lng": "121.24556854894828", + "province": "辽宁省" + }, + { + "area": "凌海市", + "city": "锦州市", + "country": "中国", + "lat": "41.16648762858835", + "lng": "121.36253879584407", + "province": "辽宁省" + }, + { + "area": "北镇市", + "city": "锦州市", + "country": "中国", + "lat": "41.59442809680251", + "lng": "121.78344729847997", + "province": "辽宁省" + }, + { + "area": "", + "city": "营口市", + "country": "中国", + "lat": "40.67313683826707", + "lng": "122.24157466449694", + "province": "辽宁省" + }, + { + "area": "站前区", + "city": "营口市", + "country": "中国", + "lat": "40.678764125936254", + "lng": "122.26543743172509", + "province": "辽宁省" + }, + { + "area": "西市区", + "city": "营口市", + "country": "中国", + "lat": "40.67211092631112", + "lng": "122.2135823868394", + "province": "辽宁省" + }, + { + "area": "鲅鱼圈区", + "city": "营口市", + "country": "中国", + "lat": "40.2323398507732", + "lng": "122.12757349697273", + "province": "辽宁省" + }, + { + "area": "老边区", + "city": "营口市", + "country": "中国", + "lat": "40.686383619802896", + "lng": "122.38643918391912", + "province": "辽宁省" + }, + { + "area": "盖州市", + "city": "营口市", + "country": "中国", + "lat": "40.40616745726758", + "lng": "122.35559128287593", + "province": "辽宁省" + }, + { + "area": "大石桥市", + "city": "营口市", + "country": "中国", + "lat": "40.65080216481545", + "lng": "122.51537953139649", + "province": "辽宁省" + }, + { + "area": "", + "city": "阜新市", + "country": "中国", + "lat": "42.02802190131842", + "lng": "121.67640799865809", + "province": "辽宁省" + }, + { + "area": "海州区", + "city": "阜新市", + "country": "中国", + "lat": "42.02373478938535", + "lng": "121.66943571061184", + "province": "辽宁省" + }, + { + "area": "新邱区", + "city": "阜新市", + "country": "中国", + "lat": "42.09393451476494", + "lng": "121.79936338567522", + "province": "辽宁省" + }, + { + "area": "太平区", + "city": "阜新市", + "country": "中国", + "lat": "42.01696785414082", + "lng": "121.68538413680544", + "province": "辽宁省" + }, + { + "area": "清河门区", + "city": "阜新市", + "country": "中国", + "lat": "41.78931855100901", + "lng": "121.42247894964176", + "province": "辽宁省" + }, + { + "area": "细河区", + "city": "阜新市", + "country": "中国", + "lat": "42.031871245879636", + "lng": "121.68639230507928", + "province": "辽宁省" + }, + { + "area": "阜新蒙古族自治县", + "city": "阜新市", + "country": "中国", + "lat": "42.0713681538371", + "lng": "121.76357399585217", + "province": "辽宁省" + }, + { + "area": "彰武县", + "city": "阜新市", + "country": "中国", + "lat": "42.392706534363775", + "lng": "122.54544932020693", + "province": "辽宁省" + }, + { + "area": "", + "city": "辽阳市", + "country": "中国", + "lat": "41.27416129045421", + "lng": "123.24336640651318", + "province": "辽宁省" + }, + { + "area": "白塔区", + "city": "辽阳市", + "country": "中国", + "lat": "41.27604732000065", + "lng": "123.18115668384452", + "province": "辽宁省" + }, + { + "area": "文圣区", + "city": "辽阳市", + "country": "中国", + "lat": "41.28999873572254", + "lng": "123.2380035226186", + "province": "辽宁省" + }, + { + "area": "宏伟区", + "city": "辽阳市", + "country": "中国", + "lat": "41.223368108444966", + "lng": "123.20358018598459", + "province": "辽宁省" + }, + { + "area": "弓长岭区", + "city": "辽阳市", + "country": "中国", + "lat": "41.15732704272181", + "lng": "123.42661543054616", + "province": "辽宁省" + }, + { + "area": "太子河区", + "city": "辽阳市", + "country": "中国", + "lat": "41.259253903616404", + "lng": "123.18845658391027", + "province": "辽宁省" + }, + { + "area": "辽阳县", + "city": "辽阳市", + "country": "中国", + "lat": "41.21167877180807", + "lng": "123.11242122079864", + "province": "辽宁省" + }, + { + "area": "灯塔市", + "city": "辽阳市", + "country": "中国", + "lat": "41.432474125925786", + "lng": "123.34546215145255", + "province": "辽宁省" + }, + { + "area": "", + "city": "盘锦市", + "country": "中国", + "lat": "41.12587528873715", + "lng": "122.07749009021381", + "province": "辽宁省" + }, + { + "area": "双台子区", + "city": "盘锦市", + "country": "中国", + "lat": "41.20607161751199", + "lng": "122.04639299922216", + "province": "辽宁省" + }, + { + "area": "兴隆台区", + "city": "盘锦市", + "country": "中国", + "lat": "41.16449943242538", + "lng": "122.0764985405919", + "province": "辽宁省" + }, + { + "area": "大洼区", + "city": "盘锦市", + "country": "中国", + "lat": "41.00817878895967", + "lng": "122.08855478867187", + "province": "辽宁省" + }, + { + "area": "盘山县", + "city": "盘锦市", + "country": "中国", + "lat": "41.24826368258211", + "lng": "122.00356035521759", + "province": "辽宁省" + }, + { + "area": "", + "city": "铁岭市", + "country": "中国", + "lat": "42.22994799718447", + "lng": "123.73236520917769", + "province": "辽宁省" + }, + { + "area": "银州区", + "city": "铁岭市", + "country": "中国", + "lat": "42.29257368144229", + "lng": "123.8483863963022", + "province": "辽宁省" + }, + { + "area": "清河区", + "city": "铁岭市", + "country": "中国", + "lat": "42.552494793453334", + "lng": "124.16556298034286", + "province": "辽宁省" + }, + { + "area": "铁岭县", + "city": "铁岭市", + "country": "中国", + "lat": "42.22922560804787", + "lng": "123.73537237670288", + "province": "辽宁省" + }, + { + "area": "西丰县", + "city": "铁岭市", + "country": "中国", + "lat": "42.744014442436104", + "lng": "124.73361509331029", + "province": "辽宁省" + }, + { + "area": "昌图县", + "city": "铁岭市", + "country": "中国", + "lat": "42.79217837184396", + "lng": "124.11750067115085", + "province": "辽宁省" + }, + { + "area": "调兵山市", + "city": "铁岭市", + "country": "中国", + "lat": "42.473738012058256", + "lng": "123.57350868313209", + "province": "辽宁省" + }, + { + "area": "开原市", + "city": "铁岭市", + "country": "中国", + "lat": "42.552079074778554", + "lng": "124.04456886374565", + "province": "辽宁省" + }, + { + "area": "", + "city": "朝阳市", + "country": "中国", + "lat": "41.57982086475567", + "lng": "120.45749949793277", + "province": "辽宁省" + }, + { + "area": "双塔区", + "city": "朝阳市", + "country": "中国", + "lat": "41.57177950085604", + "lng": "120.46048690273676", + "province": "辽宁省" + }, + { + "area": "龙城区", + "city": "朝阳市", + "country": "中国", + "lat": "41.59846852304986", + "lng": "120.44356686930357", + "province": "辽宁省" + }, + { + "area": "朝阳县", + "city": "朝阳市", + "country": "中国", + "lat": "41.24107572087276", + "lng": "120.25939061432317", + "province": "辽宁省" + }, + { + "area": "建平县", + "city": "朝阳市", + "country": "中国", + "lat": "41.409455511027", + "lng": "119.64938035776511", + "province": "辽宁省" + }, + { + "area": "喀喇沁左翼蒙古族自治县", + "city": "朝阳市", + "country": "中国", + "lat": "41.13368911982847", + "lng": "119.74741405501892", + "province": "辽宁省" + }, + { + "area": "北票市", + "city": "朝阳市", + "country": "中国", + "lat": "41.80648256894959", + "lng": "120.77762773421811", + "province": "辽宁省" + }, + { + "area": "凌源市", + "city": "朝阳市", + "country": "中国", + "lat": "41.25165129714849", + "lng": "119.4073580787919", + "province": "辽宁省" + }, + { + "area": "", + "city": "葫芦岛市", + "country": "中国", + "lat": "40.71736443636189", + "lng": "120.8433983399283", + "province": "辽宁省" + }, + { + "area": "连山区", + "city": "葫芦岛市", + "country": "中国", + "lat": "40.78089380844243", + "lng": "120.87648167423309", + "province": "辽宁省" + }, + { + "area": "龙港区", + "city": "葫芦岛市", + "country": "中国", + "lat": "40.74105660124102", + "lng": "120.90062076023611", + "province": "辽宁省" + }, + { + "area": "南票区", + "city": "葫芦岛市", + "country": "中国", + "lat": "41.11309759582292", + "lng": "120.75649312082375", + "province": "辽宁省" + }, + { + "area": "绥中县", + "city": "葫芦岛市", + "country": "中国", + "lat": "40.33184347539701", + "lng": "120.35042453538213", + "province": "辽宁省" + }, + { + "area": "建昌县", + "city": "葫芦岛市", + "country": "中国", + "lat": "40.83037995380867", + "lng": "119.84359526665007", + "province": "辽宁省" + }, + { + "area": "兴城市", + "city": "葫芦岛市", + "country": "中国", + "lat": "40.616555664043666", + "lng": "120.76455846701454", + "province": "辽宁省" + }, + { + "area": "", + "city": "长春市", + "country": "中国", + "lat": "43.82195350104314", + "lng": "125.3306020759069", + "province": "吉林省" + }, + { + "area": "南关区", + "city": "长春市", + "country": "中国", + "lat": "43.869873025193", + "lng": "125.35660981703178", + "province": "吉林省" + }, + { + "area": "宽城区", + "city": "长春市", + "country": "中国", + "lat": "43.94950223980449", + "lng": "125.33462450831948", + "province": "吉林省" + }, + { + "area": "朝阳区", + "city": "长春市", + "country": "中国", + "lat": "43.84064147496199", + "lng": "125.295401255854", + "province": "吉林省" + }, + { + "area": "二道区", + "city": "长春市", + "country": "中国", + "lat": "43.87127652427073", + "lng": "125.38046755374909", + "province": "吉林省" + }, + { + "area": "绿园区", + "city": "长春市", + "country": "中国", + "lat": "43.8868104039365", + "lng": "125.26244260635403", + "province": "吉林省" + }, + { + "area": "双阳区", + "city": "长春市", + "country": "中国", + "lat": "43.5310913091188", + "lng": "125.67144793216886", + "province": "吉林省" + }, + { + "area": "九台区", + "city": "长春市", + "country": "中国", + "lat": "44.1577918538605", + "lng": "125.84556442306521", + "province": "吉林省" + }, + { + "area": "农安县", + "city": "长春市", + "country": "中国", + "lat": "44.43890395126124", + "lng": "125.1914841066626", + "province": "吉林省" + }, + { + "area": "长春经济技术开发区", + "city": "长春市", + "country": "中国", + "lat": "43.88510079696388", + "lng": "125.43374524507091", + "province": "吉林省" + }, + { + "area": "长春净月高新技术产业开发区", + "city": "长春市", + "country": "中国", + "lat": "43.805531775967616", + "lng": "125.40480121272556", + "province": "吉林省" + }, + { + "area": "长春高新技术产业开发区", + "city": "长春市", + "country": "中国", + "lat": "43.800141616574386", + "lng": "125.26436722590915", + "province": "吉林省" + }, + { + "area": "长春汽车经济技术开发区", + "city": "长春市", + "country": "中国", + "lat": "43.867633505689184", + "lng": "125.25773494649843", + "province": "吉林省" + }, + { + "area": "榆树市", + "city": "长春市", + "country": "中国", + "lat": "44.84543972769254", + "lng": "126.53960936347069", + "province": "吉林省" + }, + { + "area": "德惠市", + "city": "长春市", + "country": "中国", + "lat": "44.52716106660816", + "lng": "125.73451517727733", + "province": "吉林省" + }, + { + "area": "", + "city": "吉林市", + "country": "中国", + "lat": "43.84356783457924", + "lng": "126.55563450495482", + "province": "吉林省" + }, + { + "area": "昌邑区", + "city": "吉林市", + "country": "中国", + "lat": "43.88799247473632", + "lng": "126.58144866124232", + "province": "吉林省" + }, + { + "area": "龙潭区", + "city": "吉林市", + "country": "中国", + "lat": "43.91634255363016", + "lng": "126.56854459242203", + "province": "吉林省" + }, + { + "area": "船营区", + "city": "吉林市", + "country": "中国", + "lat": "43.83992740229002", + "lng": "126.54764973676829", + "province": "吉林省" + }, + { + "area": "丰满区", + "city": "吉林市", + "country": "中国", + "lat": "43.8271515768356", + "lng": "126.5685704636207", + "province": "吉林省" + }, + { + "area": "永吉县", + "city": "吉林市", + "country": "中国", + "lat": "43.67872067698947", + "lng": "126.50441572986186", + "province": "吉林省" + }, + { + "area": "吉林经济开发区", + "city": "吉林市", + "country": "中国", + "lat": "44.13720015375214", + "lng": "126.4501349906076", + "province": "吉林省" + }, + { + "area": "吉林高新技术产业开发区", + "city": "吉林市", + "country": "中国", + "lat": "43.79867813092839", + "lng": "126.60786099916889", + "province": "吉林省" + }, + { + "area": "吉林中国新加坡食品区", + "city": "吉林市", + "country": "中国", + "lat": "43.717305751111226", + "lng": "125.98827184146627", + "province": "吉林省" + }, + { + "area": "蛟河市", + "city": "吉林市", + "country": "中国", + "lat": "43.73000387050733", + "lng": "127.3514801867702", + "province": "吉林省" + }, + { + "area": "桦甸市", + "city": "吉林市", + "country": "中国", + "lat": "42.977982779881444", + "lng": "126.75248423373108", + "province": "吉林省" + }, + { + "area": "舒兰市", + "city": "吉林市", + "country": "中国", + "lat": "44.412270028323626", + "lng": "126.97137703226396", + "province": "吉林省" + }, + { + "area": "磐石市", + "city": "吉林市", + "country": "中国", + "lat": "42.95181750011373", + "lng": "126.0666162988913", + "province": "吉林省" + }, + { + "area": "", + "city": "四平市", + "country": "中国", + "lat": "43.171993571561", + "lng": "124.35648155715893", + "province": "吉林省" + }, + { + "area": "铁西区", + "city": "四平市", + "country": "中国", + "lat": "43.15257539180282", + "lng": "124.35246676034319", + "province": "吉林省" + }, + { + "area": "铁东区", + "city": "四平市", + "country": "中国", + "lat": "43.16799399318514", + "lng": "124.41648270590073", + "province": "吉林省" + }, + { + "area": "梨树县", + "city": "四平市", + "country": "中国", + "lat": "43.313345515552975", + "lng": "124.34240124710388", + "province": "吉林省" + }, + { + "area": "伊通满族自治县", + "city": "四平市", + "country": "中国", + "lat": "43.35110366682136", + "lng": "125.31148460753519", + "province": "吉林省" + }, + { + "area": "公主岭市", + "city": "四平市", + "country": "中国", + "lat": "43.510832663153074", + "lng": "124.82944866070906", + "province": "吉林省" + }, + { + "area": "双辽市", + "city": "四平市", + "country": "中国", + "lat": "43.524527382171485", + "lng": "123.50943776127731", + "province": "吉林省" + }, + { + "area": "", + "city": "辽源市", + "country": "中国", + "lat": "42.89405500574631", + "lng": "125.15042516688747", + "province": "吉林省" + }, + { + "area": "龙山区", + "city": "辽源市", + "country": "中国", + "lat": "42.90763401213302", + "lng": "125.14345242968848", + "province": "吉林省" + }, + { + "area": "西安区", + "city": "辽源市", + "country": "中国", + "lat": "42.933308420624584", + "lng": "125.15537330312809", + "province": "吉林省" + }, + { + "area": "东丰县", + "city": "辽源市", + "country": "中国", + "lat": "42.68331077855281", + "lng": "125.5373779009073", + "province": "吉林省" + }, + { + "area": "东辽县", + "city": "辽源市", + "country": "中国", + "lat": "42.931879101775785", + "lng": "124.99758944369195", + "province": "吉林省" + }, + { + "area": "", + "city": "通化市", + "country": "中国", + "lat": "41.733815801613424", + "lng": "125.94660627598029", + "province": "吉林省" + }, + { + "area": "东昌区", + "city": "通化市", + "country": "中国", + "lat": "41.70840538484", + "lng": "125.9335945901599", + "province": "吉林省" + }, + { + "area": "二道江区", + "city": "通化市", + "country": "中国", + "lat": "41.779966174493126", + "lng": "126.04959170269673", + "province": "吉林省" + }, + { + "area": "通化县", + "city": "通化市", + "country": "中国", + "lat": "41.68568223806826", + "lng": "125.76539191392739", + "province": "吉林省" + }, + { + "area": "辉南县", + "city": "通化市", + "country": "中国", + "lat": "42.690699881881976", + "lng": "126.05358125712766", + "province": "吉林省" + }, + { + "area": "柳河县", + "city": "通化市", + "country": "中国", + "lat": "42.29087121505593", + "lng": "125.75142398189165", + "province": "吉林省" + }, + { + "area": "梅河口市", + "city": "通化市", + "country": "中国", + "lat": "42.54488389028409", + "lng": "125.71760780995182", + "province": "吉林省" + }, + { + "area": "集安市", + "city": "通化市", + "country": "中国", + "lat": "41.131299724033404", + "lng": "126.19957737200077", + "province": "吉林省" + }, + { + "area": "", + "city": "白山市", + "country": "中国", + "lat": "41.93962720532889", + "lng": "126.42963008937573", + "province": "吉林省" + }, + { + "area": "浑江区", + "city": "白山市", + "country": "中国", + "lat": "41.950423728219754", + "lng": "126.42361952720847", + "province": "吉林省" + }, + { + "area": "江源区", + "city": "白山市", + "country": "中国", + "lat": "42.06293937208094", + "lng": "126.59739097895843", + "province": "吉林省" + }, + { + "area": "抚松县", + "city": "白山市", + "country": "中国", + "lat": "42.22733527255311", + "lng": "127.45537119527128", + "province": "吉林省" + }, + { + "area": "靖宇县", + "city": "白山市", + "country": "中国", + "lat": "42.3947657345783", + "lng": "126.81949899257262", + "province": "吉林省" + }, + { + "area": "长白朝鲜族自治县", + "city": "白山市", + "country": "中国", + "lat": "41.425895812593765", + "lng": "128.20758420219488", + "province": "吉林省" + }, + { + "area": "临江市", + "city": "白山市", + "country": "中国", + "lat": "41.817678643991684", + "lng": "126.92458151350212", + "province": "吉林省" + }, + { + "area": "", + "city": "松原市", + "country": "中国", + "lat": "45.14740419341382", + "lng": "124.83148187569292", + "province": "吉林省" + }, + { + "area": "宁江区", + "city": "松原市", + "country": "中国", + "lat": "45.17803943866726", + "lng": "124.823422548149", + "province": "吉林省" + }, + { + "area": "前郭尔罗斯蒙古族自治县", + "city": "松原市", + "country": "中国", + "lat": "45.12341609292575", + "lng": "124.83045556164775", + "province": "吉林省" + }, + { + "area": "长岭县", + "city": "松原市", + "country": "中国", + "lat": "44.28163828005157", + "lng": "123.9743741033988", + "province": "吉林省" + }, + { + "area": "乾安县", + "city": "松原市", + "country": "中国", + "lat": "45.008434321605144", + "lng": "124.04756380460357", + "province": "吉林省" + }, + { + "area": "吉林松原经济开发区", + "city": "松原市", + "country": "中国", + "lat": "45.14740419341382", + "lng": "124.83148187569292", + "province": "吉林省" + }, + { + "area": "扶余市", + "city": "松原市", + "country": "中国", + "lat": "44.99416842115065", + "lng": "126.05660621110196", + "province": "吉林省" + }, + { + "area": "", + "city": "白城市", + "country": "中国", + "lat": "45.62550435999602", + "lng": "122.8455906084976", + "province": "吉林省" + }, + { + "area": "洮北区", + "city": "白城市", + "country": "中国", + "lat": "45.62752468651366", + "lng": "122.85750977515681", + "province": "吉林省" + }, + { + "area": "镇赉县", + "city": "白城市", + "country": "中国", + "lat": "45.8531166353894", + "lng": "123.2065757556511", + "province": "吉林省" + }, + { + "area": "通榆县", + "city": "白城市", + "country": "中国", + "lat": "44.81896373588188", + "lng": "123.09452077673187", + "province": "吉林省" + }, + { + "area": "吉林白城经济开发区", + "city": "白城市", + "country": "中国", + "lat": "45.62527410134006", + "lng": "122.8517896710931", + "province": "吉林省" + }, + { + "area": "洮南市", + "city": "白城市", + "country": "中国", + "lat": "45.34113187256745", + "lng": "122.79446768260222", + "province": "吉林省" + }, + { + "area": "大安市", + "city": "白城市", + "country": "中国", + "lat": "45.51304514962824", + "lng": "124.29850428102031", + "province": "吉林省" + }, + { + "area": "", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "42.91574303372181", + "lng": "129.4773763202274", + "province": "吉林省" + }, + { + "area": "延吉市", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "42.91271700987995", + "lng": "129.52052013726063", + "province": "吉林省" + }, + { + "area": "图们市", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "42.97428349907469", + "lng": "129.85038151374656", + "province": "吉林省" + }, + { + "area": "敦化市", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "43.37829127451678", + "lng": "128.23861239315394", + "province": "吉林省" + }, + { + "area": "珲春市", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "42.86851511519159", + "lng": "130.37261321858327", + "province": "吉林省" + }, + { + "area": "龙井市", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "42.7715348683491", + "lng": "129.43263477701413", + "province": "吉林省" + }, + { + "area": "和龙市", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "42.55232256843248", + "lng": "129.01738712621045", + "province": "吉林省" + }, + { + "area": "汪清县", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "43.3184508338646", + "lng": "129.7776087962472", + "province": "吉林省" + }, + { + "area": "安图县", + "city": "延边朝鲜族自治州", + "country": "中国", + "lat": "43.117916954911934", + "lng": "128.90544846813714", + "province": "吉林省" + }, + { + "area": "", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.808825827952184", + "lng": "126.54161509031663", + "province": "黑龙江省" + }, + { + "area": "道里区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.76184447881502", + "lng": "126.62343158836877", + "province": "黑龙江省" + }, + { + "area": "南岗区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.76586616375799", + "lng": "126.67563849952303", + "province": "黑龙江省" + }, + { + "area": "道外区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.7977762204344", + "lng": "126.65560404088663", + "province": "黑龙江省" + }, + { + "area": "平房区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.60386229555506", + "lng": "126.64354707416219", + "province": "黑龙江省" + }, + { + "area": "松北区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.80859256142944", + "lng": "126.51648256824997", + "province": "黑龙江省" + }, + { + "area": "香坊区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.71361964538922", + "lng": "126.6696243441337", + "province": "黑龙江省" + }, + { + "area": "呼兰区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.8952097808631", + "lng": "126.59439898309995", + "province": "黑龙江省" + }, + { + "area": "阿城区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.55427530435246", + "lng": "126.96435649551775", + "province": "黑龙江省" + }, + { + "area": "双城区", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.38811152239434", + "lng": "126.31962313777296", + "province": "黑龙江省" + }, + { + "area": "依兰县", + "city": "哈尔滨市", + "country": "中国", + "lat": "46.331260289051535", + "lng": "129.57451969721257", + "province": "黑龙江省" + }, + { + "area": "方正县", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.857758440062085", + "lng": "128.83563368133866", + "province": "黑龙江省" + }, + { + "area": "宾县", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.752465386741754", + "lng": "127.47349701449961", + "province": "黑龙江省" + }, + { + "area": "巴彦县", + "city": "哈尔滨市", + "country": "中国", + "lat": "46.09128265781541", + "lng": "127.41054798639587", + "province": "黑龙江省" + }, + { + "area": "木兰县", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.95687131944761", + "lng": "128.05035620452108", + "province": "黑龙江省" + }, + { + "area": "通河县", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.99639259092071", + "lng": "128.7524162758437", + "province": "黑龙江省" + }, + { + "area": "延寿县", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.457641195714054", + "lng": "128.33860582402286", + "province": "黑龙江省" + }, + { + "area": "尚志市", + "city": "哈尔滨市", + "country": "中国", + "lat": "45.215473941866705", + "lng": "128.0154882066594", + "province": "黑龙江省" + }, + { + "area": "五常市", + "city": "哈尔滨市", + "country": "中国", + "lat": "44.937842855773596", + "lng": "127.17352882965176", + "province": "黑龙江省" + }, + { + "area": "", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.3599771860153", + "lng": "123.92457086841536", + "province": "黑龙江省" + }, + { + "area": "龙沙区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.32357697742935", + "lng": "123.96437622285154", + "province": "黑龙江省" + }, + { + "area": "建华区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.360554871046276", + "lng": "123.96135010108006", + "province": "黑龙江省" + }, + { + "area": "铁锋区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.34701886377169", + "lng": "123.98441571199879", + "province": "黑龙江省" + }, + { + "area": "昂昂溪区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.16133224362644", + "lng": "123.82940626912925", + "province": "黑龙江省" + }, + { + "area": "富拉尔基区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.21550408279093", + "lng": "123.6365098032401", + "province": "黑龙江省" + }, + { + "area": "碾子山区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.52323629813318", + "lng": "122.89436680107868", + "province": "黑龙江省" + }, + { + "area": "梅里斯达斡尔族区", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.315549574077295", + "lng": "123.7595409174125", + "province": "黑龙江省" + }, + { + "area": "龙江县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.343605740150764", + "lng": "123.2115389834243", + "province": "黑龙江省" + }, + { + "area": "依安县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.89948365136766", + "lng": "125.31248216609961", + "province": "黑龙江省" + }, + { + "area": "泰来县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "46.39782928518008", + "lng": "123.42362630924546", + "province": "黑龙江省" + }, + { + "area": "甘南县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.92688406951045", + "lng": "123.51248588181808", + "province": "黑龙江省" + }, + { + "area": "富裕县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.780228063275445", + "lng": "124.48054247905756", + "province": "黑龙江省" + }, + { + "area": "克山县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "48.04317236073717", + "lng": "125.8813783269278", + "province": "黑龙江省" + }, + { + "area": "克东县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "48.048244160483", + "lng": "126.25538674804284", + "province": "黑龙江省" + }, + { + "area": "拜泉县", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "47.60186730195864", + "lng": "126.10542147027297", + "province": "黑龙江省" + }, + { + "area": "讷河市", + "city": "齐齐哈尔市", + "country": "中国", + "lat": "48.49008659326358", + "lng": "124.89054905619638", + "province": "黑龙江省" + }, + { + "area": "", + "city": "鸡西市", + "country": "中国", + "lat": "45.300872317823895", + "lng": "130.97561865876668", + "province": "黑龙江省" + }, + { + "area": "鸡冠区", + "city": "鸡西市", + "country": "中国", + "lat": "45.309806344311816", + "lng": "130.98763160852113", + "province": "黑龙江省" + }, + { + "area": "恒山区", + "city": "鸡西市", + "country": "中国", + "lat": "45.21697188315374", + "lng": "130.91138523344475", + "province": "黑龙江省" + }, + { + "area": "滴道区", + "city": "鸡西市", + "country": "中国", + "lat": "45.35443361721627", + "lng": "130.85058046059333", + "province": "黑龙江省" + }, + { + "area": "梨树区", + "city": "鸡西市", + "country": "中国", + "lat": "45.09824178098074", + "lng": "130.7033960671907", + "province": "黑龙江省" + }, + { + "area": "城子河区", + "city": "鸡西市", + "country": "中国", + "lat": "45.3444351939177", + "lng": "131.01846864006785", + "province": "黑龙江省" + }, + { + "area": "麻山区", + "city": "鸡西市", + "country": "中国", + "lat": "45.217934996767426", + "lng": "130.48453641612977", + "province": "黑龙江省" + }, + { + "area": "鸡东县", + "city": "鸡西市", + "country": "中国", + "lat": "45.26618456082589", + "lng": "131.1305584829592", + "province": "黑龙江省" + }, + { + "area": "虎林市", + "city": "鸡西市", + "country": "中国", + "lat": "45.76894691288418", + "lng": "132.94346566318296", + "province": "黑龙江省" + }, + { + "area": "密山市", + "city": "鸡西市", + "country": "中国", + "lat": "45.53564080974782", + "lng": "131.85353110655427", + "province": "黑龙江省" + }, + { + "area": "", + "city": "鹤岗市", + "country": "中国", + "lat": "47.35605615768509", + "lng": "130.3044328986694", + "province": "黑龙江省" + }, + { + "area": "向阳区", + "city": "鹤岗市", + "country": "中国", + "lat": "47.34858088906713", + "lng": "130.30046804763998", + "province": "黑龙江省" + }, + { + "area": "工农区", + "city": "鹤岗市", + "country": "中国", + "lat": "47.32443029945841", + "lng": "130.28161728617408", + "province": "黑龙江省" + }, + { + "area": "南山区", + "city": "鹤岗市", + "country": "中国", + "lat": "47.321245938809454", + "lng": "130.293540315547", + "province": "黑龙江省" + }, + { + "area": "兴安区", + "city": "鹤岗市", + "country": "中国", + "lat": "47.25871626948282", + "lng": "130.24554573859015", + "province": "黑龙江省" + }, + { + "area": "东山区", + "city": "鹤岗市", + "country": "中国", + "lat": "47.34498713557338", + "lng": "130.32336109407026", + "province": "黑龙江省" + }, + { + "area": "兴山区", + "city": "鹤岗市", + "country": "中国", + "lat": "47.39604538128245", + "lng": "130.3173636471634", + "province": "黑龙江省" + }, + { + "area": "萝北县", + "city": "鹤岗市", + "country": "中国", + "lat": "47.58342219702872", + "lng": "130.83549503650306", + "province": "黑龙江省" + }, + { + "area": "绥滨县", + "city": "鹤岗市", + "country": "中国", + "lat": "47.295265458073345", + "lng": "131.85948651276323", + "province": "黑龙江省" + }, + { + "area": "", + "city": "双鸭山市", + "country": "中国", + "lat": "46.65318589588607", + "lng": "131.16534168078073", + "province": "黑龙江省" + }, + { + "area": "尖山区", + "city": "双鸭山市", + "country": "中国", + "lat": "46.65258592381225", + "lng": "131.16534177061126", + "province": "黑龙江省" + }, + { + "area": "岭东区", + "city": "双鸭山市", + "country": "中国", + "lat": "46.46459604785339", + "lng": "131.1643767210019", + "province": "黑龙江省" + }, + { + "area": "四方台区", + "city": "双鸭山市", + "country": "中国", + "lat": "46.60201228508263", + "lng": "131.34565737800256", + "province": "黑龙江省" + }, + { + "area": "宝山区", + "city": "双鸭山市", + "country": "中国", + "lat": "46.58359834024085", + "lng": "131.40737518857432", + "province": "黑龙江省" + }, + { + "area": "集贤县", + "city": "双鸭山市", + "country": "中国", + "lat": "46.73451778855666", + "lng": "131.1474344994225", + "province": "黑龙江省" + }, + { + "area": "友谊县", + "city": "双鸭山市", + "country": "中国", + "lat": "46.772973223021964", + "lng": "131.81459486269898", + "province": "黑龙江省" + }, + { + "area": "宝清县", + "city": "双鸭山市", + "country": "中国", + "lat": "46.33265182357228", + "lng": "132.20359411633407", + "province": "黑龙江省" + }, + { + "area": "饶河县", + "city": "双鸭山市", + "country": "中国", + "lat": "46.80418274416246", + "lng": "134.02046893233435", + "province": "黑龙江省" + }, + { + "area": "", + "city": "大庆市", + "country": "中国", + "lat": "46.59363317672175", + "lng": "125.10865763402039", + "province": "黑龙江省" + }, + { + "area": "萨尔图区", + "city": "大庆市", + "country": "中国", + "lat": "46.638936435554", + "lng": "125.13351006442905", + "province": "黑龙江省" + }, + { + "area": "龙凤区", + "city": "大庆市", + "country": "中国", + "lat": "46.567678067125456", + "lng": "125.14047256094527", + "province": "黑龙江省" + }, + { + "area": "让胡路区", + "city": "大庆市", + "country": "中国", + "lat": "46.65807845860904", + "lng": "124.8775988144728", + "province": "黑龙江省" + }, + { + "area": "红岗区", + "city": "大庆市", + "country": "中国", + "lat": "46.404313108627896", + "lng": "124.89747741710322", + "province": "黑龙江省" + }, + { + "area": "大同区", + "city": "大庆市", + "country": "中国", + "lat": "46.04558395131147", + "lng": "124.81937675979314", + "province": "黑龙江省" + }, + { + "area": "肇州县", + "city": "大庆市", + "country": "中国", + "lat": "45.70510798687091", + "lng": "125.27536822480188", + "province": "黑龙江省" + }, + { + "area": "肇源县", + "city": "大庆市", + "country": "中国", + "lat": "45.52415291420557", + "lng": "125.0845726260089", + "province": "黑龙江省" + }, + { + "area": "林甸县", + "city": "大庆市", + "country": "中国", + "lat": "47.17723439524254", + "lng": "124.86965042765937", + "province": "黑龙江省" + }, + { + "area": "杜尔伯特蒙古族自治县", + "city": "大庆市", + "country": "中国", + "lat": "46.86876775845202", + "lng": "124.44935879141454", + "province": "黑龙江省" + }, + { + "area": "大庆高新技术产业开发区", + "city": "大庆市", + "country": "中国", + "lat": "46.58128425388343", + "lng": "125.15776844540395", + "province": "黑龙江省" + }, + { + "area": "", + "city": "伊春市", + "country": "中国", + "lat": "47.733318457230936", + "lng": "128.84754638019822", + "province": "黑龙江省" + }, + { + "area": "伊美区", + "city": "伊春市", + "country": "中国", + "lat": "47.733318457230936", + "lng": "128.84754638019822", + "province": "黑龙江省" + }, + { + "area": "乌翠区", + "city": "伊春市", + "country": "中国", + "lat": "47.733318457230936", + "lng": "128.84754638019822", + "province": "黑龙江省" + }, + { + "area": "友好区", + "city": "伊春市", + "country": "中国", + "lat": "47.846436100331644", + "lng": "128.84257946937242", + "province": "黑龙江省" + }, + { + "area": "嘉荫县", + "city": "伊春市", + "country": "中国", + "lat": "48.894983469563904", + "lng": "130.41055547771902", + "province": "黑龙江省" + }, + { + "area": "汤旺县", + "city": "伊春市", + "country": "中国", + "lat": "47.6690254716529", + "lng": "129.04351846449248", + "province": "黑龙江省" + }, + { + "area": "丰林县", + "city": "伊春市", + "country": "中国", + "lat": "48.210030039888956", + "lng": "129.02563787297734", + "province": "黑龙江省" + }, + { + "area": "大箐山县", + "city": "伊春市", + "country": "中国", + "lat": "46.95511349771756", + "lng": "129.0071679930477", + "province": "黑龙江省" + }, + { + "area": "南岔县", + "city": "伊春市", + "country": "中国", + "lat": "47.1437499135947", + "lng": "129.2895717996127", + "province": "黑龙江省" + }, + { + "area": "金林区", + "city": "伊春市", + "country": "中国", + "lat": "47.733318457230936", + "lng": "128.84754638019822", + "province": "黑龙江省" + }, + { + "area": "铁力市", + "city": "伊春市", + "country": "中国", + "lat": "46.992948620259035", + "lng": "128.0383649039294", + "province": "黑龙江省" + }, + { + "area": "", + "city": "佳木斯市", + "country": "中国", + "lat": "46.80568999085779", + "lng": "130.327359092573", + "province": "黑龙江省" + }, + { + "area": "向阳区", + "city": "佳木斯市", + "country": "中国", + "lat": "46.81351181678074", + "lng": "130.37261186145227", + "province": "黑龙江省" + }, + { + "area": "前进区", + "city": "佳木斯市", + "country": "中国", + "lat": "46.8196265084816", + "lng": "130.3816482758994", + "province": "黑龙江省" + }, + { + "area": "东风区", + "city": "佳木斯市", + "country": "中国", + "lat": "46.828385151991114", + "lng": "130.41056077772154", + "province": "黑龙江省" + }, + { + "area": "郊区", + "city": "佳木斯市", + "country": "中国", + "lat": "46.81616811282895", + "lng": "130.3333780988121", + "province": "黑龙江省" + }, + { + "area": "桦南县", + "city": "佳木斯市", + "country": "中国", + "lat": "46.245077476879636", + "lng": "130.56038502152637", + "province": "黑龙江省" + }, + { + "area": "桦川县", + "city": "佳木斯市", + "country": "中国", + "lat": "47.028816852925594", + "lng": "130.72554944886406", + "province": "黑龙江省" + }, + { + "area": "汤原县", + "city": "佳木斯市", + "country": "中国", + "lat": "46.73532672046088", + "lng": "129.91164504154594", + "province": "黑龙江省" + }, + { + "area": "同江市", + "city": "佳木斯市", + "country": "中国", + "lat": "47.64798067666648", + "lng": "132.51750949205328", + "province": "黑龙江省" + }, + { + "area": "富锦市", + "city": "佳木斯市", + "country": "中国", + "lat": "47.25593257184771", + "lng": "132.04453879527813", + "province": "黑龙江省" + }, + { + "area": "抚远市", + "city": "佳木斯市", + "country": "中国", + "lat": "48.37094469627278", + "lng": "134.31448962575448", + "province": "黑龙江省" + }, + { + "area": "", + "city": "七台河市", + "country": "中国", + "lat": "45.77630032154785", + "lng": "131.01154459102744", + "province": "黑龙江省" + }, + { + "area": "新兴区", + "city": "七台河市", + "country": "中国", + "lat": "45.8223103285433", + "lng": "130.93837086994796", + "province": "黑龙江省" + }, + { + "area": "桃山区", + "city": "七台河市", + "country": "中国", + "lat": "45.77179991569574", + "lng": "131.02644424553824", + "province": "黑龙江省" + }, + { + "area": "茄子河区", + "city": "七台河市", + "country": "中国", + "lat": "45.791238180151915", + "lng": "131.0744805937013", + "province": "黑龙江省" + }, + { + "area": "勃利县", + "city": "七台河市", + "country": "中国", + "lat": "45.76096431316663", + "lng": "130.59853255314385", + "province": "黑龙江省" + }, + { + "area": "", + "city": "牡丹江市", + "country": "中国", + "lat": "44.55624570898632", + "lng": "129.6395397783469", + "province": "黑龙江省" + }, + { + "area": "东安区", + "city": "牡丹江市", + "country": "中国", + "lat": "44.58746037757089", + "lng": "129.63347765344335", + "province": "黑龙江省" + }, + { + "area": "阳明区", + "city": "牡丹江市", + "country": "中国", + "lat": "44.60177502651452", + "lng": "129.64252736281196", + "province": "黑龙江省" + }, + { + "area": "爱民区", + "city": "牡丹江市", + "country": "中国", + "lat": "44.60235033944156", + "lng": "129.59836369953325", + "province": "黑龙江省" + }, + { + "area": "西安区", + "city": "牡丹江市", + "country": "中国", + "lat": "44.583861081841675", + "lng": "129.62241286515473", + "province": "黑龙江省" + }, + { + "area": "林口县", + "city": "牡丹江市", + "country": "中国", + "lat": "45.28412885062018", + "lng": "130.28757880086056", + "province": "黑龙江省" + }, + { + "area": "牡丹江经济技术开发区", + "city": "牡丹江市", + "country": "中国", + "lat": "44.289595066474114", + "lng": "129.38724286061165", + "province": "黑龙江省" + }, + { + "area": "绥芬河市", + "city": "牡丹江市", + "country": "中国", + "lat": "44.41815437238761", + "lng": "131.15739222566847", + "province": "黑龙江省" + }, + { + "area": "海林市", + "city": "牡丹江市", + "country": "中国", + "lat": "44.599871973195235", + "lng": "129.38742683358007", + "province": "黑龙江省" + }, + { + "area": "宁安市", + "city": "牡丹江市", + "country": "中国", + "lat": "44.34698357750037", + "lng": "129.4893679801412", + "province": "黑龙江省" + }, + { + "area": "穆棱市", + "city": "牡丹江市", + "country": "中国", + "lat": "44.92478458958822", + "lng": "130.53055850351956", + "province": "黑龙江省" + }, + { + "area": "东宁市", + "city": "牡丹江市", + "country": "中国", + "lat": "44.096101486248074", + "lng": "131.1315435744494", + "province": "黑龙江省" + }, + { + "area": "", + "city": "黑河市", + "country": "中国", + "lat": "50.25127231175015", + "lng": "127.53548988621854", + "province": "黑龙江省" + }, + { + "area": "爱辉区", + "city": "黑河市", + "country": "中国", + "lat": "50.25770961645177", + "lng": "127.50663227086308", + "province": "黑龙江省" + }, + { + "area": "逊克县", + "city": "黑河市", + "country": "中国", + "lat": "49.569491435700485", + "lng": "128.48558459529426", + "province": "黑龙江省" + }, + { + "area": "孙吴县", + "city": "黑河市", + "country": "中国", + "lat": "49.43145060685943", + "lng": "127.3423877083676", + "province": "黑龙江省" + }, + { + "area": "北安市", + "city": "黑河市", + "country": "中国", + "lat": "48.247419532218935", + "lng": "126.49737974225795", + "province": "黑龙江省" + }, + { + "area": "五大连池市", + "city": "黑河市", + "country": "中国", + "lat": "48.52260955176269", + "lng": "126.21155518831091", + "province": "黑龙江省" + }, + { + "area": "嫩江市", + "city": "黑河市", + "country": "中国", + "lat": "49.19132018475566", + "lng": "125.22763469542623", + "province": "黑龙江省" + }, + { + "area": "", + "city": "绥化市", + "country": "中国", + "lat": "46.6600321798244", + "lng": "126.97535687530133", + "province": "黑龙江省" + }, + { + "area": "北林区", + "city": "绥化市", + "country": "中国", + "lat": "46.643492672111265", + "lng": "126.99144894054609", + "province": "黑龙江省" + }, + { + "area": "望奎县", + "city": "绥化市", + "country": "中国", + "lat": "46.83916760174942", + "lng": "126.4923848941308", + "province": "黑龙江省" + }, + { + "area": "兰西县", + "city": "绥化市", + "country": "中国", + "lat": "46.258095172244815", + "lng": "126.29461952254698", + "province": "黑龙江省" + }, + { + "area": "青冈县", + "city": "绥化市", + "country": "中国", + "lat": "46.710684983049774", + "lng": "126.10048887471764", + "province": "黑龙江省" + }, + { + "area": "庆安县", + "city": "绥化市", + "country": "中国", + "lat": "46.885744465244535", + "lng": "127.51461218819992", + "province": "黑龙江省" + }, + { + "area": "明水县", + "city": "绥化市", + "country": "中国", + "lat": "47.179483374940986", + "lng": "125.9124826941943", + "province": "黑龙江省" + }, + { + "area": "绥棱县", + "city": "绥化市", + "country": "中国", + "lat": "47.24251579385352", + "lng": "127.12051514062621", + "province": "黑龙江省" + }, + { + "area": "安达市", + "city": "绥化市", + "country": "中国", + "lat": "46.4257192321437", + "lng": "125.34862234422451", + "province": "黑龙江省" + }, + { + "area": "肇东市", + "city": "绥化市", + "country": "中国", + "lat": "46.05693828930348", + "lng": "125.96853740717", + "province": "黑龙江省" + }, + { + "area": "海伦市", + "city": "绥化市", + "country": "中国", + "lat": "47.456903841096434", + "lng": "126.9365085755555", + "province": "黑龙江省" + }, + { + "area": "", + "city": "大兴安岭地区", + "country": "中国", + "lat": "50.42002595502784", + "lng": "124.15292785448057", + "province": "黑龙江省" + }, + { + "area": "漠河市", + "city": "大兴安岭地区", + "country": "中国", + "lat": "52.97830367837742", + "lng": "122.54542083420051", + "province": "黑龙江省" + }, + { + "area": "呼玛县", + "city": "大兴安岭地区", + "country": "中国", + "lat": "51.730946747239756", + "lng": "126.65964991907305", + "province": "黑龙江省" + }, + { + "area": "塔河县", + "city": "大兴安岭地区", + "country": "中国", + "lat": "52.34030508111336", + "lng": "124.71651251448932", + "province": "黑龙江省" + }, + { + "area": "加格达奇区", + "city": "大兴安岭地区", + "country": "中国", + "lat": "50.42002595502784", + "lng": "124.15292785448057", + "province": "黑龙江省" + }, + { + "area": "松岭区", + "city": "大兴安岭地区", + "country": "中国", + "lat": "50.42002595502784", + "lng": "124.15292785448057", + "province": "黑龙江省" + }, + { + "area": "新林区", + "city": "大兴安岭地区", + "country": "中国", + "lat": "51.80122511053338", + "lng": "124.5391409237459", + "province": "黑龙江省" + }, + { + "area": "呼中区", + "city": "大兴安岭地区", + "country": "中国", + "lat": "52.03746881462187", + "lng": "123.58143136869262", + "province": "黑龙江省" + }, + { + "area": "", + "city": "市辖区", + "country": "中国", + "lat": "31.235929042252014", + "lng": "121.48053886017651", + "province": "上海市" + }, + { + "area": "黄浦区", + "city": "市辖区", + "country": "中国", + "lat": "31.23724715206362", + "lng": "121.49158559252436", + "province": "上海市" + }, + { + "area": "徐汇区", + "city": "市辖区", + "country": "中国", + "lat": "31.194556772822725", + "lng": "121.44339635276381", + "province": "上海市" + }, + { + "area": "长宁区", + "city": "市辖区", + "country": "中国", + "lat": "31.226847968225428", + "lng": "121.43045437545099", + "province": "上海市" + }, + { + "area": "静安区", + "city": "市辖区", + "country": "中国", + "lat": "31.233844930401652", + "lng": "121.45343177276851", + "province": "上海市" + }, + { + "area": "普陀区", + "city": "市辖区", + "country": "中国", + "lat": "31.254973368279597", + "lng": "121.40356934916508", + "province": "上海市" + }, + { + "area": "虹口区", + "city": "市辖区", + "country": "中国", + "lat": "31.269746698931357", + "lng": "121.51158645453457", + "province": "上海市" + }, + { + "area": "杨浦区", + "city": "市辖区", + "country": "中国", + "lat": "31.265524144657057", + "lng": "121.53251993732523", + "province": "上海市" + }, + { + "area": "闵行区", + "city": "市辖区", + "country": "中国", + "lat": "31.118842580087428", + "lng": "121.38861193361008", + "province": "上海市" + }, + { + "area": "宝山区", + "city": "市辖区", + "country": "中国", + "lat": "31.41027947347614", + "lng": "121.4965630135246", + "province": "上海市" + }, + { + "area": "嘉定区", + "city": "市辖区", + "country": "中国", + "lat": "31.3801553396772", + "lng": "121.27259505835202", + "province": "上海市" + }, + { + "area": "浦东新区", + "city": "市辖区", + "country": "中国", + "lat": "31.227348292436346", + "lng": "121.55045460683195", + "province": "上海市" + }, + { + "area": "金山区", + "city": "市辖区", + "country": "中国", + "lat": "30.747852376570318", + "lng": "121.34848004512126", + "province": "上海市" + }, + { + "area": "松江区", + "city": "市辖区", + "country": "中国", + "lat": "31.037135176464492", + "lng": "121.23447959624146", + "province": "上海市" + }, + { + "area": "青浦区", + "city": "市辖区", + "country": "中国", + "lat": "31.155454317980737", + "lng": "121.13055310467274", + "province": "上海市" + }, + { + "area": "奉贤区", + "city": "市辖区", + "country": "中国", + "lat": "30.923720110285377", + "lng": "121.48050373643107", + "province": "上海市" + }, + { + "area": "崇明区", + "city": "市辖区", + "country": "中国", + "lat": "31.336247198796897", + "lng": "121.40951379604681", + "province": "上海市" + }, + { + "area": "", + "city": "南京市", + "country": "中国", + "lat": "32.06465288561847", + "lng": "118.80242172124585", + "province": "江苏省" + }, + { + "area": "玄武区", + "city": "南京市", + "country": "中国", + "lat": "32.05475668294885", + "lng": "118.80441263574761", + "province": "江苏省" + }, + { + "area": "秦淮区", + "city": "南京市", + "country": "中国", + "lat": "32.04513860640491", + "lng": "118.80040736097028", + "province": "江苏省" + }, + { + "area": "建邺区", + "city": "南京市", + "country": "中国", + "lat": "32.009369695446466", + "lng": "118.73856944695221", + "province": "江苏省" + }, + { + "area": "鼓楼区", + "city": "南京市", + "country": "中国", + "lat": "32.07240516055662", + "lng": "118.7765189920351", + "province": "江苏省" + }, + { + "area": "浦口区", + "city": "南京市", + "country": "中国", + "lat": "32.06467927792303", + "lng": "118.63460405875492", + "province": "江苏省" + }, + { + "area": "栖霞区", + "city": "南京市", + "country": "中国", + "lat": "32.10260020782976", + "lng": "118.91542298490691", + "province": "江苏省" + }, + { + "area": "雨花台区", + "city": "南京市", + "country": "中国", + "lat": "31.997858805465647", + "lng": "118.78544536405718", + "province": "江苏省" + }, + { + "area": "江宁区", + "city": "南京市", + "country": "中国", + "lat": "31.958526869176943", + "lng": "118.84656705909214", + "province": "江苏省" + }, + { + "area": "六合区", + "city": "南京市", + "country": "中国", + "lat": "32.328666041019886", + "lng": "118.82747132971379", + "province": "江苏省" + }, + { + "area": "溧水区", + "city": "南京市", + "country": "中国", + "lat": "31.65728369631429", + "lng": "119.0344039090257", + "province": "江苏省" + }, + { + "area": "高淳区", + "city": "南京市", + "country": "中国", + "lat": "31.33363912390532", + "lng": "118.89849765147122", + "province": "江苏省" + }, + { + "area": "", + "city": "无锡市", + "country": "中国", + "lat": "31.498809732685714", + "lng": "120.31858328810601", + "province": "江苏省" + }, + { + "area": "锡山区", + "city": "无锡市", + "country": "中国", + "lat": "31.594761632814496", + "lng": "120.36342571102806", + "province": "江苏省" + }, + { + "area": "惠山区", + "city": "无锡市", + "country": "中国", + "lat": "31.686741337274505", + "lng": "120.30459559334903", + "province": "江苏省" + }, + { + "area": "滨湖区", + "city": "无锡市", + "country": "中国", + "lat": "31.534639699974193", + "lng": "120.29154752615551", + "province": "江苏省" + }, + { + "area": "梁溪区", + "city": "无锡市", + "country": "中国", + "lat": "31.571645024134835", + "lng": "120.30959951436182", + "province": "江苏省" + }, + { + "area": "新吴区", + "city": "无锡市", + "country": "中国", + "lat": "31.554850239841915", + "lng": "120.37039647195492", + "province": "江苏省" + }, + { + "area": "江阴市", + "city": "无锡市", + "country": "中国", + "lat": "31.926044909769043", + "lng": "120.29156800752115", + "province": "江苏省" + }, + { + "area": "宜兴市", + "city": "无锡市", + "country": "中国", + "lat": "31.342956624267874", + "lng": "119.83160603216115", + "province": "江苏省" + }, + { + "area": "", + "city": "徐州市", + "country": "中国", + "lat": "34.21266655011306", + "lng": "117.29057543439453", + "province": "江苏省" + }, + { + "area": "鼓楼区", + "city": "徐州市", + "country": "中国", + "lat": "34.29376008422141", + "lng": "117.19257874732773", + "province": "江苏省" + }, + { + "area": "云龙区", + "city": "徐州市", + "country": "中国", + "lat": "34.25908669103099", + "lng": "117.25842391239526", + "province": "江苏省" + }, + { + "area": "贾汪区", + "city": "徐州市", + "country": "中国", + "lat": "34.44162040061657", + "lng": "117.46943039702548", + "province": "江苏省" + }, + { + "area": "泉山区", + "city": "徐州市", + "country": "中国", + "lat": "34.24994287160608", + "lng": "117.20059046467956", + "province": "江苏省" + }, + { + "area": "铜山区", + "city": "徐州市", + "country": "中国", + "lat": "34.1861004498853", + "lng": "117.17556960198795", + "province": "江苏省" + }, + { + "area": "丰县", + "city": "徐州市", + "country": "中国", + "lat": "34.699769765634095", + "lng": "116.60258246804032", + "province": "江苏省" + }, + { + "area": "沛县", + "city": "徐州市", + "country": "中国", + "lat": "34.76515195541547", + "lng": "116.94258562390337", + "province": "江苏省" + }, + { + "area": "睢宁县", + "city": "徐州市", + "country": "中国", + "lat": "33.91878941781798", + "lng": "117.94743277245068", + "province": "江苏省" + }, + { + "area": "徐州经济技术开发区", + "city": "徐州市", + "country": "中国", + "lat": "34.292097076324296", + "lng": "117.33167229434014", + "province": "江苏省" + }, + { + "area": "新沂市", + "city": "徐州市", + "country": "中国", + "lat": "34.37561095463685", + "lng": "118.36153652101795", + "province": "江苏省" + }, + { + "area": "邳州市", + "city": "徐州市", + "country": "中国", + "lat": "34.34464551932591", + "lng": "118.0191233013022", + "province": "江苏省" + }, + { + "area": "", + "city": "常州市", + "country": "中国", + "lat": "31.815795653327836", + "lng": "119.98148471327892", + "province": "江苏省" + }, + { + "area": "天宁区", + "city": "常州市", + "country": "中国", + "lat": "31.785570271252627", + "lng": "119.98046316025298", + "province": "江苏省" + }, + { + "area": "钟楼区", + "city": "常州市", + "country": "中国", + "lat": "31.807646657753722", + "lng": "119.90846271600053", + "province": "江苏省" + }, + { + "area": "新北区", + "city": "常州市", + "country": "中国", + "lat": "31.836323947623658", + "lng": "119.97751429275537", + "province": "江苏省" + }, + { + "area": "武进区", + "city": "常州市", + "country": "中国", + "lat": "31.70644661174212", + "lng": "119.94861167229404", + "province": "江苏省" + }, + { + "area": "金坛区", + "city": "常州市", + "country": "中国", + "lat": "31.728893030010145", + "lng": "119.6045709026553", + "province": "江苏省" + }, + { + "area": "溧阳市", + "city": "常州市", + "country": "中国", + "lat": "31.42210229215941", + "lng": "119.49150603896412", + "province": "江苏省" + }, + { + "area": "", + "city": "苏州市", + "country": "中国", + "lat": "31.303564074441766", + "lng": "120.59241222959322", + "province": "江苏省" + }, + { + "area": "虎丘区", + "city": "苏州市", + "country": "中国", + "lat": "31.301932876554098", + "lng": "120.57847178570609", + "province": "江苏省" + }, + { + "area": "吴中区", + "city": "苏州市", + "country": "中国", + "lat": "31.268261445846264", + "lng": "120.63850751921002", + "province": "江苏省" + }, + { + "area": "相城区", + "city": "苏州市", + "country": "中国", + "lat": "31.37468992149277", + "lng": "120.6485659358358", + "province": "江苏省" + }, + { + "area": "姑苏区", + "city": "苏州市", + "country": "中国", + "lat": "31.341831300992645", + "lng": "120.62345497310153", + "province": "江苏省" + }, + { + "area": "吴江区", + "city": "苏州市", + "country": "中国", + "lat": "31.144644190472693", + "lng": "120.65156717454464", + "province": "江苏省" + }, + { + "area": "苏州工业园区", + "city": "苏州市", + "country": "中国", + "lat": "31.3304431437088", + "lng": "120.7298897133152", + "province": "江苏省" + }, + { + "area": "常熟市", + "city": "苏州市", + "country": "中国", + "lat": "31.65953827674108", + "lng": "120.75949588665195", + "province": "江苏省" + }, + { + "area": "张家港市", + "city": "苏州市", + "country": "中国", + "lat": "31.88114053634028", + "lng": "120.56155363871446", + "province": "江苏省" + }, + { + "area": "昆山市", + "city": "苏州市", + "country": "中国", + "lat": "31.390863425081864", + "lng": "120.98745249794995", + "province": "江苏省" + }, + { + "area": "太仓市", + "city": "苏州市", + "country": "中国", + "lat": "31.464599352977785", + "lng": "121.13559529350024", + "province": "江苏省" + }, + { + "area": "", + "city": "南通市", + "country": "中国", + "lat": "31.98654943120089", + "lng": "120.90159173866185", + "province": "江苏省" + }, + { + "area": "崇川区", + "city": "南通市", + "country": "中国", + "lat": "32.01592302963055", + "lng": "120.86342022228744", + "province": "江苏省" + }, + { + "area": "港闸区", + "city": "南通市", + "country": "中国", + "lat": "32.037345124874605", + "lng": "120.82445235807846", + "province": "江苏省" + }, + { + "area": "通州区", + "city": "南通市", + "country": "中国", + "lat": "32.07035573967588", + "lng": "121.08142549497644", + "province": "江苏省" + }, + { + "area": "如东县", + "city": "南通市", + "country": "中国", + "lat": "32.33587288615511", + "lng": "121.19243791023843", + "province": "江苏省" + }, + { + "area": "南通经济技术开发区", + "city": "南通市", + "country": "中国", + "lat": "31.93861248381317", + "lng": "120.95923348798169", + "province": "江苏省" + }, + { + "area": "启东市", + "city": "南通市", + "country": "中国", + "lat": "31.81423284964318", + "lng": "121.66347374677267", + "province": "江苏省" + }, + { + "area": "如皋市", + "city": "南通市", + "country": "中国", + "lat": "32.37785148610902", + "lng": "120.57946558109177", + "province": "江苏省" + }, + { + "area": "海门市", + "city": "南通市", + "country": "中国", + "lat": "31.87361172603022", + "lng": "121.18843649817478", + "province": "江苏省" + }, + { + "area": "海安市", + "city": "南通市", + "country": "中国", + "lat": "32.53919574424043", + "lng": "120.47443309577918", + "province": "江苏省" + }, + { + "area": "", + "city": "连云港市", + "country": "中国", + "lat": "34.60224952526725", + "lng": "119.22862133316607", + "province": "江苏省" + }, + { + "area": "连云区", + "city": "连云港市", + "country": "中国", + "lat": "34.76533714403042", + "lng": "119.34658780087244", + "province": "江苏省" + }, + { + "area": "海州区", + "city": "连云港市", + "country": "中国", + "lat": "34.5774561185969", + "lng": "119.16940808818707", + "province": "江苏省" + }, + { + "area": "赣榆区", + "city": "连云港市", + "country": "中国", + "lat": "34.84768246084617", + "lng": "119.17943461496724", + "province": "江苏省" + }, + { + "area": "东海县", + "city": "连云港市", + "country": "中国", + "lat": "34.54791862736427", + "lng": "118.75956509248417", + "province": "江苏省" + }, + { + "area": "灌云县", + "city": "连云港市", + "country": "中国", + "lat": "34.28861606025826", + "lng": "119.24653354503504", + "province": "江苏省" + }, + { + "area": "灌南县", + "city": "连云港市", + "country": "中国", + "lat": "34.09259130777028", + "lng": "119.32253818609821", + "province": "江苏省" + }, + { + "area": "连云港经济技术开发区", + "city": "连云港市", + "country": "中国", + "lat": "34.092698259645886", + "lng": "119.32786882082497", + "province": "江苏省" + }, + { + "area": "连云港高新技术产业开发区", + "city": "连云港市", + "country": "中国", + "lat": "34.513478033894295", + "lng": "118.71014598264989", + "province": "江苏省" + }, + { + "area": "", + "city": "淮安市", + "country": "中国", + "lat": "33.61629530103313", + "lng": "119.02148367070623", + "province": "江苏省" + }, + { + "area": "淮安区", + "city": "淮安市", + "country": "中国", + "lat": "33.508999838207515", + "lng": "119.14746320322271", + "province": "江苏省" + }, + { + "area": "淮阴区", + "city": "淮安市", + "country": "中国", + "lat": "33.63815042476756", + "lng": "119.0414217411613", + "province": "江苏省" + }, + { + "area": "清江浦区", + "city": "淮安市", + "country": "中国", + "lat": "33.55856224006592", + "lng": "119.03241362333779", + "province": "江苏省" + }, + { + "area": "洪泽区", + "city": "淮安市", + "country": "中国", + "lat": "33.299624681470235", + "lng": "118.87958364929754", + "province": "江苏省" + }, + { + "area": "涟水县", + "city": "淮安市", + "country": "中国", + "lat": "33.78707870790034", + "lng": "119.26644843920793", + "province": "江苏省" + }, + { + "area": "盱眙县", + "city": "淮安市", + "country": "中国", + "lat": "33.018254741659845", + "lng": "118.55144127023549", + "province": "江苏省" + }, + { + "area": "金湖县", + "city": "淮安市", + "country": "中国", + "lat": "33.03128382675661", + "lng": "119.02646908662551", + "province": "江苏省" + }, + { + "area": "淮安经济技术开发区", + "city": "淮安市", + "country": "中国", + "lat": "33.508999838207515", + "lng": "119.14746320322271", + "province": "江苏省" + }, + { + "area": "", + "city": "盐城市", + "country": "中国", + "lat": "33.355100917626196", + "lng": "120.167544265761", + "province": "江苏省" + }, + { + "area": "亭湖区", + "city": "盐城市", + "country": "中国", + "lat": "33.39589348690703", + "lng": "120.20457816803754", + "province": "江苏省" + }, + { + "area": "盐都区", + "city": "盐城市", + "country": "中国", + "lat": "33.34402031559912", + "lng": "120.16050325734324", + "province": "江苏省" + }, + { + "area": "大丰区", + "city": "盐城市", + "country": "中国", + "lat": "33.20475984971028", + "lng": "120.50743881648788", + "province": "江苏省" + }, + { + "area": "响水县", + "city": "盐城市", + "country": "中国", + "lat": "34.20474300276", + "lng": "119.58460112201573", + "province": "江苏省" + }, + { + "area": "滨海县", + "city": "盐城市", + "country": "中国", + "lat": "33.99564654746655", + "lng": "119.82762105908833", + "province": "江苏省" + }, + { + "area": "阜宁县", + "city": "盐城市", + "country": "中国", + "lat": "33.765078727087015", + "lng": "119.80958074885365", + "province": "江苏省" + }, + { + "area": "射阳县", + "city": "盐城市", + "country": "中国", + "lat": "33.78101359213001", + "lng": "120.26444564891948", + "province": "江苏省" + }, + { + "area": "建湖县", + "city": "盐城市", + "country": "中国", + "lat": "33.469832978385014", + "lng": "119.80553127744521", + "province": "江苏省" + }, + { + "area": "盐城经济技术开发区", + "city": "盐城市", + "country": "中国", + "lat": "33.38583079365075", + "lng": "120.22374917541764", + "province": "江苏省" + }, + { + "area": "东台市", + "city": "盐城市", + "country": "中国", + "lat": "32.872716312488244", + "lng": "120.32653706475246", + "province": "江苏省" + }, + { + "area": "", + "city": "扬州市", + "country": "中国", + "lat": "32.40067693609037", + "lng": "119.41941890822997", + "province": "江苏省" + }, + { + "area": "广陵区", + "city": "扬州市", + "country": "中国", + "lat": "32.40066115971978", + "lng": "119.43850484607827", + "province": "江苏省" + }, + { + "area": "邗江区", + "city": "扬州市", + "country": "中国", + "lat": "32.382751355260424", + "lng": "119.40438513670664", + "province": "江苏省" + }, + { + "area": "江都区", + "city": "扬州市", + "country": "中国", + "lat": "32.44029450624287", + "lng": "119.5766029690771", + "province": "江苏省" + }, + { + "area": "宝应县", + "city": "扬州市", + "country": "中国", + "lat": "33.24720546114832", + "lng": "119.36555570137673", + "province": "江苏省" + }, + { + "area": "扬州经济技术开发区", + "city": "扬州市", + "country": "中国", + "lat": "32.29583205528189", + "lng": "119.4110539771516", + "province": "江苏省" + }, + { + "area": "仪征市", + "city": "扬州市", + "country": "中国", + "lat": "32.27809048316069", + "lng": "119.19146705795117", + "province": "江苏省" + }, + { + "area": "高邮市", + "city": "扬州市", + "country": "中国", + "lat": "32.787147020528316", + "lng": "119.46561561653884", + "province": "江苏省" + }, + { + "area": "", + "city": "镇江市", + "country": "中国", + "lat": "32.19471592052375", + "lng": "119.43048944567383", + "province": "江苏省" + }, + { + "area": "京口区", + "city": "镇江市", + "country": "中国", + "lat": "32.20378548352827", + "lng": "119.47560369584319", + "province": "江苏省" + }, + { + "area": "润州区", + "city": "镇江市", + "country": "中国", + "lat": "32.2014948431523", + "lng": "119.4184404738685", + "province": "江苏省" + }, + { + "area": "丹徒区", + "city": "镇江市", + "country": "中国", + "lat": "32.137920395650404", + "lng": "119.44050079109088", + "province": "江苏省" + }, + { + "area": "镇江新区", + "city": "镇江市", + "country": "中国", + "lat": "32.169142010412685", + "lng": "119.52265397404766", + "province": "江苏省" + }, + { + "area": "丹阳市", + "city": "镇江市", + "country": "中国", + "lat": "32.01592027416992", + "lng": "119.61250060471407", + "province": "江苏省" + }, + { + "area": "扬中市", + "city": "镇江市", + "country": "中国", + "lat": "32.24296719412154", + "lng": "119.80351961208618", + "province": "江苏省" + }, + { + "area": "句容市", + "city": "镇江市", + "country": "中国", + "lat": "31.950923490521372", + "lng": "119.17543320290359", + "province": "江苏省" + }, + { + "area": "", + "city": "泰州市", + "country": "中国", + "lat": "32.4606750493083", + "lng": "119.9295663378548", + "province": "江苏省" + }, + { + "area": "海陵区", + "city": "泰州市", + "country": "中国", + "lat": "32.49673154922654", + "lng": "119.92552495119595", + "province": "江苏省" + }, + { + "area": "高港区", + "city": "泰州市", + "country": "中国", + "lat": "32.32486247444036", + "lng": "119.88842098108961", + "province": "江苏省" + }, + { + "area": "姜堰区", + "city": "泰州市", + "country": "中国", + "lat": "32.515233674758576", + "lng": "120.13339832586847", + "province": "江苏省" + }, + { + "area": "泰州医药高新技术产业开发区", + "city": "泰州市", + "country": "中国", + "lat": "32.452657449902745", + "lng": "119.91416057801976", + "province": "江苏省" + }, + { + "area": "兴化市", + "city": "泰州市", + "country": "中国", + "lat": "32.917824213889254", + "lng": "119.85751406137442", + "province": "江苏省" + }, + { + "area": "靖江市", + "city": "泰州市", + "country": "中国", + "lat": "31.988170075210594", + "lng": "120.28353203592053", + "province": "江苏省" + }, + { + "area": "泰兴市", + "city": "泰州市", + "country": "中国", + "lat": "32.17747402371212", + "lng": "120.05859939046078", + "province": "江苏省" + }, + { + "area": "", + "city": "宿迁市", + "country": "中国", + "lat": "33.96774971569008", + "lng": "118.28157403570837", + "province": "江苏省" + }, + { + "area": "宿城区", + "city": "宿迁市", + "country": "中国", + "lat": "33.96867763073053", + "lng": "118.24956705106565", + "province": "江苏省" + }, + { + "area": "宿豫区", + "city": "宿迁市", + "country": "中国", + "lat": "33.95480439632684", + "lng": "118.33640094471272", + "province": "江苏省" + }, + { + "area": "沭阳县", + "city": "宿迁市", + "country": "中国", + "lat": "34.11745420947911", + "lng": "118.81041906570952", + "province": "江苏省" + }, + { + "area": "泗阳县", + "city": "宿迁市", + "country": "中国", + "lat": "33.728328313046696", + "lng": "118.70946596537884", + "province": "江苏省" + }, + { + "area": "泗洪县", + "city": "宿迁市", + "country": "中国", + "lat": "33.46573259459488", + "lng": "118.22241594668768", + "province": "江苏省" + }, + { + "area": "宿迁经济技术开发区", + "city": "宿迁市", + "country": "中国", + "lat": "33.96774971569008", + "lng": "118.28157403570837", + "province": "江苏省" + }, + { + "area": "", + "city": "杭州市", + "country": "中国", + "lat": "30.25308298169347", + "lng": "120.21551180372168", + "province": "浙江省" + }, + { + "area": "上城区", + "city": "杭州市", + "country": "中国", + "lat": "30.248398420425882", + "lng": "120.17557880007278", + "province": "浙江省" + }, + { + "area": "下城区", + "city": "杭州市", + "country": "中国", + "lat": "30.286744052561524", + "lng": "120.18760693119027", + "province": "浙江省" + }, + { + "area": "江干区", + "city": "杭州市", + "country": "中国", + "lat": "30.2633105670119", + "lng": "120.21153877811217", + "province": "浙江省" + }, + { + "area": "拱墅区", + "city": "杭州市", + "country": "中国", + "lat": "30.32464256662975", + "lng": "120.14844700926328", + "province": "浙江省" + }, + { + "area": "西湖区", + "city": "杭州市", + "country": "中国", + "lat": "30.265916325588922", + "lng": "120.13643801205312", + "province": "浙江省" + }, + { + "area": "滨江区", + "city": "杭州市", + "country": "中国", + "lat": "30.214332950144062", + "lng": "120.21847118139375", + "province": "浙江省" + }, + { + "area": "萧山区", + "city": "杭州市", + "country": "中国", + "lat": "30.18751122221409", + "lng": "120.2704705839749", + "province": "浙江省" + }, + { + "area": "余杭区", + "city": "杭州市", + "country": "中国", + "lat": "30.424739268745142", + "lng": "120.30659216717552", + "province": "浙江省" + }, + { + "area": "富阳区", + "city": "杭州市", + "country": "中国", + "lat": "30.05472296730377", + "lng": "119.96655568417805", + "province": "浙江省" + }, + { + "area": "临安区", + "city": "杭州市", + "country": "中国", + "lat": "30.239805598053564", + "lng": "119.73151737122271", + "province": "浙江省" + }, + { + "area": "桐庐县", + "city": "杭州市", + "country": "中国", + "lat": "29.79858479014279", + "lng": "119.69759877582668", + "province": "浙江省" + }, + { + "area": "淳安县", + "city": "杭州市", + "country": "中国", + "lat": "29.61495036603392", + "lng": "119.04839230601344", + "province": "浙江省" + }, + { + "area": "建德市", + "city": "杭州市", + "country": "中国", + "lat": "29.48115402696838", + "lng": "119.28739807500521", + "province": "浙江省" + }, + { + "area": "", + "city": "宁波市", + "country": "中国", + "lat": "29.866033045866054", + "lng": "121.62857249434141", + "province": "浙江省" + }, + { + "area": "海曙区", + "city": "宁波市", + "country": "中国", + "lat": "29.86572070836559", + "lng": "121.55740307253974", + "province": "浙江省" + }, + { + "area": "江北区", + "city": "宁波市", + "country": "中国", + "lat": "29.89294837947611", + "lng": "121.56042128922172", + "province": "浙江省" + }, + { + "area": "北仑区", + "city": "宁波市", + "country": "中国", + "lat": "29.90465935993949", + "lng": "121.85057621461253", + "province": "浙江省" + }, + { + "area": "镇海区", + "city": "宁波市", + "country": "中国", + "lat": "29.9548849633495", + "lng": "121.72251899132434", + "province": "浙江省" + }, + { + "area": "鄞州区", + "city": "宁波市", + "country": "中国", + "lat": "29.824206349995904", + "lng": "121.55542706991011", + "province": "浙江省" + }, + { + "area": "奉化区", + "city": "宁波市", + "country": "中国", + "lat": "29.661146412779814", + "lng": "121.41352776719268", + "province": "浙江省" + }, + { + "area": "象山县", + "city": "宁波市", + "country": "中国", + "lat": "29.482270653805347", + "lng": "121.87556392982258", + "province": "浙江省" + }, + { + "area": "宁海县", + "city": "宁波市", + "country": "中国", + "lat": "29.294317441105566", + "lng": "121.43643177294247", + "province": "浙江省" + }, + { + "area": "余姚市", + "city": "宁波市", + "country": "中国", + "lat": "30.042734639570824", + "lng": "121.16058507482123", + "province": "浙江省" + }, + { + "area": "慈溪市", + "city": "宁波市", + "country": "中国", + "lat": "30.175256610720446", + "lng": "121.27259613631863", + "province": "浙江省" + }, + { + "area": "", + "city": "温州市", + "country": "中国", + "lat": "28.00108540447221", + "lng": "120.70647689035565", + "province": "浙江省" + }, + { + "area": "鹿城区", + "city": "温州市", + "country": "中国", + "lat": "28.020351607763462", + "lng": "120.6615864979342", + "province": "浙江省" + }, + { + "area": "龙湾区", + "city": "温州市", + "country": "中国", + "lat": "27.938652244915872", + "lng": "120.81946755397436", + "province": "浙江省" + }, + { + "area": "瓯海区", + "city": "温州市", + "country": "中国", + "lat": "27.972857351642503", + "lng": "120.62144724335346", + "province": "浙江省" + }, + { + "area": "洞头区", + "city": "温州市", + "country": "中国", + "lat": "27.841870324586573", + "lng": "121.16354856758629", + "province": "浙江省" + }, + { + "area": "永嘉县", + "city": "温州市", + "country": "中国", + "lat": "28.15645033220569", + "lng": "120.68852407508358", + "province": "浙江省" + }, + { + "area": "平阳县", + "city": "温州市", + "country": "中国", + "lat": "27.667724401092695", + "lng": "120.57251537444397", + "province": "浙江省" + }, + { + "area": "苍南县", + "city": "温州市", + "country": "中国", + "lat": "27.523066788446513", + "lng": "120.4335951222883", + "province": "浙江省" + }, + { + "area": "文成县", + "city": "温州市", + "country": "中国", + "lat": "27.79321715229029", + "lng": "120.09748845651636", + "province": "浙江省" + }, + { + "area": "泰顺县", + "city": "温州市", + "country": "中国", + "lat": "27.562170559597206", + "lng": "119.72353725758818", + "province": "浙江省" + }, + { + "area": "温州经济技术开发区", + "city": "温州市", + "country": "中国", + "lat": "27.87889198045324", + "lng": "120.82367611528723", + "province": "浙江省" + }, + { + "area": "瑞安市", + "city": "温州市", + "country": "中国", + "lat": "27.783950736231652", + "lng": "120.66158218606775", + "province": "浙江省" + }, + { + "area": "乐清市", + "city": "温州市", + "country": "中国", + "lat": "28.118179995228274", + "lng": "120.9925018561657", + "province": "浙江省" + }, + { + "area": "龙港市", + "city": "温州市", + "country": "中国", + "lat": "27.579911437330775", + "lng": "120.54224706012582", + "province": "浙江省" + }, + { + "area": "", + "city": "嘉兴市", + "country": "中国", + "lat": "30.750974830920143", + "lng": "120.76355182586005", + "province": "浙江省" + }, + { + "area": "南湖区", + "city": "嘉兴市", + "country": "中国", + "lat": "30.751546813315446", + "lng": "120.7896100517546", + "province": "浙江省" + }, + { + "area": "秀洲区", + "city": "嘉兴市", + "country": "中国", + "lat": "30.770207214173517", + "lng": "120.71543705562627", + "province": "浙江省" + }, + { + "area": "嘉善县", + "city": "嘉兴市", + "country": "中国", + "lat": "30.83712219382042", + "lng": "120.93251060584033", + "province": "浙江省" + }, + { + "area": "海盐县", + "city": "嘉兴市", + "country": "中国", + "lat": "30.531872894537752", + "lng": "120.95244526273444", + "province": "浙江省" + }, + { + "area": "海宁市", + "city": "嘉兴市", + "country": "中国", + "lat": "30.51792376977565", + "lng": "120.68656506738283", + "province": "浙江省" + }, + { + "area": "平湖市", + "city": "嘉兴市", + "country": "中国", + "lat": "30.682240998057836", + "lng": "121.02257525525401", + "province": "浙江省" + }, + { + "area": "桐乡市", + "city": "嘉兴市", + "country": "中国", + "lat": "30.63631118771037", + "lng": "120.57154315530762", + "province": "浙江省" + }, + { + "area": "", + "city": "湖州市", + "country": "中国", + "lat": "30.898963937294184", + "lng": "120.09451660915789", + "province": "浙江省" + }, + { + "area": "吴兴区", + "city": "湖州市", + "country": "中国", + "lat": "30.86295545498643", + "lng": "120.19160466020135", + "province": "浙江省" + }, + { + "area": "南浔区", + "city": "湖州市", + "country": "中国", + "lat": "30.855242982242903", + "lng": "120.42460139422415", + "province": "浙江省" + }, + { + "area": "德清县", + "city": "湖州市", + "country": "中国", + "lat": "30.548628239138925", + "lng": "119.98346466845346", + "province": "浙江省" + }, + { + "area": "长兴县", + "city": "湖州市", + "country": "中国", + "lat": "31.0325793268347", + "lng": "119.91749832197264", + "province": "浙江省" + }, + { + "area": "安吉县", + "city": "湖州市", + "country": "中国", + "lat": "30.644424794113846", + "lng": "119.68656337875633", + "province": "浙江省" + }, + { + "area": "", + "city": "绍兴市", + "country": "中国", + "lat": "30.0363693113069", + "lng": "120.58547847885335", + "province": "浙江省" + }, + { + "area": "越城区", + "city": "绍兴市", + "country": "中国", + "lat": "29.99530996279798", + "lng": "120.58843667180591", + "province": "浙江省" + }, + { + "area": "柯桥区", + "city": "绍兴市", + "country": "中国", + "lat": "30.079003604949623", + "lng": "120.45151103408105", + "province": "浙江省" + }, + { + "area": "上虞区", + "city": "绍兴市", + "country": "中国", + "lat": "30.038242967062466", + "lng": "120.87450989363869", + "province": "浙江省" + }, + { + "area": "新昌县", + "city": "绍兴市", + "country": "中国", + "lat": "29.505541075309846", + "lng": "120.91056965639144", + "province": "浙江省" + }, + { + "area": "诸暨市", + "city": "绍兴市", + "country": "中国", + "lat": "29.714934649194955", + "lng": "120.25340833196779", + "province": "浙江省" + }, + { + "area": "嵊州市", + "city": "绍兴市", + "country": "中国", + "lat": "29.567326991294273", + "lng": "120.83743725739004", + "province": "浙江省" + }, + { + "area": "", + "city": "金华市", + "country": "中国", + "lat": "29.084639385513697", + "lng": "119.65343619052916", + "province": "浙江省" + }, + { + "area": "婺城区", + "city": "金华市", + "country": "中国", + "lat": "29.09177543818595", + "lng": "119.57859260936237", + "province": "浙江省" + }, + { + "area": "金东区", + "city": "金华市", + "country": "中国", + "lat": "29.104765016117913", + "lng": "119.69958241405315", + "province": "浙江省" + }, + { + "area": "武义县", + "city": "金华市", + "country": "中国", + "lat": "28.898243786650067", + "lng": "119.82256555866991", + "province": "浙江省" + }, + { + "area": "浦江县", + "city": "金华市", + "country": "中国", + "lat": "29.458692851854586", + "lng": "119.89843608269538", + "province": "浙江省" + }, + { + "area": "磐安县", + "city": "金华市", + "country": "中国", + "lat": "29.060103175107464", + "lng": "120.45651305177348", + "province": "浙江省" + }, + { + "area": "兰溪市", + "city": "金华市", + "country": "中国", + "lat": "29.214044345079238", + "lng": "119.4665987055372", + "province": "浙江省" + }, + { + "area": "义乌市", + "city": "金华市", + "country": "中国", + "lat": "29.31114987541007", + "lng": "120.08158099305928", + "province": "浙江省" + }, + { + "area": "东阳市", + "city": "金华市", + "country": "中国", + "lat": "29.295861065150863", + "lng": "120.2484219279141", + "province": "浙江省" + }, + { + "area": "永康市", + "city": "金华市", + "country": "中国", + "lat": "28.894203967254516", + "lng": "120.0545507107813", + "province": "浙江省" + }, + { + "area": "", + "city": "衢州市", + "country": "中国", + "lat": "28.975545802265025", + "lng": "118.86659674035565", + "province": "浙江省" + }, + { + "area": "柯城区", + "city": "衢州市", + "country": "中国", + "lat": "28.97420365112754", + "lng": "118.87758391504455", + "province": "浙江省" + }, + { + "area": "衢江区", + "city": "衢州市", + "country": "中国", + "lat": "28.98623790796884", + "lng": "118.96553907360011", + "province": "浙江省" + }, + { + "area": "常山县", + "city": "衢州市", + "country": "中国", + "lat": "28.906997949113464", + "lng": "118.51755663117751", + "province": "浙江省" + }, + { + "area": "开化县", + "city": "衢州市", + "country": "中国", + "lat": "29.143187521186665", + "lng": "118.42145932131277", + "province": "浙江省" + }, + { + "area": "龙游县", + "city": "衢州市", + "country": "中国", + "lat": "29.034486553294915", + "lng": "119.17841825565665", + "province": "浙江省" + }, + { + "area": "江山市", + "city": "衢州市", + "country": "中国", + "lat": "28.74286848011839", + "lng": "118.63358329792732", + "province": "浙江省" + }, + { + "area": "", + "city": "舟山市", + "country": "中国", + "lat": "29.99091168016034", + "lng": "122.21355631852045", + "province": "浙江省" + }, + { + "area": "定海区", + "city": "舟山市", + "country": "中国", + "lat": "30.025462378363247", + "lng": "122.11360080391776", + "province": "浙江省" + }, + { + "area": "普陀区", + "city": "舟山市", + "country": "中国", + "lat": "29.97683569653626", + "lng": "122.33154416585897", + "province": "浙江省" + }, + { + "area": "岱山县", + "city": "舟山市", + "country": "中国", + "lat": "30.269655894034567", + "lng": "122.23260481448817", + "province": "浙江省" + }, + { + "area": "嵊泗县", + "city": "舟山市", + "country": "中国", + "lat": "30.73127394902446", + "lng": "122.45758776505647", + "province": "浙江省" + }, + { + "area": "", + "city": "台州市", + "country": "中国", + "lat": "28.66219405599615", + "lng": "121.42743470427969", + "province": "浙江省" + }, + { + "area": "椒江区", + "city": "台州市", + "country": "中国", + "lat": "28.67925822490251", + "lng": "121.4494079756909", + "province": "浙江省" + }, + { + "area": "黄岩区", + "city": "台州市", + "country": "中国", + "lat": "28.655333607550652", + "lng": "121.2685660511622", + "province": "浙江省" + }, + { + "area": "路桥区", + "city": "台州市", + "country": "中国", + "lat": "28.586946666725996", + "lng": "121.37157806768772", + "province": "浙江省" + }, + { + "area": "三门县", + "city": "台州市", + "country": "中国", + "lat": "29.110355206288737", + "lng": "121.40255379759475", + "province": "浙江省" + }, + { + "area": "天台县", + "city": "台州市", + "country": "中国", + "lat": "29.149514378149117", + "lng": "121.01355337629343", + "province": "浙江省" + }, + { + "area": "仙居县", + "city": "台州市", + "country": "中国", + "lat": "28.85322569325804", + "lng": "120.73543520574904", + "province": "浙江省" + }, + { + "area": "温岭市", + "city": "台州市", + "country": "中国", + "lat": "28.377655489850408", + "lng": "121.39258889457587", + "province": "浙江省" + }, + { + "area": "临海市", + "city": "台州市", + "country": "中国", + "lat": "28.8640493290829", + "lng": "121.15158529413057", + "province": "浙江省" + }, + { + "area": "玉环市", + "city": "台州市", + "country": "中国", + "lat": "28.14186298682908", + "lng": "121.23851297084417", + "province": "浙江省" + }, + { + "area": "", + "city": "丽水市", + "country": "中国", + "lat": "28.473278180563412", + "lng": "119.9295730584414", + "province": "浙江省" + }, + { + "area": "莲都区", + "city": "丽水市", + "country": "中国", + "lat": "28.45174513504599", + "lng": "119.9195191333465", + "province": "浙江省" + }, + { + "area": "青田县", + "city": "丽水市", + "country": "中国", + "lat": "28.145487556330146", + "lng": "120.29657334899679", + "province": "浙江省" + }, + { + "area": "缙云县", + "city": "丽水市", + "country": "中国", + "lat": "28.665214747164", + "lng": "120.0974783056641", + "province": "浙江省" + }, + { + "area": "遂昌县", + "city": "丽水市", + "country": "中国", + "lat": "28.598454676709746", + "lng": "119.28243538621696", + "province": "浙江省" + }, + { + "area": "松阳县", + "city": "丽水市", + "country": "中国", + "lat": "28.45505640427278", + "lng": "119.48854377015539", + "province": "浙江省" + }, + { + "area": "云和县", + "city": "丽水市", + "country": "中国", + "lat": "28.121469507453906", + "lng": "119.57959736407496", + "province": "浙江省" + }, + { + "area": "庆元县", + "city": "丽水市", + "country": "中国", + "lat": "27.625431778353544", + "lng": "119.06948685497508", + "province": "浙江省" + }, + { + "area": "景宁畲族自治县", + "city": "丽水市", + "country": "中国", + "lat": "27.979553966950995", + "lng": "119.64243033108566", + "province": "浙江省" + }, + { + "area": "龙泉市", + "city": "丽水市", + "country": "中国", + "lat": "28.080508725251303", + "lng": "119.14844476520678", + "province": "浙江省" + }, + { + "area": "", + "city": "合肥市", + "country": "中国", + "lat": "31.826577833686887", + "lng": "117.23344266497664", + "province": "安徽省" + }, + { + "area": "瑶海区", + "city": "合肥市", + "country": "中国", + "lat": "31.86378694165692", + "lng": "117.3155870445394", + "province": "安徽省" + }, + { + "area": "庐阳区", + "city": "合肥市", + "country": "中国", + "lat": "31.884886695554332", + "lng": "117.27145913381999", + "province": "安徽省" + }, + { + "area": "蜀山区", + "city": "合肥市", + "country": "中国", + "lat": "31.857378217104248", + "lng": "117.26646078230138", + "province": "安徽省" + }, + { + "area": "包河区", + "city": "合肥市", + "country": "中国", + "lat": "31.799293467782277", + "lng": "117.316576258567", + "province": "安徽省" + }, + { + "area": "长丰县", + "city": "合肥市", + "country": "中国", + "lat": "32.483722623763164", + "lng": "117.17356009256213", + "province": "安徽省" + }, + { + "area": "肥东县", + "city": "合肥市", + "country": "中国", + "lat": "31.89389035448661", + "lng": "117.47540062527533", + "province": "安徽省" + }, + { + "area": "肥西县", + "city": "合肥市", + "country": "中国", + "lat": "31.712962132716886", + "lng": "117.16455781372443", + "province": "安徽省" + }, + { + "area": "庐江县", + "city": "合肥市", + "country": "中国", + "lat": "31.261327637478026", + "lng": "117.29357730191721", + "province": "安徽省" + }, + { + "area": "合肥高新技术产业开发区", + "city": "合肥市", + "country": "中国", + "lat": "31.84058279050316", + "lng": "117.18321378752174", + "province": "安徽省" + }, + { + "area": "合肥经济技术开发区", + "city": "合肥市", + "country": "中国", + "lat": "31.78440651242461", + "lng": "117.21606467539445", + "province": "安徽省" + }, + { + "area": "合肥新站高新技术产业开发区", + "city": "合肥市", + "country": "中国", + "lat": "31.84058279050316", + "lng": "117.18321378752174", + "province": "安徽省" + }, + { + "area": "巢湖市", + "city": "合肥市", + "country": "中国", + "lat": "31.629002428816317", + "lng": "117.89557620044565", + "province": "安徽省" + }, + { + "area": "", + "city": "芜湖市", + "country": "中国", + "lat": "31.358536655799266", + "lng": "118.43943137653523", + "province": "安徽省" + }, + { + "area": "镜湖区", + "city": "芜湖市", + "country": "中国", + "lat": "31.345866595568836", + "lng": "118.39260630352213", + "province": "安徽省" + }, + { + "area": "弋江区", + "city": "芜湖市", + "country": "中国", + "lat": "31.317566272497334", + "lng": "118.37957970583027", + "province": "安徽省" + }, + { + "area": "鸠江区", + "city": "芜湖市", + "country": "中国", + "lat": "31.37580451951749", + "lng": "118.39758848554156", + "province": "安徽省" + }, + { + "area": "三山区", + "city": "芜湖市", + "country": "中国", + "lat": "31.22528012426887", + "lng": "118.27460210698433", + "province": "安徽省" + }, + { + "area": "芜湖县", + "city": "芜湖市", + "country": "中国", + "lat": "31.141239223464176", + "lng": "118.58244251202923", + "province": "安徽省" + }, + { + "area": "繁昌县", + "city": "芜湖市", + "country": "中国", + "lat": "31.107958593586286", + "lng": "118.20542431830533", + "province": "安徽省" + }, + { + "area": "南陵县", + "city": "芜湖市", + "country": "中国", + "lat": "30.920260298683342", + "lng": "118.34041816695333", + "province": "安徽省" + }, + { + "area": "无为县", + "city": "芜湖市", + "country": "中国", + "lat": "31.308844155979028", + "lng": "117.90857854388872", + "province": "安徽省" + }, + { + "area": "芜湖经济技术开发区", + "city": "芜湖市", + "country": "中国", + "lat": "31.417327574448507", + "lng": "118.45417889043152", + "province": "安徽省" + }, + { + "area": "安徽芜湖长江大桥经济开发区", + "city": "芜湖市", + "country": "中国", + "lat": "31.391647770998055", + "lng": "118.3794612193335", + "province": "安徽省" + }, + { + "area": "", + "city": "蚌埠市", + "country": "中国", + "lat": "32.921523704350825", + "lng": "117.39551332813694", + "province": "安徽省" + }, + { + "area": "龙子湖区", + "city": "蚌埠市", + "country": "中国", + "lat": "32.94864426292913", + "lng": "117.39951276392846", + "province": "安徽省" + }, + { + "area": "蚌山区", + "city": "蚌埠市", + "country": "中国", + "lat": "32.92337877039503", + "lng": "117.37944120527462", + "province": "安徽省" + }, + { + "area": "禹会区", + "city": "蚌埠市", + "country": "中国", + "lat": "32.935309988858336", + "lng": "117.3484523600969", + "province": "安徽省" + }, + { + "area": "淮上区", + "city": "蚌埠市", + "country": "中国", + "lat": "32.97054701188452", + "lng": "117.36638271773715", + "province": "安徽省" + }, + { + "area": "怀远县", + "city": "蚌埠市", + "country": "中国", + "lat": "32.97600372662439", + "lng": "117.21150631391461", + "province": "安徽省" + }, + { + "area": "五河县", + "city": "蚌埠市", + "country": "中国", + "lat": "33.13270946286574", + "lng": "117.88756088987175", + "province": "安徽省" + }, + { + "area": "固镇县", + "city": "蚌埠市", + "country": "中国", + "lat": "33.323274297744135", + "lng": "117.32354764830771", + "province": "安徽省" + }, + { + "area": "蚌埠市高新技术开发区", + "city": "蚌埠市", + "country": "中国", + "lat": "32.8387356376155", + "lng": "117.25428507126655", + "province": "安徽省" + }, + { + "area": "蚌埠市经济开发区", + "city": "蚌埠市", + "country": "中国", + "lat": "32.986437718091274", + "lng": "117.25979226075486", + "province": "安徽省" + }, + { + "area": "", + "city": "淮南市", + "country": "中国", + "lat": "32.63184739905333", + "lng": "117.00638885071616", + "province": "安徽省" + }, + { + "area": "大通区", + "city": "淮南市", + "country": "中国", + "lat": "32.637269959538344", + "lng": "117.05958317928668", + "province": "安徽省" + }, + { + "area": "田家庵区", + "city": "淮南市", + "country": "中国", + "lat": "32.653323007095956", + "lng": "117.02344533675632", + "province": "安徽省" + }, + { + "area": "谢家集区", + "city": "淮南市", + "country": "中国", + "lat": "32.60625458819586", + "lng": "116.8654388772148", + "province": "安徽省" + }, + { + "area": "八公山区", + "city": "淮南市", + "country": "中国", + "lat": "32.637137318436714", + "lng": "116.84056434849077", + "province": "安徽省" + }, + { + "area": "潘集区", + "city": "淮南市", + "country": "中国", + "lat": "32.77795549110771", + "lng": "116.84158096083641", + "province": "安徽省" + }, + { + "area": "凤台县", + "city": "淮南市", + "country": "中国", + "lat": "32.715103905085066", + "lng": "116.71757320891433", + "province": "安徽省" + }, + { + "area": "寿县", + "city": "淮南市", + "country": "中国", + "lat": "32.56154615120071", + "lng": "116.80556277259998", + "province": "安徽省" + }, + { + "area": "", + "city": "马鞍山市", + "country": "中国", + "lat": "31.676265597609103", + "lng": "118.5135795794315", + "province": "安徽省" + }, + { + "area": "花山区", + "city": "马鞍山市", + "country": "中国", + "lat": "31.725472572000722", + "lng": "118.49960562874881", + "province": "安徽省" + }, + { + "area": "雨山区", + "city": "马鞍山市", + "country": "中国", + "lat": "31.687745482903562", + "lng": "118.50559705700871", + "province": "安徽省" + }, + { + "area": "博望区", + "city": "马鞍山市", + "country": "中国", + "lat": "31.55751002841838", + "lng": "118.8247752453867", + "province": "安徽省" + }, + { + "area": "当涂县", + "city": "马鞍山市", + "country": "中国", + "lat": "31.576649154711316", + "lng": "118.50460469891183", + "province": "安徽省" + }, + { + "area": "含山县", + "city": "马鞍山市", + "country": "中国", + "lat": "31.74086220873552", + "lng": "118.10746203633957", + "province": "安徽省" + }, + { + "area": "和县", + "city": "马鞍山市", + "country": "中国", + "lat": "31.748243815854266", + "lng": "118.35951254887343", + "province": "安徽省" + }, + { + "area": "", + "city": "淮北市", + "country": "中国", + "lat": "33.96165630027632", + "lng": "116.8045372670298", + "province": "安徽省" + }, + { + "area": "杜集区", + "city": "淮北市", + "country": "中国", + "lat": "33.99728543639093", + "lng": "116.83461226601221", + "province": "安徽省" + }, + { + "area": "相山区", + "city": "淮北市", + "country": "中国", + "lat": "33.96582716177039", + "lng": "116.80052112275578", + "province": "安徽省" + }, + { + "area": "烈山区", + "city": "淮北市", + "country": "中国", + "lat": "33.90157406183185", + "lng": "116.81959906568504", + "province": "安徽省" + }, + { + "area": "濉溪县", + "city": "淮北市", + "country": "中国", + "lat": "33.92162919482287", + "lng": "116.7723894280831", + "province": "安徽省" + }, + { + "area": "", + "city": "铜陵市", + "country": "中国", + "lat": "30.95123323991339", + "lng": "117.81847679445747", + "province": "安徽省" + }, + { + "area": "铜官区", + "city": "铜陵市", + "country": "中国", + "lat": "30.94038634063321", + "lng": "117.82145710264791", + "province": "安徽省" + }, + { + "area": "义安区", + "city": "铜陵市", + "country": "中国", + "lat": "30.9585120990978", + "lng": "117.79856800876202", + "province": "安徽省" + }, + { + "area": "郊区", + "city": "铜陵市", + "country": "中国", + "lat": "30.897741483657814", + "lng": "117.80755007572573", + "province": "安徽省" + }, + { + "area": "枞阳县", + "city": "铜陵市", + "country": "中国", + "lat": "30.705671267724508", + "lng": "117.22643695996541", + "province": "安徽省" + }, + { + "area": "", + "city": "安庆市", + "country": "中国", + "lat": "30.53095656804304", + "lng": "117.06360390491879", + "province": "安徽省" + }, + { + "area": "迎江区", + "city": "安庆市", + "country": "中国", + "lat": "30.517523291407603", + "lng": "117.0975144887677", + "province": "安徽省" + }, + { + "area": "大观区", + "city": "安庆市", + "country": "中国", + "lat": "30.518231924650795", + "lng": "117.04053820416964", + "province": "安徽省" + }, + { + "area": "宜秀区", + "city": "安庆市", + "country": "中国", + "lat": "30.619675877795817", + "lng": "116.9934411242481", + "province": "安徽省" + }, + { + "area": "怀宁县", + "city": "安庆市", + "country": "中国", + "lat": "30.739399674606553", + "lng": "116.83659258050895", + "province": "安徽省" + }, + { + "area": "太湖县", + "city": "安庆市", + "country": "中国", + "lat": "30.460113290447975", + "lng": "116.31547630162399", + "province": "安徽省" + }, + { + "area": "宿松县", + "city": "安庆市", + "country": "中国", + "lat": "30.159786861375334", + "lng": "116.1355236994904", + "province": "安徽省" + }, + { + "area": "望江县", + "city": "安庆市", + "country": "中国", + "lat": "30.129968329228802", + "lng": "116.70059029409546", + "province": "安徽省" + }, + { + "area": "岳西县", + "city": "安庆市", + "country": "中国", + "lat": "30.855227714002314", + "lng": "116.36655539021015", + "province": "安徽省" + }, + { + "area": "安徽安庆经济开发区", + "city": "安庆市", + "country": "中国", + "lat": "30.463327179630024", + "lng": "116.3452374658985", + "province": "安徽省" + }, + { + "area": "桐城市", + "city": "安庆市", + "country": "中国", + "lat": "31.0419690376743", + "lng": "116.98046635878418", + "province": "安徽省" + }, + { + "area": "潜山市", + "city": "安庆市", + "country": "中国", + "lat": "30.636755682399183", + "lng": "116.58761103891939", + "province": "安徽省" + }, + { + "area": "", + "city": "黄山市", + "country": "中国", + "lat": "29.721889786591692", + "lng": "118.34543725314781", + "province": "安徽省" + }, + { + "area": "屯溪区", + "city": "黄山市", + "country": "中国", + "lat": "29.7021439085461", + "lng": "118.32141818076884", + "province": "安徽省" + }, + { + "area": "黄山区", + "city": "黄山市", + "country": "中国", + "lat": "30.27865098018807", + "lng": "118.14760982483591", + "province": "安徽省" + }, + { + "area": "徽州区", + "city": "黄山市", + "country": "中国", + "lat": "29.834221385317097", + "lng": "118.34343582847224", + "province": "安徽省" + }, + { + "area": "歙县", + "city": "黄山市", + "country": "中国", + "lat": "29.866287675757313", + "lng": "118.42146012978772", + "province": "安徽省" + }, + { + "area": "休宁县", + "city": "黄山市", + "country": "中国", + "lat": "29.795459004962712", + "lng": "118.20543014115599", + "province": "安徽省" + }, + { + "area": "黟县", + "city": "黄山市", + "country": "中国", + "lat": "29.93104733070446", + "lng": "117.94447724144334", + "province": "安徽省" + }, + { + "area": "祁门县", + "city": "黄山市", + "country": "中国", + "lat": "29.860343948080427", + "lng": "117.72339257753917", + "province": "安徽省" + }, + { + "area": "", + "city": "滁州市", + "country": "中国", + "lat": "32.26127087204081", + "lng": "118.33940613596579", + "province": "安徽省" + }, + { + "area": "琅琊区", + "city": "滁州市", + "country": "中国", + "lat": "32.30086749259927", + "lng": "118.31244134015057", + "province": "安徽省" + }, + { + "area": "南谯区", + "city": "滁州市", + "country": "中国", + "lat": "32.20613189926425", + "lng": "118.42348205203612", + "province": "安徽省" + }, + { + "area": "来安县", + "city": "滁州市", + "country": "中国", + "lat": "32.458449762426696", + "lng": "118.44241249320064", + "province": "安徽省" + }, + { + "area": "全椒县", + "city": "滁州市", + "country": "中国", + "lat": "32.091939797603374", + "lng": "118.28058428269748", + "province": "安徽省" + }, + { + "area": "定远县", + "city": "滁州市", + "country": "中国", + "lat": "32.53704661348729", + "lng": "117.70447068625293", + "province": "安徽省" + }, + { + "area": "凤阳县", + "city": "滁州市", + "country": "中国", + "lat": "32.88097672525767", + "lng": "117.5385853687445", + "province": "安徽省" + }, + { + "area": "苏滁现代产业园", + "city": "滁州市", + "country": "中国", + "lat": "32.31404494042826", + "lng": "118.42323968920952", + "province": "安徽省" + }, + { + "area": "滁州经济技术开发区", + "city": "滁州市", + "country": "中国", + "lat": "32.26127087204081", + "lng": "118.33940613596579", + "province": "安徽省" + }, + { + "area": "天长市", + "city": "滁州市", + "country": "中国", + "lat": "32.67341003277047", + "lng": "119.01138527948528", + "province": "安徽省" + }, + { + "area": "明光市", + "city": "滁州市", + "country": "中国", + "lat": "32.78302282341776", + "lng": "117.99550981385306", + "province": "安徽省" + }, + { + "area": "", + "city": "阜阳市", + "country": "中国", + "lat": "32.89606099485221", + "lng": "115.82043612491321", + "province": "安徽省" + }, + { + "area": "颍州区", + "city": "阜阳市", + "country": "中国", + "lat": "32.88962541654979", + "lng": "115.81341119616408", + "province": "安徽省" + }, + { + "area": "颍东区", + "city": "阜阳市", + "country": "中国", + "lat": "32.9173622401719", + "lng": "115.86361668264179", + "province": "安徽省" + }, + { + "area": "颍泉区", + "city": "阜阳市", + "country": "中国", + "lat": "32.931313576024976", + "lng": "115.81542555643966", + "province": "安徽省" + }, + { + "area": "临泉县", + "city": "阜阳市", + "country": "中国", + "lat": "33.04595952836284", + "lng": "115.26761550051185", + "province": "安徽省" + }, + { + "area": "太和县", + "city": "阜阳市", + "country": "中国", + "lat": "33.16595985009563", + "lng": "115.62861546970402", + "province": "安徽省" + }, + { + "area": "阜南县", + "city": "阜阳市", + "country": "中国", + "lat": "32.66409738512507", + "lng": "115.60254592516004", + "province": "安徽省" + }, + { + "area": "颍上县", + "city": "阜阳市", + "country": "中国", + "lat": "32.659028468804394", + "lng": "116.26347689904284", + "province": "安徽省" + }, + { + "area": "阜阳合肥现代产业园区", + "city": "阜阳市", + "country": "中国", + "lat": "32.815750041269325", + "lng": "115.91484048824562", + "province": "安徽省" + }, + { + "area": "阜阳经济技术开发区", + "city": "阜阳市", + "country": "中国", + "lat": "32.87001859269829", + "lng": "115.86332311640113", + "province": "安徽省" + }, + { + "area": "界首市", + "city": "阜阳市", + "country": "中国", + "lat": "33.26277523623148", + "lng": "115.38060984722048", + "province": "安徽省" + }, + { + "area": "", + "city": "宿州市", + "country": "中国", + "lat": "33.65209532645213", + "lng": "116.97054394561262", + "province": "安徽省" + }, + { + "area": "埇桥区", + "city": "宿州市", + "country": "中国", + "lat": "33.646130650445464", + "lng": "116.98348044326181", + "province": "安徽省" + }, + { + "area": "砀山县", + "city": "宿州市", + "country": "中国", + "lat": "34.44842817139671", + "lng": "116.3725240015101", + "province": "安徽省" + }, + { + "area": "萧县", + "city": "宿州市", + "country": "中国", + "lat": "34.19426934431854", + "lng": "116.95358492572029", + "province": "安徽省" + }, + { + "area": "灵璧县", + "city": "宿州市", + "country": "中国", + "lat": "33.547892231948374", + "lng": "117.56455699798788", + "province": "安徽省" + }, + { + "area": "泗县", + "city": "宿州市", + "country": "中国", + "lat": "33.48869463013435", + "lng": "117.9165899917489", + "province": "安徽省" + }, + { + "area": "宿州马鞍山现代产业园区", + "city": "宿州市", + "country": "中国", + "lat": "33.68687633459383", + "lng": "117.28195125234599", + "province": "安徽省" + }, + { + "area": "宿州经济技术开发区", + "city": "宿州市", + "country": "中国", + "lat": "33.65209532645213", + "lng": "116.97054394561262", + "province": "安徽省" + }, + { + "area": "", + "city": "六安市", + "country": "中国", + "lat": "31.741450815322555", + "lng": "116.52640966418569", + "province": "安徽省" + }, + { + "area": "金安区", + "city": "六安市", + "country": "中国", + "lat": "31.756287719901362", + "lng": "116.54543837997299", + "province": "安徽省" + }, + { + "area": "裕安区", + "city": "六安市", + "country": "中国", + "lat": "31.743625870830318", + "lng": "116.4865497826053", + "province": "安徽省" + }, + { + "area": "叶集区", + "city": "六安市", + "country": "中国", + "lat": "31.835263142250263", + "lng": "115.94747592742311", + "province": "安徽省" + }, + { + "area": "霍邱县", + "city": "六安市", + "country": "中国", + "lat": "32.3593435909225", + "lng": "116.28439133775672", + "province": "安徽省" + }, + { + "area": "舒城县", + "city": "六安市", + "country": "中国", + "lat": "31.467692010555787", + "lng": "116.95560171142074", + "province": "安徽省" + }, + { + "area": "金寨县", + "city": "六安市", + "country": "中国", + "lat": "31.73346173438129", + "lng": "115.94044120714393", + "province": "安徽省" + }, + { + "area": "霍山县", + "city": "六安市", + "country": "中国", + "lat": "31.398570812489456", + "lng": "116.33957586218457", + "province": "安徽省" + }, + { + "area": "", + "city": "亳州市", + "country": "中国", + "lat": "33.850642695788835", + "lng": "115.7844632112745", + "province": "安徽省" + }, + { + "area": "谯城区", + "city": "亳州市", + "country": "中国", + "lat": "33.882663087443404", + "lng": "115.78547191853164", + "province": "安徽省" + }, + { + "area": "涡阳县", + "city": "亳州市", + "country": "中国", + "lat": "33.4985668350044", + "lng": "116.22160903515599", + "province": "安徽省" + }, + { + "area": "蒙城县", + "city": "亳州市", + "country": "中国", + "lat": "33.27165823967443", + "lng": "116.57158940082672", + "province": "安徽省" + }, + { + "area": "利辛县", + "city": "亳州市", + "country": "中国", + "lat": "33.15559584152897", + "lng": "116.1914935225951", + "province": "安徽省" + }, + { + "area": "", + "city": "池州市", + "country": "中国", + "lat": "30.670883790764535", + "lng": "117.49842096159624", + "province": "安徽省" + }, + { + "area": "贵池区", + "city": "池州市", + "country": "中国", + "lat": "30.693857943819243", + "lng": "117.57449037048667", + "province": "安徽省" + }, + { + "area": "东至县", + "city": "池州市", + "country": "中国", + "lat": "30.116534528265298", + "lng": "117.03448128943805", + "province": "安徽省" + }, + { + "area": "石台县", + "city": "池州市", + "country": "中国", + "lat": "30.216530337189035", + "lng": "117.49239440959089", + "province": "安徽省" + }, + { + "area": "青阳县", + "city": "池州市", + "country": "中国", + "lat": "30.645634346235052", + "lng": "117.85343129913953", + "province": "安徽省" + }, + { + "area": "", + "city": "宣城市", + "country": "中国", + "lat": "30.94660154529291", + "lng": "118.76553424276743", + "province": "安徽省" + }, + { + "area": "宣州区", + "city": "宣城市", + "country": "中国", + "lat": "30.952158157984414", + "lng": "118.76254944304942", + "province": "安徽省" + }, + { + "area": "郎溪县", + "city": "宣城市", + "country": "中国", + "lat": "31.13268187044305", + "lng": "119.18646592168548", + "province": "安徽省" + }, + { + "area": "泾县", + "city": "宣城市", + "country": "中国", + "lat": "30.694672488541514", + "lng": "118.42643469241686", + "province": "安徽省" + }, + { + "area": "绩溪县", + "city": "宣城市", + "country": "中国", + "lat": "30.073292199532997", + "lng": "118.58544384056862", + "province": "安徽省" + }, + { + "area": "旌德县", + "city": "宣城市", + "country": "中国", + "lat": "30.292481093722333", + "lng": "118.54646735262673", + "province": "安徽省" + }, + { + "area": "宣城市经济开发区", + "city": "宣城市", + "country": "中国", + "lat": "30.94660154529291", + "lng": "118.76553424276743", + "province": "安徽省" + }, + { + "area": "宁国市", + "city": "宣城市", + "country": "中国", + "lat": "30.639352229689443", + "lng": "118.98960981494011", + "province": "安徽省" + }, + { + "area": "广德市", + "city": "宣城市", + "country": "中国", + "lat": "30.883667102643013", + "lng": "119.42747581034895", + "province": "安徽省" + }, + { + "area": "", + "city": "福州市", + "country": "中国", + "lat": "26.080429420698078", + "lng": "119.30346983854001", + "province": "福建省" + }, + { + "area": "鼓楼区", + "city": "福州市", + "country": "中国", + "lat": "26.08811403755549", + "lng": "119.31049162321753", + "province": "福建省" + }, + { + "area": "台江区", + "city": "福州市", + "country": "中国", + "lat": "26.05852815064472", + "lng": "119.32052821101611", + "province": "福建省" + }, + { + "area": "仓山区", + "city": "福州市", + "country": "中国", + "lat": "26.05284169192682", + "lng": "119.28043216493037", + "province": "福建省" + }, + { + "area": "马尾区", + "city": "福州市", + "country": "中国", + "lat": "26.004533771062754", + "lng": "119.44551915827756", + "province": "福建省" + }, + { + "area": "晋安区", + "city": "福州市", + "country": "中国", + "lat": "26.08721390443357", + "lng": "119.334579415968", + "province": "福建省" + }, + { + "area": "长乐区", + "city": "福州市", + "country": "中国", + "lat": "25.96925744807659", + "lng": "119.52943832000868", + "province": "福建省" + }, + { + "area": "闽侯县", + "city": "福州市", + "country": "中国", + "lat": "26.156035214577336", + "lng": "119.13848201812112", + "province": "福建省" + }, + { + "area": "连江县", + "city": "福州市", + "country": "中国", + "lat": "26.203583291029112", + "lng": "119.54647881620511", + "province": "福建省" + }, + { + "area": "罗源县", + "city": "福州市", + "country": "中国", + "lat": "26.495495660323886", + "lng": "119.55648045991936", + "province": "福建省" + }, + { + "area": "闽清县", + "city": "福州市", + "country": "中国", + "lat": "26.226847540201835", + "lng": "118.86957650956182", + "province": "福建省" + }, + { + "area": "永泰县", + "city": "福州市", + "country": "中国", + "lat": "25.872787263195903", + "lng": "118.93843072857337", + "province": "福建省" + }, + { + "area": "平潭县", + "city": "福州市", + "country": "中国", + "lat": "25.504700273944916", + "lng": "119.79650131413707", + "province": "福建省" + }, + { + "area": "福清市", + "city": "福州市", + "country": "中国", + "lat": "25.72634329903456", + "lng": "119.39046524748903", + "province": "福建省" + }, + { + "area": "", + "city": "厦门市", + "country": "中国", + "lat": "24.485406605176305", + "lng": "118.09643549976651", + "province": "福建省" + }, + { + "area": "思明区", + "city": "厦门市", + "country": "中国", + "lat": "24.45194839567105", + "lng": "118.08840797224036", + "province": "福建省" + }, + { + "area": "海沧区", + "city": "厦门市", + "country": "中国", + "lat": "24.49032581859842", + "lng": "118.03956171184593", + "province": "福建省" + }, + { + "area": "湖里区", + "city": "厦门市", + "country": "中国", + "lat": "24.517573138111896", + "lng": "118.15358812171732", + "province": "福建省" + }, + { + "area": "集美区", + "city": "厦门市", + "country": "中国", + "lat": "24.582019062249607", + "lng": "118.10343491663684", + "province": "福建省" + }, + { + "area": "同安区", + "city": "厦门市", + "country": "中国", + "lat": "24.729113975346568", + "lng": "118.15856347661324", + "province": "福建省" + }, + { + "area": "翔安区", + "city": "厦门市", + "country": "中国", + "lat": "24.624216383592774", + "lng": "118.25457589660734", + "province": "福建省" + }, + { + "area": "", + "city": "莆田市", + "country": "中国", + "lat": "25.45986545592271", + "lng": "119.0145209781265", + "province": "福建省" + }, + { + "area": "城厢区", + "city": "莆田市", + "country": "中国", + "lat": "25.424343792481636", + "lng": "119.00153633130627", + "province": "福建省" + }, + { + "area": "涵江区", + "city": "莆田市", + "country": "中国", + "lat": "25.464464388124497", + "lng": "119.12256736821995", + "province": "福建省" + }, + { + "area": "荔城区", + "city": "莆田市", + "country": "中国", + "lat": "25.43975447880629", + "lng": "119.01948169064262", + "province": "福建省" + }, + { + "area": "秀屿区", + "city": "莆田市", + "country": "中国", + "lat": "25.32365439756104", + "lng": "119.1115713003065", + "province": "福建省" + }, + { + "area": "仙游县", + "city": "莆田市", + "country": "中国", + "lat": "25.36829149810406", + "lng": "118.69845425064784", + "province": "福建省" + }, + { + "area": "", + "city": "三明市", + "country": "中国", + "lat": "26.269736515991838", + "lng": "117.64552116782143", + "province": "福建省" + }, + { + "area": "梅列区", + "city": "三明市", + "country": "中国", + "lat": "26.277335878354766", + "lng": "117.65255022877358", + "province": "福建省" + }, + { + "area": "三元区", + "city": "三明市", + "country": "中国", + "lat": "26.24021937457406", + "lng": "117.61441509378494", + "province": "福建省" + }, + { + "area": "明溪县", + "city": "三明市", + "country": "中国", + "lat": "26.361853685276866", + "lng": "117.20851763567705", + "province": "福建省" + }, + { + "area": "清流县", + "city": "三明市", + "country": "中国", + "lat": "26.183357353210287", + "lng": "116.82359318579535", + "province": "福建省" + }, + { + "area": "宁化县", + "city": "三明市", + "country": "中国", + "lat": "26.267956490540477", + "lng": "116.66042551200016", + "province": "福建省" + }, + { + "area": "大田县", + "city": "三明市", + "country": "中国", + "lat": "25.698932641878844", + "lng": "117.85343999668406", + "province": "福建省" + }, + { + "area": "尤溪县", + "city": "三明市", + "country": "中国", + "lat": "26.176218039460192", + "lng": "118.19743971364737", + "province": "福建省" + }, + { + "area": "沙县", + "city": "三明市", + "country": "中国", + "lat": "26.40281344434632", + "lng": "117.79856107580882", + "province": "福建省" + }, + { + "area": "将乐县", + "city": "三明市", + "country": "中国", + "lat": "26.735209519833294", + "lng": "117.47740904083985", + "province": "福建省" + }, + { + "area": "泰宁县", + "city": "三明市", + "country": "中国", + "lat": "26.90566003228466", + "lng": "117.18259586239803", + "province": "福建省" + }, + { + "area": "建宁县", + "city": "三明市", + "country": "中国", + "lat": "26.83682465534918", + "lng": "116.85250622659105", + "province": "福建省" + }, + { + "area": "永安市", + "city": "三明市", + "country": "中国", + "lat": "25.948143989823954", + "lng": "117.37144258732353", + "province": "福建省" + }, + { + "area": "", + "city": "泉州市", + "country": "中国", + "lat": "24.879952330498313", + "lng": "118.68244626680422", + "province": "福建省" + }, + { + "area": "鲤城区", + "city": "泉州市", + "country": "中国", + "lat": "24.913354167053917", + "lng": "118.59348105353358", + "province": "福建省" + }, + { + "area": "丰泽区", + "city": "泉州市", + "country": "中国", + "lat": "24.894969993261856", + "lng": "118.6195801523202", + "province": "福建省" + }, + { + "area": "洛江区", + "city": "泉州市", + "country": "中国", + "lat": "24.946213653759614", + "lng": "118.67741629493332", + "province": "福建省" + }, + { + "area": "泉港区", + "city": "泉州市", + "country": "中国", + "lat": "25.139650393953733", + "lng": "118.92243298541256", + "province": "福建省" + }, + { + "area": "惠安县", + "city": "泉州市", + "country": "中国", + "lat": "25.03694981503913", + "lng": "118.80341550029883", + "province": "福建省" + }, + { + "area": "安溪县", + "city": "泉州市", + "country": "中国", + "lat": "25.06175955338205", + "lng": "118.19242537229232", + "province": "福建省" + }, + { + "area": "永春县", + "city": "泉州市", + "country": "中国", + "lat": "25.327974202083116", + "lng": "118.30048613527391", + "province": "福建省" + }, + { + "area": "德化县", + "city": "泉州市", + "country": "中国", + "lat": "25.49730859417917", + "lng": "118.247550069555", + "province": "福建省" + }, + { + "area": "金门县", + "city": "泉州市", + "country": "中国", + "lat": "24.440444541055168", + "lng": "118.33041515960107", + "province": "福建省" + }, + { + "area": "石狮市", + "city": "泉州市", + "country": "中国", + "lat": "24.737665160882703", + "lng": "118.65451902647484", + "province": "福建省" + }, + { + "area": "晋江市", + "city": "泉州市", + "country": "中国", + "lat": "24.787824575144548", + "lng": "118.55843052000408", + "province": "福建省" + }, + { + "area": "南安市", + "city": "泉州市", + "country": "中国", + "lat": "24.966362350467605", + "lng": "118.39257197205464", + "province": "福建省" + }, + { + "area": "", + "city": "漳州市", + "country": "中国", + "lat": "24.51892979117087", + "lng": "117.65357645298785", + "province": "福建省" + }, + { + "area": "芗城区", + "city": "漳州市", + "country": "中国", + "lat": "24.516268416111405", + "lng": "117.66058952410192", + "province": "福建省" + }, + { + "area": "龙文区", + "city": "漳州市", + "country": "中国", + "lat": "24.50950968094453", + "lng": "117.71645469459625", + "province": "福建省" + }, + { + "area": "云霄县", + "city": "漳州市", + "country": "中国", + "lat": "23.964072828247573", + "lng": "117.34644831448325", + "province": "福建省" + }, + { + "area": "漳浦县", + "city": "漳州市", + "country": "中国", + "lat": "24.123461614811962", + "lng": "117.62044335256876", + "province": "福建省" + }, + { + "area": "诏安县", + "city": "漳州市", + "country": "中国", + "lat": "23.717053963784434", + "lng": "117.18255858271938", + "province": "福建省" + }, + { + "area": "长泰县", + "city": "漳州市", + "country": "中国", + "lat": "24.631243628383107", + "lng": "117.76555257036392", + "province": "福建省" + }, + { + "area": "东山县", + "city": "漳州市", + "country": "中国", + "lat": "23.706894688691293", + "lng": "117.43656030456756", + "province": "福建省" + }, + { + "area": "南靖县", + "city": "漳州市", + "country": "中国", + "lat": "24.520851732069875", + "lng": "117.36344641065965", + "province": "福建省" + }, + { + "area": "平和县", + "city": "漳州市", + "country": "中国", + "lat": "24.368365040125912", + "lng": "117.32255159131472", + "province": "福建省" + }, + { + "area": "华安县", + "city": "漳州市", + "country": "中国", + "lat": "25.010067731399424", + "lng": "117.54058560970802", + "province": "福建省" + }, + { + "area": "龙海市", + "city": "漳州市", + "country": "中国", + "lat": "24.452939738546615", + "lng": "117.82445086941169", + "province": "福建省" + }, + { + "area": "", + "city": "南平市", + "country": "中国", + "lat": "26.647772874203266", + "lng": "118.1843695481426", + "province": "福建省" + }, + { + "area": "延平区", + "city": "南平市", + "country": "中国", + "lat": "26.643807791057217", + "lng": "118.18845055007307", + "province": "福建省" + }, + { + "area": "建阳区", + "city": "南平市", + "country": "中国", + "lat": "27.337502466187814", + "lng": "118.12752522464272", + "province": "福建省" + }, + { + "area": "顺昌县", + "city": "南平市", + "country": "中国", + "lat": "26.799104367214422", + "lng": "117.81651928091397", + "province": "福建省" + }, + { + "area": "浦城县", + "city": "南平市", + "country": "中国", + "lat": "27.923390046145474", + "lng": "118.54743912327928", + "province": "福建省" + }, + { + "area": "光泽县", + "city": "南平市", + "country": "中国", + "lat": "27.547272859205247", + "lng": "117.34048158962685", + "province": "福建省" + }, + { + "area": "松溪县", + "city": "南平市", + "country": "中国", + "lat": "27.532554907166524", + "lng": "118.79145438277632", + "province": "福建省" + }, + { + "area": "政和县", + "city": "南平市", + "country": "中国", + "lat": "27.37174919823424", + "lng": "118.86358723723711", + "province": "福建省" + }, + { + "area": "邵武市", + "city": "南平市", + "country": "中国", + "lat": "27.346469966260766", + "lng": "117.49941950209916", + "province": "福建省" + }, + { + "area": "武夷山市", + "city": "南平市", + "country": "中国", + "lat": "27.762553910259268", + "lng": "118.04157715008745", + "province": "福建省" + }, + { + "area": "建瓯市", + "city": "南平市", + "country": "中国", + "lat": "27.028955089428838", + "lng": "118.31146073368568", + "province": "福建省" + }, + { + "area": "", + "city": "龙岩市", + "country": "中国", + "lat": "25.081219844871676", + "lng": "117.02344756677536", + "province": "福建省" + }, + { + "area": "新罗区", + "city": "龙岩市", + "country": "中国", + "lat": "25.10407762963451", + "lng": "117.04354293051858", + "province": "福建省" + }, + { + "area": "永定区", + "city": "龙岩市", + "country": "中国", + "lat": "24.73010753217897", + "lng": "116.73850038791583", + "province": "福建省" + }, + { + "area": "长汀县", + "city": "龙岩市", + "country": "中国", + "lat": "25.83918461828047", + "lng": "116.36356796987941", + "province": "福建省" + }, + { + "area": "上杭县", + "city": "龙岩市", + "country": "中国", + "lat": "25.055570401525458", + "lng": "116.42644288775742", + "province": "福建省" + }, + { + "area": "武平县", + "city": "龙岩市", + "country": "中国", + "lat": "25.100855173343017", + "lng": "116.10758916743498", + "province": "福建省" + }, + { + "area": "连城县", + "city": "龙岩市", + "country": "中国", + "lat": "25.71633738185191", + "lng": "116.76044617117844", + "province": "福建省" + }, + { + "area": "漳平市", + "city": "龙岩市", + "country": "中国", + "lat": "25.295743499251625", + "lng": "117.426556325259", + "province": "福建省" + }, + { + "area": "", + "city": "宁德市", + "country": "中国", + "lat": "26.672241711408567", + "lng": "119.55451074542829", + "province": "福建省" + }, + { + "area": "蕉城区", + "city": "宁德市", + "country": "中国", + "lat": "26.666738555955426", + "lng": "119.53344242698753", + "province": "福建省" + }, + { + "area": "霞浦县", + "city": "宁德市", + "country": "中国", + "lat": "26.891348873766713", + "lng": "120.01142710563632", + "province": "福建省" + }, + { + "area": "古田县", + "city": "宁德市", + "country": "中国", + "lat": "26.583261752072914", + "lng": "118.75257823557276", + "province": "福建省" + }, + { + "area": "屏南县", + "city": "宁德市", + "country": "中国", + "lat": "26.914264918059377", + "lng": "118.99259621521281", + "province": "福建省" + }, + { + "area": "寿宁县", + "city": "宁德市", + "country": "中国", + "lat": "27.46664965996927", + "lng": "119.51142504877579", + "province": "福建省" + }, + { + "area": "周宁县", + "city": "宁德市", + "country": "中国", + "lat": "27.11023928044784", + "lng": "119.3455671296402", + "province": "福建省" + }, + { + "area": "柘荣县", + "city": "宁德市", + "country": "中国", + "lat": "27.239961876352396", + "lng": "119.9074566869625", + "province": "福建省" + }, + { + "area": "福安市", + "city": "宁德市", + "country": "中国", + "lat": "27.094323508059915", + "lng": "119.65440636047963", + "province": "福建省" + }, + { + "area": "福鼎市", + "city": "宁德市", + "country": "中国", + "lat": "27.33052497252825", + "lng": "120.22345190932259", + "province": "福建省" + }, + { + "area": "", + "city": "南昌市", + "country": "中国", + "lat": "28.68945529506072", + "lng": "115.86458944231661", + "province": "江西省" + }, + { + "area": "东湖区", + "city": "南昌市", + "country": "中国", + "lat": "28.691259179775223", + "lng": "115.9054660260597", + "province": "江西省" + }, + { + "area": "西湖区", + "city": "南昌市", + "country": "中国", + "lat": "28.661976709900657", + "lng": "115.88353569365187", + "province": "江西省" + }, + { + "area": "青云谱区", + "city": "南昌市", + "country": "中国", + "lat": "28.62723573648408", + "lng": "115.93141618579283", + "province": "江西省" + }, + { + "area": "湾里区", + "city": "南昌市", + "country": "中国", + "lat": "28.720195384308376", + "lng": "115.73759563309079", + "province": "江西省" + }, + { + "area": "青山湖区", + "city": "南昌市", + "country": "中国", + "lat": "28.68759600617345", + "lng": "115.96855240505471", + "province": "江西省" + }, + { + "area": "新建区", + "city": "南昌市", + "country": "中国", + "lat": "28.698748625155122", + "lng": "115.82145092530017", + "province": "江西省" + }, + { + "area": "南昌县", + "city": "南昌市", + "country": "中国", + "lat": "28.551604186108275", + "lng": "115.95046017276752", + "province": "江西省" + }, + { + "area": "安义县", + "city": "南昌市", + "country": "中国", + "lat": "28.85079427375071", + "lng": "115.55544146387352", + "province": "江西省" + }, + { + "area": "进贤县", + "city": "南昌市", + "country": "中国", + "lat": "28.382758944473657", + "lng": "116.24853779343151", + "province": "江西省" + }, + { + "area": "", + "city": "景德镇市", + "country": "中国", + "lat": "29.274247711040953", + "lng": "117.18457644638579", + "province": "江西省" + }, + { + "area": "昌江区", + "city": "景德镇市", + "country": "中国", + "lat": "29.27885446446956", + "lng": "117.19057910346257", + "province": "江西省" + }, + { + "area": "珠山区", + "city": "景德镇市", + "country": "中国", + "lat": "29.30577822037362", + "lng": "117.20954826158831", + "province": "江西省" + }, + { + "area": "浮梁县", + "city": "景德镇市", + "country": "中国", + "lat": "29.35778823752936", + "lng": "117.22146608078525", + "province": "江西省" + }, + { + "area": "乐平市", + "city": "景德镇市", + "country": "中国", + "lat": "28.984363669039215", + "lng": "117.15851067473356", + "province": "江西省" + }, + { + "area": "", + "city": "萍乡市", + "country": "中国", + "lat": "27.6283927093972", + "lng": "113.8614964337543", + "province": "江西省" + }, + { + "area": "安源区", + "city": "萍乡市", + "country": "中国", + "lat": "27.621307703861603", + "lng": "113.87743991926233", + "province": "江西省" + }, + { + "area": "湘东区", + "city": "萍乡市", + "country": "中国", + "lat": "27.645875074875434", + "lng": "113.74049971211109", + "province": "江西省" + }, + { + "area": "莲花县", + "city": "萍乡市", + "country": "中国", + "lat": "27.133462711027768", + "lng": "113.96854067422115", + "province": "江西省" + }, + { + "area": "上栗县", + "city": "萍乡市", + "country": "中国", + "lat": "27.886415692068386", + "lng": "113.80153822403567", + "province": "江西省" + }, + { + "area": "芦溪县", + "city": "萍乡市", + "country": "中国", + "lat": "27.636604718699513", + "lng": "114.03651940468296", + "province": "江西省" + }, + { + "area": "", + "city": "九江市", + "country": "中国", + "lat": "29.711340559079343", + "lng": "116.00753491163063", + "province": "江西省" + }, + { + "area": "濂溪区", + "city": "九江市", + "country": "中国", + "lat": "29.67749487742969", + "lng": "115.9955985873402", + "province": "江西省" + }, + { + "area": "浔阳区", + "city": "九江市", + "country": "中国", + "lat": "29.733093751938874", + "lng": "115.99655806745507", + "province": "江西省" + }, + { + "area": "柴桑区", + "city": "九江市", + "country": "中国", + "lat": "29.614804909378574", + "lng": "115.91740154187518", + "province": "江西省" + }, + { + "area": "武宁县", + "city": "九江市", + "country": "中国", + "lat": "29.262352150699854", + "lng": "115.10744177398514", + "province": "江西省" + }, + { + "area": "修水县", + "city": "九江市", + "country": "中国", + "lat": "29.03117586795911", + "lng": "114.55356797638683", + "province": "江西省" + }, + { + "area": "永修县", + "city": "九江市", + "country": "中国", + "lat": "29.02800561626137", + "lng": "115.81540658684771", + "province": "江西省" + }, + { + "area": "德安县", + "city": "九江市", + "country": "中国", + "lat": "29.319172496311634", + "lng": "115.76257795846777", + "province": "江西省" + }, + { + "area": "都昌县", + "city": "九江市", + "country": "中国", + "lat": "29.278965044766643", + "lng": "116.21055204664913", + "province": "江西省" + }, + { + "area": "湖口县", + "city": "九江市", + "country": "中国", + "lat": "29.737131514561977", + "lng": "116.25847134558812", + "province": "江西省" + }, + { + "area": "彭泽县", + "city": "九江市", + "country": "中国", + "lat": "29.90212200490592", + "lng": "116.55550980643851", + "province": "江西省" + }, + { + "area": "瑞昌市", + "city": "九江市", + "country": "中国", + "lat": "29.681951286531458", + "lng": "115.6874296720721", + "province": "江西省" + }, + { + "area": "共青城市", + "city": "九江市", + "country": "中国", + "lat": "29.248741173715608", + "lng": "115.82142002359062", + "province": "江西省" + }, + { + "area": "庐山市", + "city": "九江市", + "country": "中国", + "lat": "29.4545391657173", + "lng": "116.05142593917256", + "province": "江西省" + }, + { + "area": "", + "city": "新余市", + "country": "中国", + "lat": "27.823578697788587", + "lng": "114.9235346513963", + "province": "江西省" + }, + { + "area": "渝水区", + "city": "新余市", + "country": "中国", + "lat": "27.80683965044363", + "lng": "114.95142389340262", + "province": "江西省" + }, + { + "area": "分宜县", + "city": "新余市", + "country": "中国", + "lat": "27.820731344374416", + "lng": "114.69847247035635", + "province": "江西省" + }, + { + "area": "", + "city": "鹰潭市", + "country": "中国", + "lat": "28.265787063191418", + "lng": "117.0755754270272", + "province": "江西省" + }, + { + "area": "月湖区", + "city": "鹰潭市", + "country": "中国", + "lat": "28.24507833155475", + "lng": "117.04354760170725", + "province": "江西省" + }, + { + "area": "余江区", + "city": "鹰潭市", + "country": "中国", + "lat": "28.215353761359427", + "lng": "116.82459362864147", + "province": "江西省" + }, + { + "area": "贵溪市", + "city": "鹰潭市", + "country": "中国", + "lat": "28.29873507210513", + "lng": "117.25139869833444", + "province": "江西省" + }, + { + "area": "", + "city": "赣州市", + "country": "中国", + "lat": "25.835176103497655", + "lng": "114.9405033729825", + "province": "江西省" + }, + { + "area": "章贡区", + "city": "赣州市", + "country": "中国", + "lat": "25.823747013882084", + "lng": "114.92755088549953", + "province": "江西省" + }, + { + "area": "南康区", + "city": "赣州市", + "country": "中国", + "lat": "25.667052930560434", + "lng": "114.77153821508895", + "province": "江西省" + }, + { + "area": "赣县区", + "city": "赣州市", + "country": "中国", + "lat": "25.86638461662099", + "lng": "115.01857016414861", + "province": "江西省" + }, + { + "area": "信丰县", + "city": "赣州市", + "country": "中国", + "lat": "25.391975120013715", + "lng": "114.92952113897391", + "province": "江西省" + }, + { + "area": "大余县", + "city": "赣州市", + "country": "中国", + "lat": "25.40763729836687", + "lng": "114.36840663964537", + "province": "江西省" + }, + { + "area": "上犹县", + "city": "赣州市", + "country": "中国", + "lat": "25.790518799476178", + "lng": "114.55854863128526", + "province": "江西省" + }, + { + "area": "崇义县", + "city": "赣州市", + "country": "中国", + "lat": "25.687687192664324", + "lng": "114.3145724480779", + "province": "江西省" + }, + { + "area": "安远县", + "city": "赣州市", + "country": "中国", + "lat": "25.14274343173196", + "lng": "115.40055913128577", + "province": "江西省" + }, + { + "area": "龙南县", + "city": "赣州市", + "country": "中国", + "lat": "24.91659946115653", + "lng": "114.796554137092", + "province": "江西省" + }, + { + "area": "定南县", + "city": "赣州市", + "country": "中国", + "lat": "24.789783831845877", + "lng": "115.03456377510408", + "province": "江西省" + }, + { + "area": "全南县", + "city": "赣州市", + "country": "中国", + "lat": "24.748206354966594", + "lng": "114.53658236665703", + "province": "江西省" + }, + { + "area": "宁都县", + "city": "赣州市", + "country": "中国", + "lat": "26.475979503340323", + "lng": "116.0154944374297", + "province": "江西省" + }, + { + "area": "于都县", + "city": "赣州市", + "country": "中国", + "lat": "25.95789394275063", + "lng": "115.4214992615303", + "province": "江西省" + }, + { + "area": "兴国县", + "city": "赣州市", + "country": "中国", + "lat": "26.34388258824273", + "lng": "115.36955169119426", + "province": "江西省" + }, + { + "area": "会昌县", + "city": "赣州市", + "country": "中国", + "lat": "25.606661833811145", + "lng": "115.79245964209457", + "province": "江西省" + }, + { + "area": "寻乌县", + "city": "赣州市", + "country": "中国", + "lat": "24.969446546780166", + "lng": "115.65351531535123", + "province": "江西省" + }, + { + "area": "石城县", + "city": "赣州市", + "country": "中国", + "lat": "26.31897234678407", + "lng": "116.35259426977315", + "province": "江西省" + }, + { + "area": "瑞金市", + "city": "赣州市", + "country": "中国", + "lat": "25.891666273953316", + "lng": "116.0334206628587", + "province": "江西省" + }, + { + "area": "", + "city": "吉安市", + "country": "中国", + "lat": "27.119726826070448", + "lng": "115.00051072001253", + "province": "江西省" + }, + { + "area": "吉州区", + "city": "吉安市", + "country": "中国", + "lat": "27.149314993877184", + "lng": "115.00153936965165", + "province": "江西省" + }, + { + "area": "青原区", + "city": "吉安市", + "country": "中国", + "lat": "27.087662535191164", + "lng": "115.02156071302089", + "province": "江西省" + }, + { + "area": "吉安县", + "city": "吉安市", + "country": "中国", + "lat": "27.044989078994433", + "lng": "114.91459130140301", + "province": "江西省" + }, + { + "area": "吉水县", + "city": "吉安市", + "country": "中国", + "lat": "27.235259745038604", + "lng": "115.14256983128013", + "province": "江西省" + }, + { + "area": "峡江县", + "city": "吉安市", + "country": "中国", + "lat": "27.58823461761528", + "lng": "115.32240322821313", + "province": "江西省" + }, + { + "area": "新干县", + "city": "吉安市", + "country": "中国", + "lat": "27.746080951712873", + "lng": "115.39359474833033", + "province": "江西省" + }, + { + "area": "永丰县", + "city": "吉安市", + "country": "中国", + "lat": "27.324342103714045", + "lng": "115.44740243988527", + "province": "江西省" + }, + { + "area": "泰和县", + "city": "吉安市", + "country": "中国", + "lat": "26.795697341164775", + "lng": "114.91559111543528", + "province": "江西省" + }, + { + "area": "遂川县", + "city": "吉安市", + "country": "中国", + "lat": "26.319517284145913", + "lng": "114.52756212171211", + "province": "江西省" + }, + { + "area": "万安县", + "city": "吉安市", + "country": "中国", + "lat": "26.464072836340645", + "lng": "114.79257715893954", + "province": "江西省" + }, + { + "area": "安福县", + "city": "吉安市", + "country": "中国", + "lat": "27.399076477104835", + "lng": "114.62647813460515", + "province": "江西省" + }, + { + "area": "永新县", + "city": "吉安市", + "country": "中国", + "lat": "26.951537256563174", + "lng": "114.24941493589976", + "province": "江西省" + }, + { + "area": "井冈山市", + "city": "吉安市", + "country": "中国", + "lat": "26.753709741565643", + "lng": "114.29555585942124", + "province": "江西省" + }, + { + "area": "", + "city": "宜春市", + "country": "中国", + "lat": "27.820856421848216", + "lng": "114.4235636759064", + "province": "江西省" + }, + { + "area": "袁州区", + "city": "宜春市", + "country": "中国", + "lat": "27.802582705304406", + "lng": "114.43456118110868", + "province": "江西省" + }, + { + "area": "奉新县", + "city": "宜春市", + "country": "中国", + "lat": "28.69402895145841", + "lng": "115.40655109852699", + "province": "江西省" + }, + { + "area": "万载县", + "city": "宜春市", + "country": "中国", + "lat": "28.112133306115535", + "lng": "114.45253654384906", + "province": "江西省" + }, + { + "area": "上高县", + "city": "宜春市", + "country": "中国", + "lat": "28.23881549025242", + "lng": "114.93154115857352", + "province": "江西省" + }, + { + "area": "宜丰县", + "city": "宜春市", + "country": "中国", + "lat": "28.400373307264914", + "lng": "114.80951713474946", + "province": "江西省" + }, + { + "area": "靖安县", + "city": "宜春市", + "country": "中国", + "lat": "28.867081916185878", + "lng": "115.36955312848308", + "province": "江西省" + }, + { + "area": "铜鼓县", + "city": "宜春市", + "country": "中国", + "lat": "28.52708345653963", + "lng": "114.3774110744133", + "province": "江西省" + }, + { + "area": "丰城市", + "city": "宜春市", + "country": "中国", + "lat": "28.166614024368958", + "lng": "115.7774784214485", + "province": "江西省" + }, + { + "area": "樟树市", + "city": "宜春市", + "country": "中国", + "lat": "28.062153117647533", + "lng": "115.55241893532511", + "province": "江西省" + }, + { + "area": "高安市", + "city": "宜春市", + "country": "中国", + "lat": "28.422857002119002", + "lng": "115.38256535328246", + "province": "江西省" + }, + { + "area": "", + "city": "抚州市", + "country": "中国", + "lat": "27.954892253419565", + "lng": "116.36453876864373", + "province": "江西省" + }, + { + "area": "临川区", + "city": "抚州市", + "country": "中国", + "lat": "27.9404589928642", + "lng": "116.31848983160644", + "province": "江西省" + }, + { + "area": "东乡区", + "city": "抚州市", + "country": "中国", + "lat": "28.25397739799852", + "lng": "116.60954171504868", + "province": "江西省" + }, + { + "area": "南城县", + "city": "抚州市", + "country": "中国", + "lat": "27.576240966559514", + "lng": "116.64339884970856", + "province": "江西省" + }, + { + "area": "黎川县", + "city": "抚州市", + "country": "中国", + "lat": "27.28834023483109", + "lng": "116.9145070033776", + "province": "江西省" + }, + { + "area": "南丰县", + "city": "抚州市", + "country": "中国", + "lat": "27.224733524876402", + "lng": "116.53140350859456", + "province": "江西省" + }, + { + "area": "崇仁县", + "city": "抚州市", + "country": "中国", + "lat": "27.759079756014405", + "lng": "116.08354898487654", + "province": "江西省" + }, + { + "area": "乐安县", + "city": "抚州市", + "country": "中国", + "lat": "27.43407986449759", + "lng": "115.83749627865299", + "province": "江西省" + }, + { + "area": "宜黄县", + "city": "抚州市", + "country": "中国", + "lat": "27.56056346070013", + "lng": "116.24254169398493", + "province": "江西省" + }, + { + "area": "金溪县", + "city": "抚州市", + "country": "中国", + "lat": "27.925329188976068", + "lng": "116.76040404065004", + "province": "江西省" + }, + { + "area": "资溪县", + "city": "抚州市", + "country": "中国", + "lat": "27.71184578573218", + "lng": "117.06657027361484", + "province": "江西省" + }, + { + "area": "广昌县", + "city": "抚州市", + "country": "中国", + "lat": "26.848454446680922", + "lng": "116.34256064638275", + "province": "江西省" + }, + { + "area": "", + "city": "上饶市", + "country": "中国", + "lat": "28.460625921851733", + "lng": "117.94945960312224", + "province": "江西省" + }, + { + "area": "信州区", + "city": "上饶市", + "country": "中国", + "lat": "28.437628310999735", + "lng": "117.97341184157126", + "province": "江西省" + }, + { + "area": "广丰区", + "city": "上饶市", + "country": "中国", + "lat": "28.442615061204748", + "lng": "118.19742022041781", + "province": "江西省" + }, + { + "area": "广信区", + "city": "上饶市", + "country": "中国", + "lat": "28.45466086134279", + "lng": "117.91443700689409", + "province": "江西省" + }, + { + "area": "玉山县", + "city": "上饶市", + "country": "中国", + "lat": "28.687749687317275", + "lng": "118.2515628900973", + "province": "江西省" + }, + { + "area": "铅山县", + "city": "上饶市", + "country": "中国", + "lat": "28.321504694791088", + "lng": "117.71642163695348", + "province": "江西省" + }, + { + "area": "横峰县", + "city": "上饶市", + "country": "中国", + "lat": "28.413440462383896", + "lng": "117.60239738301532", + "province": "江西省" + }, + { + "area": "弋阳县", + "city": "上饶市", + "country": "中国", + "lat": "28.384082001230794", + "lng": "117.4555063762417", + "province": "江西省" + }, + { + "area": "余干县", + "city": "上饶市", + "country": "中国", + "lat": "28.707866244418767", + "lng": "116.70160096198632", + "province": "江西省" + }, + { + "area": "鄱阳县", + "city": "上饶市", + "country": "中国", + "lat": "29.011452830922217", + "lng": "116.71056614080348", + "province": "江西省" + }, + { + "area": "万年县", + "city": "上饶市", + "country": "中国", + "lat": "28.700054054128923", + "lng": "117.06459894217386", + "province": "江西省" + }, + { + "area": "婺源县", + "city": "上饶市", + "country": "中国", + "lat": "29.254039048096878", + "lng": "117.86844502242613", + "province": "江西省" + }, + { + "area": "德兴市", + "city": "上饶市", + "country": "中国", + "lat": "28.952564863028318", + "lng": "117.58547968518205", + "province": "江西省" + }, + { + "area": "", + "city": "济南市", + "country": "中国", + "lat": "36.65655420178723", + "lng": "117.12639941261048", + "province": "山东省" + }, + { + "area": "历下区", + "city": "济南市", + "country": "中国", + "lat": "36.67216295004278", + "lng": "117.08256731389552", + "province": "山东省" + }, + { + "area": "市中区", + "city": "济南市", + "country": "中国", + "lat": "36.65755167364164", + "lng": "117.00439910401157", + "province": "山东省" + }, + { + "area": "槐荫区", + "city": "济南市", + "country": "中国", + "lat": "36.65756173442624", + "lng": "116.90745837507174", + "province": "山东省" + }, + { + "area": "天桥区", + "city": "济南市", + "country": "中国", + "lat": "36.68406787435328", + "lng": "116.99339917338078", + "province": "山东省" + }, + { + "area": "历城区", + "city": "济南市", + "country": "中国", + "lat": "36.68565553471069", + "lng": "117.07158975107194", + "province": "山东省" + }, + { + "area": "长清区", + "city": "济南市", + "country": "中国", + "lat": "36.5602158799097", + "lng": "116.75838709094633", + "province": "山东省" + }, + { + "area": "章丘区", + "city": "济南市", + "country": "中国", + "lat": "36.685532751420155", + "lng": "117.53256537436938", + "province": "山东省" + }, + { + "area": "济阳区", + "city": "济南市", + "country": "中国", + "lat": "36.98397051831499", + "lng": "117.18062113319276", + "province": "山东省" + }, + { + "area": "莱芜区", + "city": "济南市", + "country": "中国", + "lat": "36.20884142681693", + "lng": "117.66659067001653", + "province": "山东省" + }, + { + "area": "钢城区", + "city": "济南市", + "country": "中国", + "lat": "36.06471880702823", + "lng": "117.81749566517946", + "province": "山东省" + }, + { + "area": "平阴县", + "city": "济南市", + "country": "中国", + "lat": "36.29486132106647", + "lng": "116.46261667805571", + "province": "山东省" + }, + { + "area": "商河县", + "city": "济南市", + "country": "中国", + "lat": "37.31497071555638", + "lng": "117.16352979289881", + "province": "山东省" + }, + { + "area": "济南高新技术产业开发区", + "city": "济南市", + "country": "中国", + "lat": "36.68554946500875", + "lng": "117.317675425189", + "province": "山东省" + }, + { + "area": "", + "city": "青岛市", + "country": "中国", + "lat": "36.072227496663224", + "lng": "120.38945519114627", + "province": "山东省" + }, + { + "area": "市南区", + "city": "青岛市", + "country": "中国", + "lat": "36.08146564023402", + "lng": "120.41858472357943", + "province": "山东省" + }, + { + "area": "市北区", + "city": "青岛市", + "country": "中国", + "lat": "36.09344959486011", + "lng": "120.3814044873353", + "province": "山东省" + }, + { + "area": "黄岛区", + "city": "青岛市", + "country": "中国", + "lat": "35.966382870945466", + "lng": "120.20454654768359", + "province": "山东省" + }, + { + "area": "崂山区", + "city": "青岛市", + "country": "中国", + "lat": "36.113499423970545", + "lng": "120.47539724708304", + "province": "山东省" + }, + { + "area": "李沧区", + "city": "青岛市", + "country": "中国", + "lat": "36.15102466778407", + "lng": "120.43960282674914", + "province": "山东省" + }, + { + "area": "城阳区", + "city": "青岛市", + "country": "中国", + "lat": "36.31288619735009", + "lng": "120.40252679394416", + "province": "山东省" + }, + { + "area": "即墨区", + "city": "青岛市", + "country": "中国", + "lat": "36.39474917032192", + "lng": "120.45353617402276", + "province": "山东省" + }, + { + "area": "青岛高新技术产业开发区", + "city": "青岛市", + "country": "中国", + "lat": "36.52014609670921", + "lng": "120.53718907802843", + "province": "山东省" + }, + { + "area": "胶州市", + "city": "青岛市", + "country": "中国", + "lat": "36.27034908804922", + "lng": "120.03953537126692", + "province": "山东省" + }, + { + "area": "平度市", + "city": "青岛市", + "country": "中国", + "lat": "36.78269225408944", + "lng": "119.9944142939757", + "province": "山东省" + }, + { + "area": "莱西市", + "city": "青岛市", + "country": "中国", + "lat": "36.89395629802583", + "lng": "120.52455620764162", + "province": "山东省" + }, + { + "area": "", + "city": "淄博市", + "country": "中国", + "lat": "36.81908568332188", + "lng": "118.06145253489896", + "province": "山东省" + }, + { + "area": "淄川区", + "city": "淄博市", + "country": "中国", + "lat": "36.649834806021666", + "lng": "117.9734118576298", + "province": "山东省" + }, + { + "area": "张店区", + "city": "淄博市", + "country": "中国", + "lat": "36.81194195214412", + "lng": "118.02459110728033", + "province": "山东省" + }, + { + "area": "博山区", + "city": "淄博市", + "country": "中国", + "lat": "36.500847855130566", + "lng": "117.86846875371543", + "province": "山东省" + }, + { + "area": "临淄区", + "city": "淄博市", + "country": "中国", + "lat": "36.8322936351522", + "lng": "118.31539460934518", + "province": "山东省" + }, + { + "area": "周村区", + "city": "淄博市", + "country": "中国", + "lat": "36.808994352212316", + "lng": "117.87648217784775", + "province": "山东省" + }, + { + "area": "桓台县", + "city": "淄博市", + "country": "中国", + "lat": "36.965607980118264", + "lng": "118.10443420778763", + "province": "山东省" + }, + { + "area": "高青县", + "city": "淄博市", + "country": "中国", + "lat": "37.17726865433254", + "lng": "117.8333943252478", + "province": "山东省" + }, + { + "area": "沂源县", + "city": "淄博市", + "country": "中国", + "lat": "36.19091698584845", + "lng": "118.1774894423699", + "province": "山东省" + }, + { + "area": "", + "city": "枣庄市", + "country": "中国", + "lat": "34.815994048435115", + "lng": "117.33054194483897", + "province": "山东省" + }, + { + "area": "市中区", + "city": "枣庄市", + "country": "中国", + "lat": "34.86996272506961", + "lng": "117.56256581399447", + "province": "山东省" + }, + { + "area": "薛城区", + "city": "枣庄市", + "country": "中国", + "lat": "34.801124568638926", + "lng": "117.2694576193132", + "province": "山东省" + }, + { + "area": "峄城区", + "city": "枣庄市", + "country": "中国", + "lat": "34.77859987301135", + "lng": "117.59639060966718", + "province": "山东省" + }, + { + "area": "台儿庄区", + "city": "枣庄市", + "country": "中国", + "lat": "34.568763215632615", + "lng": "117.74042545412036", + "province": "山东省" + }, + { + "area": "山亭区", + "city": "枣庄市", + "country": "中国", + "lat": "35.10569198076537", + "lng": "117.4674431655763", + "province": "山东省" + }, + { + "area": "滕州市", + "city": "枣庄市", + "country": "中国", + "lat": "35.120034809573916", + "lng": "117.17256521920983", + "province": "山东省" + }, + { + "area": "", + "city": "东营市", + "country": "中国", + "lat": "37.43964182632334", + "lng": "118.68138493513693", + "province": "山东省" + }, + { + "area": "东营区", + "city": "东营市", + "country": "中国", + "lat": "37.45484732016579", + "lng": "118.58846268606544", + "province": "山东省" + }, + { + "area": "河口区", + "city": "东营市", + "country": "中国", + "lat": "37.891120201055706", + "lng": "118.53250516974624", + "province": "山东省" + }, + { + "area": "垦利区", + "city": "东营市", + "country": "中国", + "lat": "37.57855513380944", + "lng": "118.58143173866941", + "province": "山东省" + }, + { + "area": "利津县", + "city": "东营市", + "country": "中国", + "lat": "37.49586029903058", + "lng": "118.26161799914311", + "province": "山东省" + }, + { + "area": "广饶县", + "city": "东营市", + "country": "中国", + "lat": "37.059638498906146", + "lng": "118.41349864392043", + "province": "山东省" + }, + { + "area": "东营经济技术开发区", + "city": "东营市", + "country": "中国", + "lat": "37.439685020023916", + "lng": "118.70206788052086", + "province": "山东省" + }, + { + "area": "东营港经济开发区", + "city": "东营市", + "country": "中国", + "lat": "37.45484732016579", + "lng": "118.58846268606544", + "province": "山东省" + }, + { + "area": "", + "city": "烟台市", + "country": "中国", + "lat": "37.470038383730525", + "lng": "121.45441541730195", + "province": "山东省" + }, + { + "area": "芝罘区", + "city": "烟台市", + "country": "中国", + "lat": "37.546312866890936", + "lng": "121.40654004548657", + "province": "山东省" + }, + { + "area": "福山区", + "city": "烟台市", + "country": "中国", + "lat": "37.50366822845149", + "lng": "121.27460474743894", + "province": "山东省" + }, + { + "area": "牟平区", + "city": "烟台市", + "country": "中国", + "lat": "37.392915451795815", + "lng": "121.60654911474143", + "province": "山东省" + }, + { + "area": "莱山区", + "city": "烟台市", + "country": "中国", + "lat": "37.51764858410898", + "lng": "121.4513806717976", + "province": "山东省" + }, + { + "area": "长岛县", + "city": "烟台市", + "country": "中国", + "lat": "37.92762838757914", + "lng": "120.74342978243655", + "province": "山东省" + }, + { + "area": "烟台高新技术产业开发区", + "city": "烟台市", + "country": "中国", + "lat": "37.42718251017192", + "lng": "121.5335772429105", + "province": "山东省" + }, + { + "area": "烟台经济技术开发区", + "city": "烟台市", + "country": "中国", + "lat": "37.5698737379669", + "lng": "121.26038097799396", + "province": "山东省" + }, + { + "area": "龙口市", + "city": "烟台市", + "country": "中国", + "lat": "37.65255512549617", + "lng": "120.48536852807433", + "province": "山东省" + }, + { + "area": "莱阳市", + "city": "烟台市", + "country": "中国", + "lat": "36.9846355683041", + "lng": "120.718414309578", + "province": "山东省" + }, + { + "area": "莱州市", + "city": "烟台市", + "country": "中国", + "lat": "37.18263660907421", + "lng": "119.94859307736998", + "province": "山东省" + }, + { + "area": "蓬莱市", + "city": "烟台市", + "country": "中国", + "lat": "37.81643872596949", + "lng": "120.76556151494698", + "province": "山东省" + }, + { + "area": "招远市", + "city": "烟台市", + "country": "中国", + "lat": "37.36113714256612", + "lng": "120.44060165264568", + "province": "山东省" + }, + { + "area": "栖霞市", + "city": "烟台市", + "country": "中国", + "lat": "37.341418164799684", + "lng": "120.85641658337892", + "province": "山东省" + }, + { + "area": "海阳市", + "city": "烟台市", + "country": "中国", + "lat": "36.693269738228416", + "lng": "121.1804581977879", + "province": "山东省" + }, + { + "area": "", + "city": "潍坊市", + "country": "中国", + "lat": "36.71265155126753", + "lng": "119.16837791142822", + "province": "山东省" + }, + { + "area": "潍城区", + "city": "潍坊市", + "country": "中国", + "lat": "36.73285441557026", + "lng": "119.03142854151555", + "province": "山东省" + }, + { + "area": "寒亭区", + "city": "潍坊市", + "country": "中国", + "lat": "36.78074378620103", + "lng": "119.22661514747064", + "province": "山东省" + }, + { + "area": "坊子区", + "city": "潍坊市", + "country": "中国", + "lat": "36.66074159970123", + "lng": "119.17240097265466", + "province": "山东省" + }, + { + "area": "奎文区", + "city": "潍坊市", + "country": "中国", + "lat": "36.71275201404622", + "lng": "119.13947052994769", + "province": "山东省" + }, + { + "area": "临朐县", + "city": "潍坊市", + "country": "中国", + "lat": "36.519129501827656", + "lng": "118.54944999641151", + "province": "山东省" + }, + { + "area": "昌乐县", + "city": "潍坊市", + "country": "中国", + "lat": "36.71299619084501", + "lng": "118.83648798143965", + "province": "山东省" + }, + { + "area": "潍坊滨海经济技术开发区", + "city": "潍坊市", + "country": "中国", + "lat": "37.13758800468823", + "lng": "119.18646969456863", + "province": "山东省" + }, + { + "area": "青州市", + "city": "潍坊市", + "country": "中国", + "lat": "36.690416508705376", + "lng": "118.48653672086745", + "province": "山东省" + }, + { + "area": "诸城市", + "city": "潍坊市", + "country": "中国", + "lat": "36.00200885807568", + "lng": "119.41640221866636", + "province": "山东省" + }, + { + "area": "寿光市", + "city": "潍坊市", + "country": "中国", + "lat": "36.86192174647094", + "lng": "118.7974153748082", + "province": "山东省" + }, + { + "area": "安丘市", + "city": "潍坊市", + "country": "中国", + "lat": "36.483842195596104", + "lng": "119.2256075181801", + "province": "山东省" + }, + { + "area": "高密市", + "city": "潍坊市", + "country": "中国", + "lat": "36.388956706464846", + "lng": "119.76241099601636", + "province": "山东省" + }, + { + "area": "昌邑市", + "city": "潍坊市", + "country": "中国", + "lat": "36.8651610726221", + "lng": "119.40440597739446", + "province": "山东省" + }, + { + "area": "", + "city": "济宁市", + "country": "中国", + "lat": "35.420177394529645", + "lng": "116.59361234853988", + "province": "山东省" + }, + { + "area": "任城区", + "city": "济宁市", + "country": "中国", + "lat": "35.4937306402599", + "lng": "116.55446985373976", + "province": "山东省" + }, + { + "area": "兖州区", + "city": "济宁市", + "country": "中国", + "lat": "35.557952373283435", + "lng": "116.7901151517282", + "province": "山东省" + }, + { + "area": "微山县", + "city": "济宁市", + "country": "中国", + "lat": "34.813315104239", + "lng": "117.13541381857256", + "province": "山东省" + }, + { + "area": "鱼台县", + "city": "济宁市", + "country": "中国", + "lat": "35.017887717822525", + "lng": "116.65739284822328", + "province": "山东省" + }, + { + "area": "金乡县", + "city": "济宁市", + "country": "中国", + "lat": "35.072569118665015", + "lng": "116.31852982171351", + "province": "山东省" + }, + { + "area": "嘉祥县", + "city": "济宁市", + "country": "中国", + "lat": "35.41325504410229", + "lng": "116.34861308510659", + "province": "山东省" + }, + { + "area": "汶上县", + "city": "济宁市", + "country": "中国", + "lat": "35.71705539262766", + "lng": "116.50544105764958", + "province": "山东省" + }, + { + "area": "泗水县", + "city": "济宁市", + "country": "中国", + "lat": "35.67060048122767", + "lng": "117.2574285898902", + "province": "山东省" + }, + { + "area": "梁山县", + "city": "济宁市", + "country": "中国", + "lat": "35.80806388661061", + "lng": "116.10262029577927", + "province": "山东省" + }, + { + "area": "济宁高新技术产业开发区", + "city": "济宁市", + "country": "中国", + "lat": "35.430964154503044", + "lng": "116.62657180651483", + "province": "山东省" + }, + { + "area": "曲阜市", + "city": "济宁市", + "country": "中国", + "lat": "35.587372286487756", + "lng": "116.99341597169382", + "province": "山东省" + }, + { + "area": "邹城市", + "city": "济宁市", + "country": "中国", + "lat": "35.40752093244999", + "lng": "117.01440416129005", + "province": "山东省" + }, + { + "area": "", + "city": "泰安市", + "country": "中国", + "lat": "36.2058580448846", + "lng": "117.0944948347959", + "province": "山东省" + }, + { + "area": "泰山区", + "city": "泰安市", + "country": "中国", + "lat": "36.199444601195346", + "lng": "117.14141108581828", + "province": "山东省" + }, + { + "area": "岱岳区", + "city": "泰安市", + "country": "中国", + "lat": "36.19329124229092", + "lng": "117.0485564791517", + "province": "山东省" + }, + { + "area": "宁阳县", + "city": "泰安市", + "country": "中国", + "lat": "35.76453909734402", + "lng": "116.81257853863292", + "province": "山东省" + }, + { + "area": "东平县", + "city": "泰安市", + "country": "中国", + "lat": "35.94190801501926", + "lng": "116.47759421565412", + "province": "山东省" + }, + { + "area": "新泰市", + "city": "泰安市", + "country": "中国", + "lat": "35.9146198665876", + "lng": "117.77460624826666", + "province": "山东省" + }, + { + "area": "肥城市", + "city": "泰安市", + "country": "中国", + "lat": "36.18881122431525", + "lng": "116.77540081764421", + "province": "山东省" + }, + { + "area": "", + "city": "威海市", + "country": "中国", + "lat": "37.5164305480148", + "lng": "122.12754097831325", + "province": "山东省" + }, + { + "area": "环翠区", + "city": "威海市", + "country": "中国", + "lat": "37.50796807121946", + "lng": "122.12953818095359", + "province": "山东省" + }, + { + "area": "文登区", + "city": "威海市", + "country": "中国", + "lat": "37.20011332831649", + "lng": "122.06442836877653", + "province": "山东省" + }, + { + "area": "威海火炬高技术产业开发区", + "city": "威海市", + "country": "中国", + "lat": "37.528114338516566", + "lng": "122.04062911174793", + "province": "山东省" + }, + { + "area": "威海经济技术开发区", + "city": "威海市", + "country": "中国", + "lat": "37.410552001588385", + "lng": "122.17787698858156", + "province": "山东省" + }, + { + "area": "威海临港经济技术开发区", + "city": "威海市", + "country": "中国", + "lat": "37.5164305480148", + "lng": "122.12754097831325", + "province": "山东省" + }, + { + "area": "荣成市", + "city": "威海市", + "country": "中国", + "lat": "37.171317939253235", + "lng": "122.49250463073764", + "province": "山东省" + }, + { + "area": "乳山市", + "city": "威海市", + "country": "中国", + "lat": "36.92517735787775", + "lng": "121.54642858119733", + "province": "山东省" + }, + { + "area": "", + "city": "日照市", + "country": "中国", + "lat": "35.42283899843767", + "lng": "119.53341540456555", + "province": "山东省" + }, + { + "area": "东港区", + "city": "日照市", + "country": "中国", + "lat": "35.43104900394244", + "lng": "119.46862431118342", + "province": "山东省" + }, + { + "area": "岚山区", + "city": "日照市", + "country": "中国", + "lat": "35.127432330051725", + "lng": "119.32553044175195", + "province": "山东省" + }, + { + "area": "五莲县", + "city": "日照市", + "country": "中国", + "lat": "35.75569710410426", + "lng": "119.21558036258607", + "province": "山东省" + }, + { + "area": "莒县", + "city": "日照市", + "country": "中国", + "lat": "35.585872122989336", + "lng": "118.84353824240415", + "province": "山东省" + }, + { + "area": "日照经济技术开发区", + "city": "日照市", + "country": "中国", + "lat": "35.42283899843767", + "lng": "119.53341540456555", + "province": "山东省" + }, + { + "area": "", + "city": "临沂市", + "country": "中国", + "lat": "35.11067124236514", + "lng": "118.36353300501388", + "province": "山东省" + }, + { + "area": "兰山区", + "city": "临沂市", + "country": "中国", + "lat": "35.05734022980591", + "lng": "118.3544997346361", + "province": "山东省" + }, + { + "area": "罗庄区", + "city": "临沂市", + "country": "中国", + "lat": "35.00250373343294", + "lng": "118.29151252854857", + "province": "山东省" + }, + { + "area": "河东区", + "city": "临沂市", + "country": "中国", + "lat": "35.0956755368236", + "lng": "118.40954744713478", + "province": "山东省" + }, + { + "area": "沂南县", + "city": "临沂市", + "country": "中国", + "lat": "35.55609766694983", + "lng": "118.47149154086414", + "province": "山东省" + }, + { + "area": "郯城县", + "city": "临沂市", + "country": "中国", + "lat": "34.61922593247125", + "lng": "118.37358710977321", + "province": "山东省" + }, + { + "area": "沂水县", + "city": "临沂市", + "country": "中国", + "lat": "35.79618058471814", + "lng": "118.63461726384591", + "province": "山东省" + }, + { + "area": "兰陵县", + "city": "临沂市", + "country": "中国", + "lat": "34.86361638543997", + "lng": "118.0774094949949", + "province": "山东省" + }, + { + "area": "费县", + "city": "临沂市", + "country": "中国", + "lat": "35.27230412851695", + "lng": "117.98442508318213", + "province": "山东省" + }, + { + "area": "平邑县", + "city": "临沂市", + "country": "中国", + "lat": "35.51201963664022", + "lng": "117.64654058086437", + "province": "山东省" + }, + { + "area": "莒南县", + "city": "临沂市", + "country": "中国", + "lat": "35.18081163178793", + "lng": "118.84154077027218", + "province": "山东省" + }, + { + "area": "蒙阴县", + "city": "临沂市", + "country": "中国", + "lat": "35.71634716623248", + "lng": "117.95141460145422", + "province": "山东省" + }, + { + "area": "临沭县", + "city": "临沂市", + "country": "中国", + "lat": "34.92601859149122", + "lng": "118.65749450009906", + "province": "山东省" + }, + { + "area": "临沂高新技术产业开发区", + "city": "临沂市", + "country": "中国", + "lat": "34.99122311841125", + "lng": "118.27104661377584", + "province": "山东省" + }, + { + "area": "临沂经济技术开发区", + "city": "临沂市", + "country": "中国", + "lat": "35.029365911984684", + "lng": "118.416192033331", + "province": "山东省" + }, + { + "area": "临沂临港经济开发区", + "city": "临沂市", + "country": "中国", + "lat": "35.11067124236514", + "lng": "118.36353300501388", + "province": "山东省" + }, + { + "area": "", + "city": "德州市", + "country": "中国", + "lat": "37.441308454576266", + "lng": "116.36555674397471", + "province": "山东省" + }, + { + "area": "德城区", + "city": "德州市", + "country": "中国", + "lat": "37.45699328302057", + "lng": "116.30544896636886", + "province": "山东省" + }, + { + "area": "陵城区", + "city": "德州市", + "country": "中国", + "lat": "37.34713243458088", + "lng": "116.5894000143425", + "province": "山东省" + }, + { + "area": "宁津县", + "city": "德州市", + "country": "中国", + "lat": "37.658018745854946", + "lng": "116.80653761373941", + "province": "山东省" + }, + { + "area": "庆云县", + "city": "德州市", + "country": "中国", + "lat": "37.78158531885699", + "lng": "117.39145244824853", + "province": "山东省" + }, + { + "area": "临邑县", + "city": "德州市", + "country": "中国", + "lat": "37.19616936672706", + "lng": "116.87340370301902", + "province": "山东省" + }, + { + "area": "齐河县", + "city": "德州市", + "country": "中国", + "lat": "36.78994480666954", + "lng": "116.76938747072987", + "province": "山东省" + }, + { + "area": "平原县", + "city": "德州市", + "country": "中国", + "lat": "37.171221463311625", + "lng": "116.4405047082665", + "province": "山东省" + }, + { + "area": "夏津县", + "city": "德州市", + "country": "中国", + "lat": "36.954154863323446", + "lng": "116.00853411225853", + "province": "山东省" + }, + { + "area": "武城县", + "city": "德州市", + "country": "中国", + "lat": "37.21922208028849", + "lng": "116.07550629141886", + "province": "山东省" + }, + { + "area": "德州经济技术开发区", + "city": "德州市", + "country": "中国", + "lat": "37.45869274986675", + "lng": "116.38252187234448", + "province": "山东省" + }, + { + "area": "德州运河经济开发区", + "city": "德州市", + "country": "中国", + "lat": "38.316522737475516", + "lng": "116.83861197129539", + "province": "山东省" + }, + { + "area": "乐陵市", + "city": "德州市", + "country": "中国", + "lat": "37.73592450080975", + "lng": "117.23840643173311", + "province": "山东省" + }, + { + "area": "禹城市", + "city": "德州市", + "country": "中国", + "lat": "36.94024200876569", + "lng": "116.64437110138118", + "province": "山东省" + }, + { + "area": "", + "city": "聊城市", + "country": "中国", + "lat": "36.46275818769411", + "lng": "115.99158784830443", + "province": "山东省" + }, + { + "area": "东昌府区", + "city": "聊城市", + "country": "中国", + "lat": "36.44037784073227", + "lng": "115.99458657175785", + "province": "山东省" + }, + { + "area": "茌平区", + "city": "聊城市", + "country": "中国", + "lat": "36.5867850688424", + "lng": "116.26145544215375", + "province": "山东省" + }, + { + "area": "阳谷县", + "city": "聊城市", + "country": "中国", + "lat": "36.12081551468669", + "lng": "115.79839557041204", + "province": "山东省" + }, + { + "area": "莘县", + "city": "聊城市", + "country": "中国", + "lat": "36.23990712054613", + "lng": "115.67739687245674", + "province": "山东省" + }, + { + "area": "东阿县", + "city": "聊城市", + "country": "中国", + "lat": "36.340957707760644", + "lng": "116.25449294563757", + "province": "山东省" + }, + { + "area": "冠县", + "city": "聊城市", + "country": "中国", + "lat": "36.49024322539373", + "lng": "115.44939579503601", + "province": "山东省" + }, + { + "area": "高唐县", + "city": "聊城市", + "country": "中国", + "lat": "36.85159108409526", + "lng": "116.23560427567926", + "province": "山东省" + }, + { + "area": "临清市", + "city": "聊城市", + "country": "中国", + "lat": "36.8442891866943", + "lng": "115.71146960045022", + "province": "山东省" + }, + { + "area": "", + "city": "滨州市", + "country": "中国", + "lat": "37.3881961960769", + "lng": "117.9774040171467", + "province": "山东省" + }, + { + "area": "滨城区", + "city": "滨州市", + "country": "中国", + "lat": "37.436843207743635", + "lng": "118.026603850606", + "province": "山东省" + }, + { + "area": "沾化区", + "city": "滨州市", + "country": "中国", + "lat": "37.705298106724484", + "lng": "118.10545441335532", + "province": "山东省" + }, + { + "area": "惠民县", + "city": "滨州市", + "country": "中国", + "lat": "37.49580310894013", + "lng": "117.5165096904979", + "province": "山东省" + }, + { + "area": "阳信县", + "city": "滨州市", + "country": "中国", + "lat": "37.64733803495721", + "lng": "117.58443703790701", + "province": "山东省" + }, + { + "area": "无棣县", + "city": "滨州市", + "country": "中国", + "lat": "37.777567312085814", + "lng": "117.63245748606224", + "province": "山东省" + }, + { + "area": "博兴县", + "city": "滨州市", + "country": "中国", + "lat": "37.160477277651474", + "lng": "118.1174926953251", + "province": "山东省" + }, + { + "area": "邹平市", + "city": "滨州市", + "country": "中国", + "lat": "36.8700322166973", + "lng": "117.74947848721935", + "province": "山东省" + }, + { + "area": "", + "city": "菏泽市", + "country": "中国", + "lat": "35.23940742476551", + "lng": "115.48754503343376", + "province": "山东省" + }, + { + "area": "牡丹区", + "city": "菏泽市", + "country": "中国", + "lat": "35.25701817606895", + "lng": "115.42344303020836", + "province": "山东省" + }, + { + "area": "定陶区", + "city": "菏泽市", + "country": "中国", + "lat": "35.07727517975711", + "lng": "115.57943737523806", + "province": "山东省" + }, + { + "area": "曹县", + "city": "菏泽市", + "country": "中国", + "lat": "34.83180934841467", + "lng": "115.54845724362382", + "province": "山东省" + }, + { + "area": "单县", + "city": "菏泽市", + "country": "中国", + "lat": "34.78465843369218", + "lng": "116.11158367798839", + "province": "山东省" + }, + { + "area": "成武县", + "city": "菏泽市", + "country": "中国", + "lat": "34.95860565495999", + "lng": "115.8965190083863", + "province": "山东省" + }, + { + "area": "巨野县", + "city": "菏泽市", + "country": "中国", + "lat": "35.40206238060898", + "lng": "116.10159901224499", + "province": "山东省" + }, + { + "area": "郓城县", + "city": "菏泽市", + "country": "中国", + "lat": "35.6059023196872", + "lng": "115.95045057628886", + "province": "山东省" + }, + { + "area": "鄄城县", + "city": "菏泽市", + "country": "中国", + "lat": "35.56920425988141", + "lng": "115.51660692346202", + "province": "山东省" + }, + { + "area": "东明县", + "city": "菏泽市", + "country": "中国", + "lat": "35.29570169241104", + "lng": "115.09641733472576", + "province": "山东省" + }, + { + "area": "菏泽经济技术开发区", + "city": "菏泽市", + "country": "中国", + "lat": "35.23940742476551", + "lng": "115.48754503343376", + "province": "山东省" + }, + { + "area": "菏泽高新技术开发区", + "city": "菏泽市", + "country": "中国", + "lat": "35.288518500701166", + "lng": "115.42943571609597", + "province": "山东省" + }, + { + "area": "", + "city": "郑州市", + "country": "中国", + "lat": "34.75343885045448", + "lng": "113.63141920733915", + "province": "河南省" + }, + { + "area": "中原区", + "city": "郑州市", + "country": "中国", + "lat": "34.754450781329176", + "lng": "113.61947551693957", + "province": "河南省" + }, + { + "area": "二七区", + "city": "郑州市", + "country": "中国", + "lat": "34.75343885045448", + "lng": "113.63141920733915", + "province": "河南省" + }, + { + "area": "管城回族区", + "city": "郑州市", + "country": "中国", + "lat": "34.75967387469872", + "lng": "113.68352469980101", + "province": "河南省" + }, + { + "area": "金水区", + "city": "郑州市", + "country": "中国", + "lat": "34.80607044566173", + "lng": "113.66644773239523", + "province": "河南省" + }, + { + "area": "上街区", + "city": "郑州市", + "country": "中国", + "lat": "34.808818610238696", + "lng": "113.3154972866043", + "province": "河南省" + }, + { + "area": "惠济区", + "city": "郑州市", + "country": "中国", + "lat": "34.873519885775636", + "lng": "113.62345527984044", + "province": "河南省" + }, + { + "area": "中牟县", + "city": "郑州市", + "country": "中国", + "lat": "34.72501084892361", + "lng": "113.98248490572702", + "province": "河南省" + }, + { + "area": "郑州经济技术开发区", + "city": "郑州市", + "country": "中国", + "lat": "34.71287769303875", + "lng": "113.8323773363653", + "province": "河南省" + }, + { + "area": "郑州高新技术产业开发区", + "city": "郑州市", + "country": "中国", + "lat": "34.696418574588606", + "lng": "114.01676208805455", + "province": "河南省" + }, + { + "area": "郑州航空港经济综合实验区", + "city": "郑州市", + "country": "中国", + "lat": "34.52423568803379", + "lng": "113.82428126812607", + "province": "河南省" + }, + { + "area": "巩义市", + "city": "郑州市", + "country": "中国", + "lat": "34.754096888696935", + "lng": "113.02843100495258", + "province": "河南省" + }, + { + "area": "荥阳市", + "city": "郑州市", + "country": "中国", + "lat": "34.79381050034602", + "lng": "113.38942279956461", + "province": "河南省" + }, + { + "area": "新密市", + "city": "郑州市", + "country": "中国", + "lat": "34.54589798344474", + "lng": "113.39739094909922", + "province": "河南省" + }, + { + "area": "新郑市", + "city": "郑州市", + "country": "中国", + "lat": "34.40176637910559", + "lng": "113.74643447195358", + "province": "河南省" + }, + { + "area": "登封市", + "city": "郑州市", + "country": "中国", + "lat": "34.45969746171987", + "lng": "113.05642283345736", + "province": "河南省" + }, + { + "area": "", + "city": "开封市", + "country": "中国", + "lat": "34.80288581121172", + "lng": "114.31459258497121", + "province": "河南省" + }, + { + "area": "龙亭区", + "city": "开封市", + "country": "中国", + "lat": "34.82203561250629", + "lng": "114.36141316645679", + "province": "河南省" + }, + { + "area": "顺河回族区", + "city": "开封市", + "country": "中国", + "lat": "34.80224135555935", + "lng": "114.36739165911733", + "province": "河南省" + }, + { + "area": "鼓楼区", + "city": "开封市", + "country": "中国", + "lat": "34.79487425191384", + "lng": "114.3544048563596", + "province": "河南省" + }, + { + "area": "禹王台区", + "city": "开封市", + "country": "中国", + "lat": "34.78347210591688", + "lng": "114.35439775974605", + "province": "河南省" + }, + { + "area": "祥符区", + "city": "开封市", + "country": "中国", + "lat": "34.76273957222411", + "lng": "114.4475325479012", + "province": "河南省" + }, + { + "area": "杞县", + "city": "开封市", + "country": "中国", + "lat": "34.55485678068698", + "lng": "114.7895921047377", + "province": "河南省" + }, + { + "area": "通许县", + "city": "开封市", + "country": "中国", + "lat": "34.48677180265463", + "lng": "114.47343590592583", + "province": "河南省" + }, + { + "area": "尉氏县", + "city": "开封市", + "country": "中国", + "lat": "34.41722801035352", + "lng": "114.1995611508576", + "province": "河南省" + }, + { + "area": "兰考县", + "city": "开封市", + "country": "中国", + "lat": "34.828492897237666", + "lng": "114.8274607124941", + "province": "河南省" + }, + { + "area": "", + "city": "洛阳市", + "country": "中国", + "lat": "34.62426277921943", + "lng": "112.4594212983115", + "province": "河南省" + }, + { + "area": "老城区", + "city": "洛阳市", + "country": "中国", + "lat": "34.68960106349699", + "lng": "112.4765035657198", + "province": "河南省" + }, + { + "area": "西工区", + "city": "洛阳市", + "country": "中国", + "lat": "34.66676784751269", + "lng": "112.43439953731436", + "province": "河南省" + }, + { + "area": "瀍河回族区", + "city": "洛阳市", + "country": "中国", + "lat": "34.6854624213354", + "lng": "112.50660380708702", + "province": "河南省" + }, + { + "area": "涧西区", + "city": "洛阳市", + "country": "中国", + "lat": "34.66346897430892", + "lng": "112.40255200189966", + "province": "河南省" + }, + { + "area": "吉利区", + "city": "洛阳市", + "country": "中国", + "lat": "34.90701265711501", + "lng": "112.59547847119167", + "province": "河南省" + }, + { + "area": "洛龙区", + "city": "洛阳市", + "country": "中国", + "lat": "34.62470471302437", + "lng": "112.47046928828706", + "province": "河南省" + }, + { + "area": "孟津县", + "city": "洛阳市", + "country": "中国", + "lat": "34.83173157028531", + "lng": "112.45141766570924", + "province": "河南省" + }, + { + "area": "新安县", + "city": "洛阳市", + "country": "中国", + "lat": "34.73438332734371", + "lng": "112.14060970841214", + "province": "河南省" + }, + { + "area": "栾川县", + "city": "洛阳市", + "country": "中国", + "lat": "33.791822464323104", + "lng": "111.62242666650891", + "province": "河南省" + }, + { + "area": "嵩县", + "city": "洛阳市", + "country": "中国", + "lat": "34.14072155640602", + "lng": "112.09240816186609", + "province": "河南省" + }, + { + "area": "汝阳县", + "city": "洛阳市", + "country": "中国", + "lat": "34.15984336489338", + "lng": "112.47950327730925", + "province": "河南省" + }, + { + "area": "宜阳县", + "city": "洛阳市", + "country": "中国", + "lat": "34.54104694255354", + "lng": "112.17946537426293", + "province": "河南省" + }, + { + "area": "洛宁县", + "city": "洛阳市", + "country": "中国", + "lat": "34.39498456021476", + "lng": "111.65958740952347", + "province": "河南省" + }, + { + "area": "伊川县", + "city": "洛阳市", + "country": "中国", + "lat": "34.42764579642734", + "lng": "112.43240745501544", + "province": "河南省" + }, + { + "area": "洛阳高新技术产业开发区", + "city": "洛阳市", + "country": "中国", + "lat": "34.61429297993309", + "lng": "112.38490101727301", + "province": "河南省" + }, + { + "area": "偃师市", + "city": "洛阳市", + "country": "中国", + "lat": "34.733796624012776", + "lng": "112.79642141885469", + "province": "河南省" + }, + { + "area": "", + "city": "平顶山市", + "country": "中国", + "lat": "33.772050748691015", + "lng": "113.19952856052156", + "province": "河南省" + }, + { + "area": "新华区", + "city": "平顶山市", + "country": "中国", + "lat": "33.74365715164552", + "lng": "113.30043988964603", + "province": "河南省" + }, + { + "area": "卫东区", + "city": "平顶山市", + "country": "中国", + "lat": "33.74037565140009", + "lng": "113.3416111176099", + "province": "河南省" + }, + { + "area": "石龙区", + "city": "平顶山市", + "country": "中国", + "lat": "33.90475426839687", + "lng": "112.90545522640038", + "province": "河南省" + }, + { + "area": "湛河区", + "city": "平顶山市", + "country": "中国", + "lat": "33.685790171047444", + "lng": "113.25051467448745", + "province": "河南省" + }, + { + "area": "宝丰县", + "city": "平顶山市", + "country": "中国", + "lat": "33.874745598630774", + "lng": "113.06144723583577", + "province": "河南省" + }, + { + "area": "叶县", + "city": "平顶山市", + "country": "中国", + "lat": "33.632491674058336", + "lng": "113.36358241275624", + "province": "河南省" + }, + { + "area": "鲁山县", + "city": "平顶山市", + "country": "中国", + "lat": "33.74487886345235", + "lng": "112.91443396963372", + "province": "河南省" + }, + { + "area": "郏县", + "city": "平顶山市", + "country": "中国", + "lat": "33.977486289176724", + "lng": "113.21960622765287", + "province": "河南省" + }, + { + "area": "平顶山高新技术产业开发区", + "city": "平顶山市", + "country": "中国", + "lat": "33.738544518581435", + "lng": "113.39403784412212", + "province": "河南省" + }, + { + "area": "平顶山市城乡一体化示范区", + "city": "平顶山市", + "country": "中国", + "lat": "33.772050748691015", + "lng": "113.19952856052156", + "province": "河南省" + }, + { + "area": "舞钢市", + "city": "平顶山市", + "country": "中国", + "lat": "33.2994311053011", + "lng": "113.53141031593", + "province": "河南省" + }, + { + "area": "汝州市", + "city": "平顶山市", + "country": "中国", + "lat": "34.17276778855066", + "lng": "112.85054971566392", + "province": "河南省" + }, + { + "area": "", + "city": "安阳市", + "country": "中国", + "lat": "36.10594098401491", + "lng": "114.39950042177432", + "province": "河南省" + }, + { + "area": "文峰区", + "city": "安阳市", + "country": "中国", + "lat": "36.09683274813585", + "lng": "114.36337398772396", + "province": "河南省" + }, + { + "area": "北关区", + "city": "安阳市", + "country": "中国", + "lat": "36.11313160776512", + "lng": "114.36238189911874", + "province": "河南省" + }, + { + "area": "殷都区", + "city": "安阳市", + "country": "中国", + "lat": "36.11575825553694", + "lng": "114.30959755718298", + "province": "河南省" + }, + { + "area": "龙安区", + "city": "安阳市", + "country": "中国", + "lat": "36.08275278362011", + "lng": "114.30759316809856", + "province": "河南省" + }, + { + "area": "安阳县", + "city": "安阳市", + "country": "中国", + "lat": "36.218906964195526", + "lng": "114.23838187262405", + "province": "河南省" + }, + { + "area": "汤阴县", + "city": "安阳市", + "country": "中国", + "lat": "35.92764374022512", + "lng": "114.36340938096104", + "province": "河南省" + }, + { + "area": "滑县", + "city": "安阳市", + "country": "中国", + "lat": "35.58104540055751", + "lng": "114.52555316618987", + "province": "河南省" + }, + { + "area": "内黄县", + "city": "安阳市", + "country": "中国", + "lat": "35.97694966806135", + "lng": "114.90758875550918", + "province": "河南省" + }, + { + "area": "安阳高新技术产业开发区", + "city": "安阳市", + "country": "中国", + "lat": "36.0372119148796", + "lng": "114.37590804450468", + "province": "河南省" + }, + { + "area": "林州市", + "city": "安阳市", + "country": "中国", + "lat": "36.08885320844752", + "lng": "113.82559018908465", + "province": "河南省" + }, + { + "area": "", + "city": "鹤壁市", + "country": "中国", + "lat": "35.7523574114", + "lng": "114.30359364247649", + "province": "河南省" + }, + { + "area": "鹤山区", + "city": "鹤壁市", + "country": "中国", + "lat": "35.960280248227214", + "lng": "114.16955478241616", + "province": "河南省" + }, + { + "area": "山城区", + "city": "鹤壁市", + "country": "中国", + "lat": "35.90336961329157", + "lng": "114.19062058560844", + "province": "河南省" + }, + { + "area": "淇滨区", + "city": "鹤壁市", + "country": "中国", + "lat": "35.74695254628867", + "lng": "114.30559120443904", + "province": "河南省" + }, + { + "area": "浚县", + "city": "鹤壁市", + "country": "中国", + "lat": "35.68191730591282", + "lng": "114.55760785085516", + "province": "河南省" + }, + { + "area": "淇县", + "city": "鹤壁市", + "country": "中国", + "lat": "35.62727702033594", + "lng": "114.21548972449943", + "province": "河南省" + }, + { + "area": "鹤壁经济技术开发区", + "city": "鹤壁市", + "country": "中国", + "lat": "35.76650519237977", + "lng": "114.31626262474481", + "province": "河南省" + }, + { + "area": "", + "city": "新乡市", + "country": "中国", + "lat": "35.3096399303368", + "lng": "113.93360046733228", + "province": "河南省" + }, + { + "area": "红旗区", + "city": "新乡市", + "country": "中国", + "lat": "35.310135512691105", + "lng": "113.88141583415499", + "province": "河南省" + }, + { + "area": "卫滨区", + "city": "新乡市", + "country": "中国", + "lat": "35.308459209602056", + "lng": "113.87243879770213", + "province": "河南省" + }, + { + "area": "凤泉区", + "city": "新乡市", + "country": "中国", + "lat": "35.37566506057762", + "lng": "113.91245884715497", + "province": "河南省" + }, + { + "area": "牧野区", + "city": "新乡市", + "country": "中国", + "lat": "35.32102348649875", + "lng": "113.91551290622778", + "province": "河南省" + }, + { + "area": "新乡县", + "city": "新乡市", + "country": "中国", + "lat": "35.19656440899276", + "lng": "113.81159378076424", + "province": "河南省" + }, + { + "area": "获嘉县", + "city": "新乡市", + "country": "中国", + "lat": "35.2658092841611", + "lng": "113.66341666994346", + "province": "河南省" + }, + { + "area": "原阳县", + "city": "新乡市", + "country": "中国", + "lat": "35.07116386446907", + "lng": "113.94662374129375", + "province": "河南省" + }, + { + "area": "延津县", + "city": "新乡市", + "country": "中国", + "lat": "35.14780651050911", + "lng": "114.2115117582096", + "province": "河南省" + }, + { + "area": "封丘县", + "city": "新乡市", + "country": "中国", + "lat": "35.0468575316508", + "lng": "114.42560616803036", + "province": "河南省" + }, + { + "area": "新乡高新技术产业开发区", + "city": "新乡市", + "country": "中国", + "lat": "35.19656440899276", + "lng": "113.81159378076424", + "province": "河南省" + }, + { + "area": "新乡经济技术开发区", + "city": "新乡市", + "country": "中国", + "lat": "35.19656440899276", + "lng": "113.81159378076424", + "province": "河南省" + }, + { + "area": "新乡市平原城乡一体化示范区", + "city": "新乡市", + "country": "中国", + "lat": "35.19656440899276", + "lng": "113.81159378076424", + "province": "河南省" + }, + { + "area": "卫辉市", + "city": "新乡市", + "country": "中国", + "lat": "35.40406888214502", + "lng": "114.07160094452217", + "province": "河南省" + }, + { + "area": "辉县市", + "city": "新乡市", + "country": "中国", + "lat": "35.467957818375645", + "lng": "113.81157302990697", + "province": "河南省" + }, + { + "area": "长垣市", + "city": "新乡市", + "country": "中国", + "lat": "35.20719822456536", + "lng": "114.67560989145973", + "province": "河南省" + }, + { + "area": "", + "city": "焦作市", + "country": "中国", + "lat": "35.22096325403899", + "lng": "113.24854783457334", + "province": "河南省" + }, + { + "area": "解放区", + "city": "焦作市", + "country": "中国", + "lat": "35.24630980763301", + "lng": "113.23757179886913", + "province": "河南省" + }, + { + "area": "中站区", + "city": "焦作市", + "country": "中国", + "lat": "35.24261710359088", + "lng": "113.18944759642748", + "province": "河南省" + }, + { + "area": "马村区", + "city": "焦作市", + "country": "中国", + "lat": "35.26189444172316", + "lng": "113.32854400633956", + "province": "河南省" + }, + { + "area": "山阳区", + "city": "焦作市", + "country": "中国", + "lat": "35.22027235297734", + "lng": "113.26048370971498", + "province": "河南省" + }, + { + "area": "修武县", + "city": "焦作市", + "country": "中国", + "lat": "35.22932348259429", + "lng": "113.45458192871418", + "province": "河南省" + }, + { + "area": "博爱县", + "city": "焦作市", + "country": "中国", + "lat": "35.177308063756", + "lng": "113.07047799095812", + "province": "河南省" + }, + { + "area": "武陟县", + "city": "焦作市", + "country": "中国", + "lat": "35.105838449216684", + "lng": "113.4083958204103", + "province": "河南省" + }, + { + "area": "温县", + "city": "焦作市", + "country": "中国", + "lat": "34.94613549224693", + "lng": "113.08656906806671", + "province": "河南省" + }, + { + "area": "焦作城乡一体化示范区", + "city": "焦作市", + "country": "中国", + "lat": "35.18163393513226", + "lng": "113.25975302801317", + "province": "河南省" + }, + { + "area": "沁阳市", + "city": "焦作市", + "country": "中国", + "lat": "35.09378573234604", + "lng": "112.95751688155336", + "province": "河南省" + }, + { + "area": "孟州市", + "city": "焦作市", + "country": "中国", + "lat": "34.91359781788649", + "lng": "112.79739491253585", + "province": "河南省" + }, + { + "area": "", + "city": "濮阳市", + "country": "中国", + "lat": "35.76759302890629", + "lng": "115.03559747034215", + "province": "河南省" + }, + { + "area": "华龙区", + "city": "濮阳市", + "country": "中国", + "lat": "35.78363288453635", + "lng": "115.08041294409888", + "province": "河南省" + }, + { + "area": "清丰县", + "city": "濮阳市", + "country": "中国", + "lat": "35.89130816827738", + "lng": "115.11047186341266", + "province": "河南省" + }, + { + "area": "南乐县", + "city": "濮阳市", + "country": "中国", + "lat": "36.076030832875425", + "lng": "115.21138615694532", + "province": "河南省" + }, + { + "area": "范县", + "city": "濮阳市", + "country": "中国", + "lat": "35.85765508771859", + "lng": "115.51058621044251", + "province": "河南省" + }, + { + "area": "台前县", + "city": "濮阳市", + "country": "中国", + "lat": "35.97501271252134", + "lng": "115.87856816938043", + "province": "河南省" + }, + { + "area": "濮阳县", + "city": "濮阳市", + "country": "中国", + "lat": "35.717888889374784", + "lng": "115.03558408559006", + "province": "河南省" + }, + { + "area": "河南濮阳工业园区", + "city": "濮阳市", + "country": "中国", + "lat": "35.7556038140185", + "lng": "115.18890372596381", + "province": "河南省" + }, + { + "area": "濮阳经济技术开发区", + "city": "濮阳市", + "country": "中国", + "lat": "35.717888889374784", + "lng": "115.03558408559006", + "province": "河南省" + }, + { + "area": "", + "city": "许昌市", + "country": "中国", + "lat": "34.04143161161871", + "lng": "113.85847553685502", + "province": "河南省" + }, + { + "area": "魏都区", + "city": "许昌市", + "country": "中国", + "lat": "34.05325075250396", + "lng": "113.83754070660609", + "province": "河南省" + }, + { + "area": "建安区", + "city": "许昌市", + "country": "中国", + "lat": "34.13052547643305", + "lng": "113.82947787567075", + "province": "河南省" + }, + { + "area": "鄢陵县", + "city": "许昌市", + "country": "中国", + "lat": "34.108881697659704", + "lng": "114.18463769125088", + "province": "河南省" + }, + { + "area": "襄城县", + "city": "许昌市", + "country": "中国", + "lat": "33.85791182158849", + "lng": "113.51342013114277", + "province": "河南省" + }, + { + "area": "许昌经济技术开发区", + "city": "许昌市", + "country": "中国", + "lat": "34.00936709516072", + "lng": "113.81238860147947", + "province": "河南省" + }, + { + "area": "禹州市", + "city": "许昌市", + "country": "中国", + "lat": "34.14826652246125", + "lng": "113.49522360557991", + "province": "河南省" + }, + { + "area": "长葛市", + "city": "许昌市", + "country": "中国", + "lat": "34.201538754321476", + "lng": "113.82065759352936", + "province": "河南省" + }, + { + "area": "", + "city": "漯河市", + "country": "中国", + "lat": "33.5877107071022", + "lng": "114.02342077764726", + "province": "河南省" + }, + { + "area": "源汇区", + "city": "漯河市", + "country": "中国", + "lat": "33.57842326244745", + "lng": "113.99041352981918", + "province": "河南省" + }, + { + "area": "郾城区", + "city": "漯河市", + "country": "中国", + "lat": "33.59341588086467", + "lng": "114.0133938915449", + "province": "河南省" + }, + { + "area": "召陵区", + "city": "漯河市", + "country": "中国", + "lat": "33.592467538560506", + "lng": "114.1004665547965", + "province": "河南省" + }, + { + "area": "舞阳县", + "city": "漯河市", + "country": "中国", + "lat": "33.443577799934204", + "lng": "113.61549000488345", + "province": "河南省" + }, + { + "area": "临颍县", + "city": "漯河市", + "country": "中国", + "lat": "33.83269194792997", + "lng": "113.93757834379157", + "province": "河南省" + }, + { + "area": "漯河经济技术开发区", + "city": "漯河市", + "country": "中国", + "lat": "33.556497120368874", + "lng": "114.05640296275162", + "province": "河南省" + }, + { + "area": "", + "city": "三门峡市", + "country": "中国", + "lat": "34.778327249459984", + "lng": "111.2065332238741", + "province": "河南省" + }, + { + "area": "湖滨区", + "city": "三门峡市", + "country": "中国", + "lat": "34.77599679244391", + "lng": "111.19557389665238", + "province": "河南省" + }, + { + "area": "陕州区", + "city": "三门峡市", + "country": "中国", + "lat": "34.7269148015266", + "lng": "111.10945065249427", + "province": "河南省" + }, + { + "area": "渑池县", + "city": "三门峡市", + "country": "中国", + "lat": "34.77319704298588", + "lng": "111.76854234584539", + "province": "河南省" + }, + { + "area": "卢氏县", + "city": "三门峡市", + "country": "中国", + "lat": "34.059924845298816", + "lng": "111.0545640061735", + "province": "河南省" + }, + { + "area": "河南三门峡经济开发区", + "city": "三门峡市", + "country": "中国", + "lat": "34.787978962972694", + "lng": "111.19922496956713", + "province": "河南省" + }, + { + "area": "义马市", + "city": "三门峡市", + "country": "中国", + "lat": "34.75302800947253", + "lng": "111.88051478020587", + "province": "河南省" + }, + { + "area": "灵宝市", + "city": "三门峡市", + "country": "中国", + "lat": "34.52314262416382", + "lng": "110.90040831286163", + "province": "河南省" + }, + { + "area": "", + "city": "南阳市", + "country": "中国", + "lat": "32.99656220465144", + "lng": "112.53450131351325", + "province": "河南省" + }, + { + "area": "宛城区", + "city": "南阳市", + "country": "中国", + "lat": "33.00987004062646", + "lng": "112.546454166629", + "province": "河南省" + }, + { + "area": "卧龙区", + "city": "南阳市", + "country": "中国", + "lat": "32.99248379752679", + "lng": "112.54146183375731", + "province": "河南省" + }, + { + "area": "南召县", + "city": "南阳市", + "country": "中国", + "lat": "33.49618580462491", + "lng": "112.43542522254566", + "province": "河南省" + }, + { + "area": "方城县", + "city": "南阳市", + "country": "中国", + "lat": "33.26053945583183", + "lng": "113.01850275279521", + "province": "河南省" + }, + { + "area": "西峡县", + "city": "南阳市", + "country": "中国", + "lat": "33.31331611529193", + "lng": "111.48039809758171", + "province": "河南省" + }, + { + "area": "镇平县", + "city": "南阳市", + "country": "中国", + "lat": "33.0397185292249", + "lng": "112.24154448331042", + "province": "河南省" + }, + { + "area": "内乡县", + "city": "南阳市", + "country": "中国", + "lat": "33.05120310547566", + "lng": "111.8554252869733", + "province": "河南省" + }, + { + "area": "淅川县", + "city": "南阳市", + "country": "中国", + "lat": "33.14418526002652", + "lng": "111.49743203615358", + "province": "河南省" + }, + { + "area": "社旗县", + "city": "南阳市", + "country": "中国", + "lat": "33.06223668593527", + "lng": "112.95449345469842", + "province": "河南省" + }, + { + "area": "唐河县", + "city": "南阳市", + "country": "中国", + "lat": "32.687720660005475", + "lng": "112.81342436588645", + "province": "河南省" + }, + { + "area": "新野县", + "city": "南阳市", + "country": "中国", + "lat": "32.52663177881783", + "lng": "112.36654962384021", + "province": "河南省" + }, + { + "area": "桐柏县", + "city": "南阳市", + "country": "中国", + "lat": "32.38513075495586", + "lng": "113.43447273105946", + "province": "河南省" + }, + { + "area": "南阳高新技术产业开发区", + "city": "南阳市", + "country": "中国", + "lat": "33.03702617789907", + "lng": "112.54230992398928", + "province": "河南省" + }, + { + "area": "南阳市城乡一体化示范区", + "city": "南阳市", + "country": "中国", + "lat": "32.98118040780151", + "lng": "112.58810769482118", + "province": "河南省" + }, + { + "area": "邓州市", + "city": "南阳市", + "country": "中国", + "lat": "32.69391743997009", + "lng": "112.09342010302309", + "province": "河南省" + }, + { + "area": "", + "city": "商丘市", + "country": "中国", + "lat": "34.4202016658586", + "lng": "115.66244933826238", + "province": "河南省" + }, + { + "area": "梁园区", + "city": "商丘市", + "country": "中国", + "lat": "34.44947124629416", + "lng": "115.6206020455717", + "province": "河南省" + }, + { + "area": "睢阳区", + "city": "商丘市", + "country": "中国", + "lat": "34.39415192047936", + "lng": "115.65947594702435", + "province": "河南省" + }, + { + "area": "民权县", + "city": "商丘市", + "country": "中国", + "lat": "34.652478726537026", + "lng": "115.15457605886661", + "province": "河南省" + }, + { + "area": "睢县", + "city": "商丘市", + "country": "中国", + "lat": "34.451616965408846", + "lng": "115.0784108906088", + "province": "河南省" + }, + { + "area": "宁陵县", + "city": "商丘市", + "country": "中国", + "lat": "34.46663402766001", + "lng": "115.32041843737164", + "province": "河南省" + }, + { + "area": "柘城县", + "city": "商丘市", + "country": "中国", + "lat": "34.09736021241513", + "lng": "115.31243456749063", + "province": "河南省" + }, + { + "area": "虞城县", + "city": "商丘市", + "country": "中国", + "lat": "34.405331502097134", + "lng": "115.83447295698157", + "province": "河南省" + }, + { + "area": "夏邑县", + "city": "商丘市", + "country": "中国", + "lat": "34.2435234723781", + "lng": "116.1375123682284", + "province": "河南省" + }, + { + "area": "豫东综合物流产业聚集区", + "city": "商丘市", + "country": "中国", + "lat": "34.390500970970464", + "lng": "115.8224468021362", + "province": "河南省" + }, + { + "area": "河南商丘经济开发区", + "city": "商丘市", + "country": "中国", + "lat": "34.40773703021429", + "lng": "115.69828597895523", + "province": "河南省" + }, + { + "area": "永城市", + "city": "商丘市", + "country": "中国", + "lat": "33.93480147585089", + "lng": "116.45556614759954", + "province": "河南省" + }, + { + "area": "", + "city": "信阳市", + "country": "中国", + "lat": "32.15301454753105", + "lng": "114.09748283304512", + "province": "河南省" + }, + { + "area": "浉河区", + "city": "信阳市", + "country": "中国", + "lat": "32.12255415688444", + "lng": "114.06558130946927", + "province": "河南省" + }, + { + "area": "平桥区", + "city": "信阳市", + "country": "中国", + "lat": "32.10732538610979", + "lng": "114.1324074241537", + "province": "河南省" + }, + { + "area": "罗山县", + "city": "信阳市", + "country": "中国", + "lat": "32.20915045183822", + "lng": "114.51952993791492", + "province": "河南省" + }, + { + "area": "光山县", + "city": "信阳市", + "country": "中国", + "lat": "32.01590687956846", + "lng": "114.92553303688484", + "province": "河南省" + }, + { + "area": "新县", + "city": "信阳市", + "country": "中国", + "lat": "31.649738468474663", + "lng": "114.8855247552342", + "province": "河南省" + }, + { + "area": "商城县", + "city": "信阳市", + "country": "中国", + "lat": "31.804345366902695", + "lng": "115.41351334076217", + "province": "河南省" + }, + { + "area": "固始县", + "city": "信阳市", + "country": "中国", + "lat": "32.17417437962212", + "lng": "115.66048788818134", + "province": "河南省" + }, + { + "area": "潢川县", + "city": "信阳市", + "country": "中国", + "lat": "32.137530716413536", + "lng": "115.05847075405106", + "province": "河南省" + }, + { + "area": "淮滨县", + "city": "信阳市", + "country": "中国", + "lat": "32.479469756662695", + "lng": "115.42643896891468", + "province": "河南省" + }, + { + "area": "息县", + "city": "信阳市", + "country": "中国", + "lat": "32.34895551171522", + "lng": "114.74745313224791", + "province": "河南省" + }, + { + "area": "信阳高新技术产业开发区", + "city": "信阳市", + "country": "中国", + "lat": "32.139913710889076", + "lng": "114.20576592667611", + "province": "河南省" + }, + { + "area": "", + "city": "周口市", + "country": "中国", + "lat": "33.6318288757022", + "lng": "114.70348251482332", + "province": "河南省" + }, + { + "area": "川汇区", + "city": "周口市", + "country": "中国", + "lat": "33.65299710281438", + "lng": "114.6576017405623", + "province": "河南省" + }, + { + "area": "淮阳区", + "city": "周口市", + "country": "中国", + "lat": "33.737347183458404", + "lng": "114.89258615518705", + "province": "河南省" + }, + { + "area": "扶沟县", + "city": "周口市", + "country": "中国", + "lat": "34.065906253969246", + "lng": "114.4015098413696", + "province": "河南省" + }, + { + "area": "西华县", + "city": "周口市", + "country": "中国", + "lat": "33.77321533492214", + "lng": "114.53559667094417", + "province": "河南省" + }, + { + "area": "商水县", + "city": "周口市", + "country": "中国", + "lat": "33.54887747535332", + "lng": "114.61841594743659", + "province": "河南省" + }, + { + "area": "沈丘县", + "city": "周口市", + "country": "中国", + "lat": "33.41569109405895", + "lng": "115.10545545595329", + "province": "河南省" + }, + { + "area": "郸城县", + "city": "周口市", + "country": "中国", + "lat": "33.65082795504896", + "lng": "115.18347760136133", + "province": "河南省" + }, + { + "area": "太康县", + "city": "周口市", + "country": "中国", + "lat": "34.07003838224778", + "lng": "114.84438388999658", + "province": "河南省" + }, + { + "area": "鹿邑县", + "city": "周口市", + "country": "中国", + "lat": "33.8671732903174", + "lng": "115.49058525860173", + "province": "河南省" + }, + { + "area": "河南周口经济开发区", + "city": "周口市", + "country": "中国", + "lat": "33.59242724092174", + "lng": "114.68413166668014", + "province": "河南省" + }, + { + "area": "项城市", + "city": "周口市", + "country": "中国", + "lat": "33.473007441429914", + "lng": "114.88151400079326", + "province": "河南省" + }, + { + "area": "", + "city": "驻马店市", + "country": "中国", + "lat": "33.01784241674367", + "lng": "114.02847078173271", + "province": "河南省" + }, + { + "area": "驿城区", + "city": "驻马店市", + "country": "中国", + "lat": "32.979519871981815", + "lng": "114.00038696674372", + "province": "河南省" + }, + { + "area": "西平县", + "city": "驻马店市", + "country": "中国", + "lat": "33.39386099752538", + "lng": "114.02747357278608", + "province": "河南省" + }, + { + "area": "上蔡县", + "city": "驻马店市", + "country": "中国", + "lat": "33.268511215884224", + "lng": "114.27048686239792", + "province": "河南省" + }, + { + "area": "平舆县", + "city": "驻马店市", + "country": "中国", + "lat": "32.96798240043784", + "lng": "114.62542865923078", + "province": "河南省" + }, + { + "area": "正阳县", + "city": "驻马店市", + "country": "中国", + "lat": "32.6116410772727", + "lng": "114.39949655906064", + "province": "河南省" + }, + { + "area": "确山县", + "city": "驻马店市", + "country": "中国", + "lat": "32.80817569298386", + "lng": "114.0324950107563", + "province": "河南省" + }, + { + "area": "泌阳县", + "city": "驻马店市", + "country": "中国", + "lat": "32.729730650434554", + "lng": "113.33355798837405", + "province": "河南省" + }, + { + "area": "汝南县", + "city": "驻马店市", + "country": "中国", + "lat": "33.01314088199241", + "lng": "114.36940889397054", + "province": "河南省" + }, + { + "area": "遂平县", + "city": "驻马店市", + "country": "中国", + "lat": "33.151971399578684", + "lng": "114.01944146389916", + "province": "河南省" + }, + { + "area": "新蔡县", + "city": "驻马店市", + "country": "中国", + "lat": "32.75526886730577", + "lng": "114.9924692838248", + "province": "河南省" + }, + { + "area": "河南驻马店经济开发区", + "city": "驻马店市", + "country": "中国", + "lat": "33.168145183810275", + "lng": "114.08186561209304", + "province": "河南省" + }, + { + "area": "", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "34.771712921931496", + "lng": "113.75938408486323", + "province": "河南省" + }, + { + "area": "济源市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "35.111359097363554", + "lng": "112.58830020169196", + "province": "河南省" + }, + { + "area": "", + "city": "武汉市", + "country": "中国", + "lat": "30.598466736400987", + "lng": "114.31158155473231", + "province": "湖北省" + }, + { + "area": "江岸区", + "city": "武汉市", + "country": "中国", + "lat": "30.605402797562395", + "lng": "114.31657918760652", + "province": "湖北省" + }, + { + "area": "江汉区", + "city": "武汉市", + "country": "中国", + "lat": "30.6072822768268", + "lng": "114.27750613182234", + "province": "湖北省" + }, + { + "area": "硚口区", + "city": "武汉市", + "country": "中国", + "lat": "30.587584340775596", + "lng": "114.2214603120715", + "province": "湖北省" + }, + { + "area": "汉阳区", + "city": "武汉市", + "country": "中国", + "lat": "30.56005202744345", + "lng": "114.22544555463595", + "province": "湖北省" + }, + { + "area": "武昌区", + "city": "武汉市", + "country": "中国", + "lat": "30.559566983522483", + "lng": "114.32254851755089", + "province": "湖北省" + }, + { + "area": "青山区", + "city": "武汉市", + "country": "中国", + "lat": "30.64659307554314", + "lng": "114.39149265696673", + "province": "湖北省" + }, + { + "area": "洪山区", + "city": "武汉市", + "country": "中国", + "lat": "30.50633395680806", + "lng": "114.35045554601551", + "province": "湖北省" + }, + { + "area": "东西湖区", + "city": "武汉市", + "country": "中国", + "lat": "30.625919818109203", + "lng": "114.14345873785965", + "province": "湖北省" + }, + { + "area": "汉南区", + "city": "武汉市", + "country": "中国", + "lat": "30.314809120144606", + "lng": "114.09151485055902", + "province": "湖北省" + }, + { + "area": "蔡甸区", + "city": "武汉市", + "country": "中国", + "lat": "30.588113621855484", + "lng": "114.03547963081321", + "province": "湖北省" + }, + { + "area": "江夏区", + "city": "武汉市", + "country": "中国", + "lat": "30.38156421818202", + "lng": "114.32855126446022", + "province": "湖北省" + }, + { + "area": "黄陂区", + "city": "武汉市", + "country": "中国", + "lat": "30.88753376783457", + "lng": "114.38245399675588", + "province": "湖北省" + }, + { + "area": "新洲区", + "city": "武汉市", + "country": "中国", + "lat": "30.847243870522625", + "lng": "114.80754339289633", + "province": "湖北省" + }, + { + "area": "", + "city": "黄石市", + "country": "中国", + "lat": "30.205207848941598", + "lng": "115.04553290894361", + "province": "湖北省" + }, + { + "area": "黄石港区", + "city": "黄石市", + "country": "中国", + "lat": "30.229052639992027", + "lng": "115.07241748607679", + "province": "湖北省" + }, + { + "area": "西塞山区", + "city": "黄石市", + "country": "中国", + "lat": "30.21069518411846", + "lng": "115.11648143744387", + "province": "湖北省" + }, + { + "area": "下陆区", + "city": "黄石市", + "country": "中国", + "lat": "30.180046155273466", + "lng": "114.96741590247372", + "province": "湖北省" + }, + { + "area": "铁山区", + "city": "黄石市", + "country": "中国", + "lat": "30.212250832586538", + "lng": "114.90757141821284", + "province": "湖北省" + }, + { + "area": "阳新县", + "city": "黄石市", + "country": "中国", + "lat": "29.836541808086142", + "lng": "115.22142677197253", + "province": "湖北省" + }, + { + "area": "大冶市", + "city": "黄石市", + "country": "中国", + "lat": "30.10166780010339", + "lng": "114.98643626401979", + "province": "湖北省" + }, + { + "area": "", + "city": "十堰市", + "country": "中国", + "lat": "32.63506185840116", + "lng": "110.80452956069568", + "province": "湖北省" + }, + { + "area": "茅箭区", + "city": "十堰市", + "country": "中国", + "lat": "32.597286519103754", + "lng": "110.81958031019317", + "province": "湖北省" + }, + { + "area": "张湾区", + "city": "十堰市", + "country": "中国", + "lat": "32.65839954547973", + "lng": "110.77542410285021", + "province": "湖北省" + }, + { + "area": "郧阳区", + "city": "十堰市", + "country": "中国", + "lat": "32.84059241303827", + "lng": "110.81857654361632", + "province": "湖北省" + }, + { + "area": "郧西县", + "city": "十堰市", + "country": "中国", + "lat": "32.99916700753649", + "lng": "110.43247261847287", + "province": "湖北省" + }, + { + "area": "竹山县", + "city": "十堰市", + "country": "中国", + "lat": "32.2303040603762", + "lng": "110.23558156764314", + "province": "湖北省" + }, + { + "area": "竹溪县", + "city": "十堰市", + "country": "中国", + "lat": "32.32412004885334", + "lng": "109.72154249888798", + "province": "湖北省" + }, + { + "area": "房县", + "city": "十堰市", + "country": "中国", + "lat": "32.06168496454368", + "lng": "110.74746155910506", + "province": "湖北省" + }, + { + "area": "丹江口市", + "city": "十堰市", + "country": "中国", + "lat": "32.54625268850125", + "lng": "111.5195320584795", + "province": "湖北省" + }, + { + "area": "", + "city": "宜昌市", + "country": "中国", + "lat": "30.697446484492378", + "lng": "111.29254921035434", + "province": "湖北省" + }, + { + "area": "西陵区", + "city": "宜昌市", + "country": "中国", + "lat": "30.716749346598352", + "lng": "111.29255972052881", + "province": "湖北省" + }, + { + "area": "伍家岗区", + "city": "宜昌市", + "country": "中国", + "lat": "30.650737335260395", + "lng": "111.3674222559666", + "province": "湖北省" + }, + { + "area": "点军区", + "city": "宜昌市", + "country": "中国", + "lat": "30.699329513880368", + "lng": "111.27447135094933", + "province": "湖北省" + }, + { + "area": "猇亭区", + "city": "宜昌市", + "country": "中国", + "lat": "30.53646598270678", + "lng": "111.44157378259324", + "province": "湖北省" + }, + { + "area": "夷陵区", + "city": "宜昌市", + "country": "中国", + "lat": "30.774833327298143", + "lng": "111.33252973436471", + "province": "湖北省" + }, + { + "area": "远安县", + "city": "宜昌市", + "country": "中国", + "lat": "31.06662784157842", + "lng": "111.64653035927485", + "province": "湖北省" + }, + { + "area": "兴山县", + "city": "宜昌市", + "country": "中国", + "lat": "31.35446351771565", + "lng": "110.75344607041252", + "province": "湖北省" + }, + { + "area": "秭归县", + "city": "宜昌市", + "country": "中国", + "lat": "30.83193164321606", + "lng": "110.98444937467816", + "province": "湖北省" + }, + { + "area": "长阳土家族自治县", + "city": "宜昌市", + "country": "中国", + "lat": "30.478645783055725", + "lng": "111.21350712887026", + "province": "湖北省" + }, + { + "area": "五峰土家族自治县", + "city": "宜昌市", + "country": "中国", + "lat": "30.171156151026448", + "lng": "111.05258063743803", + "province": "湖北省" + }, + { + "area": "宜都市", + "city": "宜昌市", + "country": "中国", + "lat": "30.38440427431352", + "lng": "111.456515837124", + "province": "湖北省" + }, + { + "area": "当阳市", + "city": "宜昌市", + "country": "中国", + "lat": "30.82698905028075", + "lng": "111.79456850223322", + "province": "湖北省" + }, + { + "area": "枝江市", + "city": "宜昌市", + "country": "中国", + "lat": "30.431730676997983", + "lng": "111.766539753372", + "province": "湖北省" + }, + { + "area": "", + "city": "襄阳市", + "country": "中国", + "lat": "32.014796804669224", + "lng": "112.12853720100244", + "province": "湖北省" + }, + { + "area": "襄城区", + "city": "襄阳市", + "country": "中国", + "lat": "32.01617461814126", + "lng": "112.14057206941128", + "province": "湖北省" + }, + { + "area": "樊城区", + "city": "襄阳市", + "country": "中国", + "lat": "32.05057237469156", + "lng": "112.14259891613344", + "province": "湖北省" + }, + { + "area": "襄州区", + "city": "襄阳市", + "country": "中国", + "lat": "32.093375783399296", + "lng": "112.21843413677742", + "province": "湖北省" + }, + { + "area": "南漳县", + "city": "襄阳市", + "country": "中国", + "lat": "31.78112970677853", + "lng": "111.84538618391599", + "province": "湖北省" + }, + { + "area": "谷城县", + "city": "襄阳市", + "country": "中国", + "lat": "32.268983068947186", + "lng": "111.65957564172129", + "province": "湖北省" + }, + { + "area": "保康县", + "city": "襄阳市", + "country": "中国", + "lat": "31.883847150262206", + "lng": "111.26744121202825", + "province": "湖北省" + }, + { + "area": "老河口市", + "city": "襄阳市", + "country": "中国", + "lat": "32.39245958527059", + "lng": "111.6815563690755", + "province": "湖北省" + }, + { + "area": "枣阳市", + "city": "襄阳市", + "country": "中国", + "lat": "32.13472991431875", + "lng": "112.77847075950989", + "province": "湖北省" + }, + { + "area": "宜城市", + "city": "襄阳市", + "country": "中国", + "lat": "31.725469730972", + "lng": "112.2646114416873", + "province": "湖北省" + }, + { + "area": "", + "city": "鄂州市", + "country": "中国", + "lat": "30.39657217331699", + "lng": "114.90160738827099", + "province": "湖北省" + }, + { + "area": "梁子湖区", + "city": "鄂州市", + "country": "中国", + "lat": "30.105906774051476", + "lng": "114.69150657525594", + "province": "湖北省" + }, + { + "area": "华容区", + "city": "鄂州市", + "country": "中国", + "lat": "30.540599527838044", + "lng": "114.73642634228239", + "province": "湖北省" + }, + { + "area": "鄂城区", + "city": "鄂州市", + "country": "中国", + "lat": "30.406389456291524", + "lng": "114.89859968176249", + "province": "湖北省" + }, + { + "area": "", + "city": "荆门市", + "country": "中国", + "lat": "31.041732575569622", + "lng": "112.20639298023002", + "province": "湖北省" + }, + { + "area": "东宝区", + "city": "荆门市", + "country": "中国", + "lat": "31.0584292713654", + "lng": "112.20838820659824", + "province": "湖北省" + }, + { + "area": "掇刀区", + "city": "荆门市", + "country": "中国", + "lat": "30.979910859803837", + "lng": "112.21442769420291", + "province": "湖北省" + }, + { + "area": "沙洋县", + "city": "荆门市", + "country": "中国", + "lat": "30.715314748830732", + "lng": "112.59548493899133", + "province": "湖北省" + }, + { + "area": "钟祥市", + "city": "荆门市", + "country": "中国", + "lat": "31.174029854963006", + "lng": "112.59447102156223", + "province": "湖北省" + }, + { + "area": "京山市", + "city": "荆门市", + "country": "中国", + "lat": "31.02433060119255", + "lng": "113.12654806495773", + "province": "湖北省" + }, + { + "area": "", + "city": "孝感市", + "country": "中国", + "lat": "30.930689227018295", + "lng": "113.92251007733665", + "province": "湖北省" + }, + { + "area": "孝南区", + "city": "孝感市", + "country": "中国", + "lat": "30.922977925048983", + "lng": "113.91748989699413", + "province": "湖北省" + }, + { + "area": "孝昌县", + "city": "孝感市", + "country": "中国", + "lat": "31.264540493061723", + "lng": "114.00440859068135", + "province": "湖北省" + }, + { + "area": "大悟县", + "city": "孝感市", + "country": "中国", + "lat": "31.567219806641464", + "lng": "114.1334125381888", + "province": "湖北省" + }, + { + "area": "云梦县", + "city": "孝感市", + "country": "中国", + "lat": "31.027218220752015", + "lng": "113.7594122018257", + "province": "湖北省" + }, + { + "area": "应城市", + "city": "孝感市", + "country": "中国", + "lat": "30.933976509913286", + "lng": "113.5795673963533", + "province": "湖北省" + }, + { + "area": "安陆市", + "city": "孝感市", + "country": "中国", + "lat": "31.261414994285975", + "lng": "113.69558292415309", + "province": "湖北省" + }, + { + "area": "汉川市", + "city": "孝感市", + "country": "中国", + "lat": "30.666913578820797", + "lng": "113.845549010397", + "province": "湖北省" + }, + { + "area": "", + "city": "荆州市", + "country": "中国", + "lat": "30.340842107742912", + "lng": "112.24552262926137", + "province": "湖北省" + }, + { + "area": "沙市区", + "city": "荆州市", + "country": "中国", + "lat": "30.316571904872184", + "lng": "112.26157741482734", + "province": "湖北省" + }, + { + "area": "荆州区", + "city": "荆州市", + "country": "中国", + "lat": "30.358989490775382", + "lng": "112.19641397381135", + "province": "湖北省" + }, + { + "area": "公安县", + "city": "荆州市", + "country": "中国", + "lat": "30.064400686806085", + "lng": "112.23650157583852", + "province": "湖北省" + }, + { + "area": "监利县", + "city": "荆州市", + "country": "中国", + "lat": "29.845735162836444", + "lng": "112.91142023009189", + "province": "湖北省" + }, + { + "area": "江陵县", + "city": "荆州市", + "country": "中国", + "lat": "30.048042984592485", + "lng": "112.43145201727503", + "province": "湖北省" + }, + { + "area": "荆州经济技术开发区", + "city": "荆州市", + "country": "中国", + "lat": "30.358989490775382", + "lng": "112.19641397381135", + "province": "湖北省" + }, + { + "area": "石首市", + "city": "荆州市", + "country": "中国", + "lat": "29.72703397740694", + "lng": "112.43141984370993", + "province": "湖北省" + }, + { + "area": "洪湖市", + "city": "荆州市", + "country": "中国", + "lat": "29.83277032976022", + "lng": "113.48255290195605", + "province": "湖北省" + }, + { + "area": "松滋市", + "city": "荆州市", + "country": "中国", + "lat": "30.17534223514285", + "lng": "111.773580312637", + "province": "湖北省" + }, + { + "area": "", + "city": "黄冈市", + "country": "中国", + "lat": "30.4593588576181", + "lng": "114.87849048410779", + "province": "湖北省" + }, + { + "area": "黄州区", + "city": "黄冈市", + "country": "中国", + "lat": "30.440224145145685", + "lng": "114.88653238452474", + "province": "湖北省" + }, + { + "area": "团风县", + "city": "黄冈市", + "country": "中国", + "lat": "30.64936776721529", + "lng": "114.8785243502255", + "province": "湖北省" + }, + { + "area": "红安县", + "city": "黄冈市", + "country": "中国", + "lat": "31.294296714037316", + "lng": "114.62442561129834", + "province": "湖北省" + }, + { + "area": "罗田县", + "city": "黄冈市", + "country": "中国", + "lat": "30.7889104956853", + "lng": "115.40554716749966", + "province": "湖北省" + }, + { + "area": "英山县", + "city": "黄冈市", + "country": "中国", + "lat": "30.74135008408465", + "lng": "115.6874216026259", + "province": "湖北省" + }, + { + "area": "浠水县", + "city": "黄冈市", + "country": "中国", + "lat": "30.457460842265274", + "lng": "115.2715690328918", + "province": "湖北省" + }, + { + "area": "蕲春县", + "city": "黄冈市", + "country": "中国", + "lat": "30.23253549973421", + "lng": "115.4423985340966", + "province": "湖北省" + }, + { + "area": "黄梅县", + "city": "黄冈市", + "country": "中国", + "lat": "30.076605056821283", + "lng": "115.95046198476884", + "province": "湖北省" + }, + { + "area": "龙感湖管理区", + "city": "黄冈市", + "country": "中国", + "lat": "29.88030821902575", + "lng": "116.00984310763775", + "province": "湖北省" + }, + { + "area": "麻城市", + "city": "黄冈市", + "country": "中国", + "lat": "31.176995837411464", + "lng": "115.01656174777186", + "province": "湖北省" + }, + { + "area": "武穴市", + "city": "黄冈市", + "country": "中国", + "lat": "29.850441430483002", + "lng": "115.56739216105213", + "province": "湖北省" + }, + { + "area": "", + "city": "咸宁市", + "country": "中国", + "lat": "29.847055947646492", + "lng": "114.32851909026844", + "province": "湖北省" + }, + { + "area": "咸安区", + "city": "咸宁市", + "country": "中国", + "lat": "29.85815391515437", + "lng": "114.30456990605815", + "province": "湖北省" + }, + { + "area": "嘉鱼县", + "city": "咸宁市", + "country": "中国", + "lat": "29.976353520898183", + "lng": "113.94557046335528", + "province": "湖北省" + }, + { + "area": "通城县", + "city": "咸宁市", + "country": "中国", + "lat": "29.250857930222462", + "lng": "113.82356790903289", + "province": "湖北省" + }, + { + "area": "崇阳县", + "city": "咸宁市", + "country": "中国", + "lat": "29.561333782271227", + "lng": "114.04656290943393", + "province": "湖北省" + }, + { + "area": "通山县", + "city": "咸宁市", + "country": "中国", + "lat": "29.61263433805842", + "lng": "114.48939330026687", + "province": "湖北省" + }, + { + "area": "赤壁市", + "city": "咸宁市", + "country": "中国", + "lat": "29.73066599752579", + "lng": "113.90643686179263", + "province": "湖北省" + }, + { + "area": "", + "city": "随州市", + "country": "中国", + "lat": "31.6965167723283", + "lng": "113.38945001822157", + "province": "湖北省" + }, + { + "area": "曾都区", + "city": "随州市", + "country": "中国", + "lat": "31.722122861270798", + "lng": "113.37751333460498", + "province": "湖北省" + }, + { + "area": "随县", + "city": "随州市", + "country": "中国", + "lat": "31.85997167825831", + "lng": "113.30645835690179", + "province": "湖北省" + }, + { + "area": "广水市", + "city": "随州市", + "country": "中国", + "lat": "31.6224760380074", + "lng": "113.83259337884046", + "province": "湖北省" + }, + { + "area": "", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "30.277939575301094", + "lng": "109.49459261857503", + "province": "湖北省" + }, + { + "area": "恩施市", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "30.30103714374126", + "lng": "109.4865502690053", + "province": "湖北省" + }, + { + "area": "利川市", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "30.297203443679802", + "lng": "108.94248057755993", + "province": "湖北省" + }, + { + "area": "建始县", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "30.60790702631939", + "lng": "109.72855610898769", + "province": "湖北省" + }, + { + "area": "巴东县", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "31.048064248959722", + "lng": "110.34757529184422", + "province": "湖北省" + }, + { + "area": "宣恩县", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "29.992603922080246", + "lng": "109.49756797282649", + "province": "湖北省" + }, + { + "area": "咸丰县", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "29.671077652357877", + "lng": "109.14660773562142", + "province": "湖北省" + }, + { + "area": "来凤县", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "29.499443572607333", + "lng": "109.413494841531", + "province": "湖北省" + }, + { + "area": "鹤峰县", + "city": "恩施土家族苗族自治州", + "country": "中国", + "lat": "29.89611648340303", + "lng": "110.04042423300965", + "province": "湖北省" + }, + { + "area": "", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "30.551600064658352", + "lng": "114.34844073658718", + "province": "湖北省" + }, + { + "area": "仙桃市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "30.551600064658352", + "lng": "114.34844073658718", + "province": "湖北省" + }, + { + "area": "潜江市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "30.551600064658352", + "lng": "114.34844073658718", + "province": "湖北省" + }, + { + "area": "天门市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "30.551600064658352", + "lng": "114.34844073658718", + "province": "湖北省" + }, + { + "area": "神农架林区", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "30.551600064658352", + "lng": "114.34844073658718", + "province": "湖北省" + }, + { + "area": "", + "city": "长沙市", + "country": "中国", + "lat": "28.23488939994364", + "lng": "112.94547319535287", + "province": "湖南省" + }, + { + "area": "芙蓉区", + "city": "长沙市", + "country": "中国", + "lat": "28.191913247304726", + "lng": "113.03940774487253", + "province": "湖南省" + }, + { + "area": "天心区", + "city": "长沙市", + "country": "中国", + "lat": "28.11821121744063", + "lng": "112.99659225851735", + "province": "湖南省" + }, + { + "area": "岳麓区", + "city": "长沙市", + "country": "中国", + "lat": "28.241488836472605", + "lng": "112.93744764409885", + "province": "湖南省" + }, + { + "area": "开福区", + "city": "长沙市", + "country": "中国", + "lat": "28.261378687684147", + "lng": "112.99258491763867", + "province": "湖南省" + }, + { + "area": "雨花区", + "city": "长沙市", + "country": "中国", + "lat": "28.142232711654117", + "lng": "113.04242155985752", + "province": "湖南省" + }, + { + "area": "望城区", + "city": "长沙市", + "country": "中国", + "lat": "28.367403020376223", + "lng": "112.8244661431963", + "province": "湖南省" + }, + { + "area": "长沙县", + "city": "长沙市", + "country": "中国", + "lat": "28.251818487944462", + "lng": "113.08755916595523", + "province": "湖南省" + }, + { + "area": "浏阳市", + "city": "长沙市", + "country": "中国", + "lat": "28.169832216070507", + "lng": "113.64939823850789", + "province": "湖南省" + }, + { + "area": "宁乡市", + "city": "长沙市", + "country": "中国", + "lat": "28.284104536209348", + "lng": "112.55840691564445", + "province": "湖南省" + }, + { + "area": "", + "city": "株洲市", + "country": "中国", + "lat": "27.833567639016444", + "lng": "113.14047079776427", + "province": "湖南省" + }, + { + "area": "荷塘区", + "city": "株洲市", + "country": "中国", + "lat": "27.862155809140553", + "lng": "113.18045222006695", + "province": "湖南省" + }, + { + "area": "芦淞区", + "city": "株洲市", + "country": "中国", + "lat": "27.791508825947016", + "lng": "113.15841867235604", + "province": "湖南省" + }, + { + "area": "石峰区", + "city": "株洲市", + "country": "中国", + "lat": "27.880705165594822", + "lng": "113.12456791566528", + "province": "湖南省" + }, + { + "area": "天元区", + "city": "株洲市", + "country": "中国", + "lat": "27.8330835194845", + "lng": "113.08954055841794", + "province": "湖南省" + }, + { + "area": "渌口区", + "city": "株洲市", + "country": "中国", + "lat": "27.704322804857117", + "lng": "113.15042671772805", + "province": "湖南省" + }, + { + "area": "攸县", + "city": "株洲市", + "country": "中国", + "lat": "27.00577156521266", + "lng": "113.3515783416946", + "province": "湖南省" + }, + { + "area": "茶陵县", + "city": "株洲市", + "country": "中国", + "lat": "26.78358911035979", + "lng": "113.54547165714293", + "province": "湖南省" + }, + { + "area": "炎陵县", + "city": "株洲市", + "country": "中国", + "lat": "26.496060691598743", + "lng": "113.77941879831802", + "province": "湖南省" + }, + { + "area": "云龙示范区", + "city": "株洲市", + "country": "中国", + "lat": "27.886292846192816", + "lng": "113.14834273877614", + "province": "湖南省" + }, + { + "area": "醴陵市", + "city": "株洲市", + "country": "中国", + "lat": "27.65232514995133", + "lng": "113.50348315083997", + "province": "湖南省" + }, + { + "area": "", + "city": "湘潭市", + "country": "中国", + "lat": "27.835702227135585", + "lng": "112.95046418076468", + "province": "湖南省" + }, + { + "area": "雨湖区", + "city": "湘潭市", + "country": "中国", + "lat": "27.862466785110627", + "lng": "112.91344959206882", + "province": "湖南省" + }, + { + "area": "岳塘区", + "city": "湘潭市", + "country": "中国", + "lat": "27.87772050636392", + "lng": "112.97558942654825", + "province": "湖南省" + }, + { + "area": "湘潭县", + "city": "湘潭市", + "country": "中国", + "lat": "27.784982534656113", + "lng": "112.95750536884121", + "province": "湖南省" + }, + { + "area": "湖南湘潭高新技术产业园区", + "city": "湘潭市", + "country": "中国", + "lat": "27.835702227135585", + "lng": "112.95046418076468", + "province": "湖南省" + }, + { + "area": "湘潭昭山示范区", + "city": "湘潭市", + "country": "中国", + "lat": "27.784982534656113", + "lng": "112.95750536884121", + "province": "湖南省" + }, + { + "area": "湘潭九华示范区", + "city": "湘潭市", + "country": "中国", + "lat": "27.784982534656113", + "lng": "112.95750536884121", + "province": "湖南省" + }, + { + "area": "湘乡市", + "city": "湘潭市", + "country": "中国", + "lat": "27.740190553343652", + "lng": "112.54149155340549", + "province": "湖南省" + }, + { + "area": "韶山市", + "city": "湘潭市", + "country": "中国", + "lat": "27.92104374963106", + "lng": "112.53349932928586", + "province": "湖南省" + }, + { + "area": "", + "city": "衡阳市", + "country": "中国", + "lat": "26.899576139189122", + "lng": "112.57844721325992", + "province": "湖南省" + }, + { + "area": "珠晖区", + "city": "衡阳市", + "country": "中国", + "lat": "26.90026536194552", + "lng": "112.62659414281505", + "province": "湖南省" + }, + { + "area": "雁峰区", + "city": "衡阳市", + "country": "中国", + "lat": "26.846539399699935", + "lng": "112.62041110599193", + "province": "湖南省" + }, + { + "area": "石鼓区", + "city": "衡阳市", + "country": "中国", + "lat": "26.9489618671653", + "lng": "112.60452969339462", + "province": "湖南省" + }, + { + "area": "蒸湘区", + "city": "衡阳市", + "country": "中国", + "lat": "26.917719877876692", + "lng": "112.5734440108932", + "province": "湖南省" + }, + { + "area": "南岳区", + "city": "衡阳市", + "country": "中国", + "lat": "27.23836047456236", + "lng": "112.74557434825013", + "province": "湖南省" + }, + { + "area": "衡阳县", + "city": "衡阳市", + "country": "中国", + "lat": "26.975294950860984", + "lng": "112.37755268433024", + "province": "湖南省" + }, + { + "area": "衡南县", + "city": "衡阳市", + "country": "中国", + "lat": "26.74453195677219", + "lng": "112.68440252778792", + "province": "湖南省" + }, + { + "area": "衡山县", + "city": "衡阳市", + "country": "中国", + "lat": "27.23599602965559", + "lng": "112.87556328770634", + "province": "湖南省" + }, + { + "area": "衡东县", + "city": "衡阳市", + "country": "中国", + "lat": "27.087042820264845", + "lng": "112.95949529520625", + "province": "湖南省" + }, + { + "area": "祁东县", + "city": "衡阳市", + "country": "中国", + "lat": "26.805995255190922", + "lng": "112.09644737847452", + "province": "湖南省" + }, + { + "area": "衡阳综合保税区", + "city": "衡阳市", + "country": "中国", + "lat": "26.975294950860984", + "lng": "112.37755268433024", + "province": "湖南省" + }, + { + "area": "湖南衡阳高新技术产业园区", + "city": "衡阳市", + "country": "中国", + "lat": "26.898382211993777", + "lng": "112.56031590468307", + "province": "湖南省" + }, + { + "area": "湖南衡阳松木经济开发区", + "city": "衡阳市", + "country": "中国", + "lat": "26.899576139189122", + "lng": "112.57844721325992", + "province": "湖南省" + }, + { + "area": "耒阳市", + "city": "衡阳市", + "country": "中国", + "lat": "26.428065593927606", + "lng": "112.86659721058366", + "province": "湖南省" + }, + { + "area": "常宁市", + "city": "衡阳市", + "country": "中国", + "lat": "26.42672043225662", + "lng": "112.40556050266383", + "province": "湖南省" + }, + { + "area": "", + "city": "邵阳市", + "country": "中国", + "lat": "27.245270272808565", + "lng": "111.474432885931", + "province": "湖南省" + }, + { + "area": "双清区", + "city": "邵阳市", + "country": "中国", + "lat": "27.239108783296654", + "lng": "111.50344150643294", + "province": "湖南省" + }, + { + "area": "大祥区", + "city": "邵阳市", + "country": "中国", + "lat": "27.22701396869384", + "lng": "111.44552828920708", + "province": "湖南省" + }, + { + "area": "北塔区", + "city": "邵阳市", + "country": "中国", + "lat": "27.251536276173585", + "lng": "111.45849694618926", + "province": "湖南省" + }, + { + "area": "新邵县", + "city": "邵阳市", + "country": "中国", + "lat": "27.327131739160276", + "lng": "111.46444938798804", + "province": "湖南省" + }, + { + "area": "邵阳县", + "city": "邵阳市", + "country": "中国", + "lat": "26.996528332196284", + "lng": "111.28050768063707", + "province": "湖南省" + }, + { + "area": "隆回县", + "city": "邵阳市", + "country": "中国", + "lat": "27.119946440018886", + "lng": "111.03950668527776", + "province": "湖南省" + }, + { + "area": "洞口县", + "city": "邵阳市", + "country": "中国", + "lat": "27.06597543779858", + "lng": "110.58257909625085", + "province": "湖南省" + }, + { + "area": "绥宁县", + "city": "邵阳市", + "country": "中国", + "lat": "26.588422719333217", + "lng": "110.16241987037962", + "province": "湖南省" + }, + { + "area": "新宁县", + "city": "邵阳市", + "country": "中国", + "lat": "26.439723697953905", + "lng": "110.86349072743869", + "province": "湖南省" + }, + { + "area": "城步苗族自治县", + "city": "邵阳市", + "country": "中国", + "lat": "26.396203220077773", + "lng": "110.32853713031585", + "province": "湖南省" + }, + { + "area": "武冈市", + "city": "邵阳市", + "country": "中国", + "lat": "26.732898572991598", + "lng": "110.6384076158804", + "province": "湖南省" + }, + { + "area": "邵东市", + "city": "邵阳市", + "country": "中国", + "lat": "27.264507471565526", + "lng": "111.75049070295837", + "province": "湖南省" + }, + { + "area": "", + "city": "岳阳市", + "country": "中国", + "lat": "29.3631782939259", + "lng": "113.13548942422142", + "province": "湖南省" + }, + { + "area": "岳阳楼区", + "city": "岳阳市", + "country": "中国", + "lat": "29.377995036881128", + "lng": "113.13648070435137", + "province": "湖南省" + }, + { + "area": "云溪区", + "city": "岳阳市", + "country": "中国", + "lat": "29.479907141132852", + "lng": "113.27840659691188", + "province": "湖南省" + }, + { + "area": "君山区", + "city": "岳阳市", + "country": "中国", + "lat": "29.467129185831674", + "lng": "113.01251714910133", + "province": "湖南省" + }, + { + "area": "岳阳县", + "city": "岳阳市", + "country": "中国", + "lat": "29.150269316045275", + "lng": "113.12254448250472", + "province": "湖南省" + }, + { + "area": "华容县", + "city": "岳阳市", + "country": "中国", + "lat": "29.536286434381537", + "lng": "112.54746151216173", + "province": "湖南省" + }, + { + "area": "湘阴县", + "city": "岳阳市", + "country": "中国", + "lat": "28.676676377581405", + "lng": "112.88952187736018", + "province": "湖南省" + }, + { + "area": "平江县", + "city": "岳阳市", + "country": "中国", + "lat": "28.70756424811539", + "lng": "113.58760362283579", + "province": "湖南省" + }, + { + "area": "岳阳市屈原管理区", + "city": "岳阳市", + "country": "中国", + "lat": "28.860717002082563", + "lng": "112.91418198055085", + "province": "湖南省" + }, + { + "area": "汨罗市", + "city": "岳阳市", + "country": "中国", + "lat": "28.81245469481151", + "lng": "113.07349286947077", + "province": "湖南省" + }, + { + "area": "临湘市", + "city": "岳阳市", + "country": "中国", + "lat": "29.482801373395436", + "lng": "113.45656151000003", + "province": "湖南省" + }, + { + "area": "", + "city": "常德市", + "country": "中国", + "lat": "29.037749999406877", + "lng": "111.70545217995837", + "province": "湖南省" + }, + { + "area": "武陵区", + "city": "常德市", + "country": "中国", + "lat": "29.06078347657812", + "lng": "111.6895448961624", + "province": "湖南省" + }, + { + "area": "鼎城区", + "city": "常德市", + "country": "中国", + "lat": "29.024443397066236", + "lng": "111.6875220918157", + "province": "湖南省" + }, + { + "area": "安乡县", + "city": "常德市", + "country": "中国", + "lat": "29.417320432220166", + "lng": "112.17750615580171", + "province": "湖南省" + }, + { + "area": "汉寿县", + "city": "常德市", + "country": "中国", + "lat": "28.91228760308519", + "lng": "111.97641193355722", + "province": "湖南省" + }, + { + "area": "澧县", + "city": "常德市", + "country": "中国", + "lat": "29.638946004609103", + "lng": "111.7655335473624", + "province": "湖南省" + }, + { + "area": "临澧县", + "city": "常德市", + "country": "中国", + "lat": "29.446543990119117", + "lng": "111.65358500796546", + "province": "湖南省" + }, + { + "area": "桃源县", + "city": "常德市", + "country": "中国", + "lat": "28.908694006999355", + "lng": "111.49540733144599", + "province": "湖南省" + }, + { + "area": "石门县", + "city": "常德市", + "country": "中国", + "lat": "29.590365966649998", + "lng": "111.386451407024", + "province": "湖南省" + }, + { + "area": "常德市西洞庭管理区", + "city": "常德市", + "country": "中国", + "lat": "29.214091001390837", + "lng": "111.98817165098446", + "province": "湖南省" + }, + { + "area": "津市市", + "city": "常德市", + "country": "中国", + "lat": "29.611258543006777", + "lng": "111.88451734601949", + "province": "湖南省" + }, + { + "area": "", + "city": "张家界市", + "country": "中国", + "lat": "29.122815562551878", + "lng": "110.48553254695402", + "province": "湖南省" + }, + { + "area": "永定区", + "city": "张家界市", + "country": "中国", + "lat": "29.126190558381275", + "lng": "110.54443192396839", + "province": "湖南省" + }, + { + "area": "武陵源区", + "city": "张家界市", + "country": "中国", + "lat": "29.35168113667119", + "lng": "110.55749894540386", + "province": "湖南省" + }, + { + "area": "慈利县", + "city": "张家界市", + "country": "中国", + "lat": "29.43598672596915", + "lng": "111.14547125235251", + "province": "湖南省" + }, + { + "area": "桑植县", + "city": "张家界市", + "country": "中国", + "lat": "29.405923219415055", + "lng": "110.17041335212696", + "province": "湖南省" + }, + { + "area": "", + "city": "益阳市", + "country": "中国", + "lat": "28.559711178489888", + "lng": "112.36151595471031", + "province": "湖南省" + }, + { + "area": "资阳区", + "city": "益阳市", + "country": "中国", + "lat": "28.59723454973666", + "lng": "112.33043548238085", + "province": "湖南省" + }, + { + "area": "赫山区", + "city": "益阳市", + "country": "中国", + "lat": "28.584983567572916", + "lng": "112.38059794000806", + "province": "湖南省" + }, + { + "area": "南县", + "city": "益阳市", + "country": "中国", + "lat": "29.36706985336325", + "lng": "112.40254156733745", + "province": "湖南省" + }, + { + "area": "桃江县", + "city": "益阳市", + "country": "中国", + "lat": "28.523870869897745", + "lng": "112.16254146397702", + "province": "湖南省" + }, + { + "area": "安化县", + "city": "益阳市", + "country": "中国", + "lat": "28.380053748765423", + "lng": "111.21949270431685", + "province": "湖南省" + }, + { + "area": "益阳市大通湖管理区", + "city": "益阳市", + "country": "中国", + "lat": "29.21794346191998", + "lng": "112.53998204082703", + "province": "湖南省" + }, + { + "area": "湖南益阳高新技术产业园区", + "city": "益阳市", + "country": "中国", + "lat": "28.818587615911984", + "lng": "112.36169911920373", + "province": "湖南省" + }, + { + "area": "沅江市", + "city": "益阳市", + "country": "中国", + "lat": "28.8502335885833", + "lng": "112.36053222034666", + "province": "湖南省" + }, + { + "area": "", + "city": "郴州市", + "country": "中国", + "lat": "25.776683273601865", + "lng": "113.02146049909462", + "province": "湖南省" + }, + { + "area": "北湖区", + "city": "郴州市", + "country": "中国", + "lat": "25.790537261261562", + "lng": "113.017410129382", + "province": "湖南省" + }, + { + "area": "苏仙区", + "city": "郴州市", + "country": "中国", + "lat": "25.806737374103573", + "lng": "113.04842340845934", + "province": "湖南省" + }, + { + "area": "桂阳县", + "city": "郴州市", + "country": "中国", + "lat": "25.759775327893205", + "lng": "112.7405603662173", + "province": "湖南省" + }, + { + "area": "宜章县", + "city": "郴州市", + "country": "中国", + "lat": "25.405713969356206", + "lng": "112.95547924076412", + "province": "湖南省" + }, + { + "area": "永兴县", + "city": "郴州市", + "country": "中国", + "lat": "26.132968478532568", + "lng": "113.1225331638553", + "province": "湖南省" + }, + { + "area": "嘉禾县", + "city": "郴州市", + "country": "中国", + "lat": "25.593421718267894", + "lng": "112.37558377831412", + "province": "湖南省" + }, + { + "area": "临武县", + "city": "郴州市", + "country": "中国", + "lat": "25.282527010968707", + "lng": "112.57041115183141", + "province": "湖南省" + }, + { + "area": "汝城县", + "city": "郴州市", + "country": "中国", + "lat": "25.556056733977883", + "lng": "113.69154466691944", + "province": "湖南省" + }, + { + "area": "桂东县", + "city": "郴州市", + "country": "中国", + "lat": "26.083173927327394", + "lng": "113.9515936017977", + "province": "湖南省" + }, + { + "area": "安仁县", + "city": "郴州市", + "country": "中国", + "lat": "26.71568278850785", + "lng": "113.27542359380587", + "province": "湖南省" + }, + { + "area": "资兴市", + "city": "郴州市", + "country": "中国", + "lat": "25.981873602722327", + "lng": "113.24255612232601", + "province": "湖南省" + }, + { + "area": "", + "city": "永州市", + "country": "中国", + "lat": "26.425864117900094", + "lng": "111.61945505792227", + "province": "湖南省" + }, + { + "area": "零陵区", + "city": "永州市", + "country": "中国", + "lat": "26.227682089778906", + "lng": "111.63750237493397", + "province": "湖南省" + }, + { + "area": "冷水滩区", + "city": "永州市", + "country": "中国", + "lat": "26.467705510832307", + "lng": "111.59842608526284", + "province": "湖南省" + }, + { + "area": "祁阳县", + "city": "永州市", + "country": "中国", + "lat": "26.586434994948338", + "lng": "111.84742029287784", + "province": "湖南省" + }, + { + "area": "东安县", + "city": "永州市", + "country": "中国", + "lat": "26.398288039365276", + "lng": "111.32354235353662", + "province": "湖南省" + }, + { + "area": "双牌县", + "city": "永州市", + "country": "中国", + "lat": "25.967169239802526", + "lng": "111.66759381289727", + "province": "湖南省" + }, + { + "area": "道县", + "city": "永州市", + "country": "中国", + "lat": "25.53252996282964", + "lng": "111.60740437934045", + "province": "湖南省" + }, + { + "area": "江永县", + "city": "永州市", + "country": "中国", + "lat": "25.27972066791849", + "lng": "111.3504366323604", + "province": "湖南省" + }, + { + "area": "宁远县", + "city": "永州市", + "country": "中国", + "lat": "25.577051937460364", + "lng": "111.95245340696962", + "province": "湖南省" + }, + { + "area": "蓝山县", + "city": "永州市", + "country": "中国", + "lat": "25.37593472464048", + "lng": "112.2034349358637", + "province": "湖南省" + }, + { + "area": "新田县", + "city": "永州市", + "country": "中国", + "lat": "25.909825802753833", + "lng": "112.21040920017975", + "province": "湖南省" + }, + { + "area": "江华瑶族自治县", + "city": "永州市", + "country": "中国", + "lat": "25.19134892401461", + "lng": "111.58545203844761", + "province": "湖南省" + }, + { + "area": "永州经济技术开发区", + "city": "永州市", + "country": "中国", + "lat": "26.425864117900094", + "lng": "111.61945505792227", + "province": "湖南省" + }, + { + "area": "永州市金洞管理区", + "city": "永州市", + "country": "中国", + "lat": "26.299149551659603", + "lng": "112.09932114763055", + "province": "湖南省" + }, + { + "area": "永州市回龙圩管理区", + "city": "永州市", + "country": "中国", + "lat": "25.140442223749822", + "lng": "111.34092734989602", + "province": "湖南省" + }, + { + "area": "", + "city": "怀化市", + "country": "中国", + "lat": "27.575160902978517", + "lng": "110.00851426537254", + "province": "湖南省" + }, + { + "area": "鹤城区", + "city": "怀化市", + "country": "中国", + "lat": "27.585225763163724", + "lng": "110.04639994092115", + "province": "湖南省" + }, + { + "area": "中方县", + "city": "怀化市", + "country": "中国", + "lat": "27.446081174059824", + "lng": "109.95146189431664", + "province": "湖南省" + }, + { + "area": "沅陵县", + "city": "怀化市", + "country": "中国", + "lat": "28.45901810262646", + "lng": "110.40043076601941", + "province": "湖南省" + }, + { + "area": "辰溪县", + "city": "怀化市", + "country": "中国", + "lat": "28.012605313812955", + "lng": "110.19048661755465", + "province": "湖南省" + }, + { + "area": "溆浦县", + "city": "怀化市", + "country": "中国", + "lat": "27.913963373885736", + "lng": "110.60155112895423", + "province": "湖南省" + }, + { + "area": "会同县", + "city": "怀化市", + "country": "中国", + "lat": "26.893383817273584", + "lng": "109.74158556791785", + "province": "湖南省" + }, + { + "area": "麻阳苗族自治县", + "city": "怀化市", + "country": "中国", + "lat": "27.871930162950118", + "lng": "109.80943628984454", + "province": "湖南省" + }, + { + "area": "新晃侗族自治县", + "city": "怀化市", + "country": "中国", + "lat": "27.358782968573223", + "lng": "109.18147151143545", + "province": "湖南省" + }, + { + "area": "芷江侗族自治县", + "city": "怀化市", + "country": "中国", + "lat": "27.449513277764982", + "lng": "109.69140226960282", + "province": "湖南省" + }, + { + "area": "靖州苗族侗族自治县", + "city": "怀化市", + "country": "中国", + "lat": "26.58132135106617", + "lng": "109.702451607033", + "province": "湖南省" + }, + { + "area": "通道侗族自治县", + "city": "怀化市", + "country": "中国", + "lat": "26.16421986471205", + "lng": "109.79044548255604", + "province": "湖南省" + }, + { + "area": "怀化市洪江管理区", + "city": "怀化市", + "country": "中国", + "lat": "27.21507709393158", + "lng": "109.84350982630171", + "province": "湖南省" + }, + { + "area": "洪江市", + "city": "怀化市", + "country": "中国", + "lat": "27.21507709393158", + "lng": "109.84350982630171", + "province": "湖南省" + }, + { + "area": "", + "city": "娄底市", + "country": "中国", + "lat": "27.703208596991583", + "lng": "112.00150349288418", + "province": "湖南省" + }, + { + "area": "娄星区", + "city": "娄底市", + "country": "中国", + "lat": "27.73560484210878", + "lng": "112.008558425035", + "province": "湖南省" + }, + { + "area": "双峰县", + "city": "娄底市", + "country": "中国", + "lat": "27.4629826585733", + "lng": "112.18146049665532", + "province": "湖南省" + }, + { + "area": "新化县", + "city": "娄底市", + "country": "中国", + "lat": "27.7326667510658", + "lng": "111.33451533499847", + "province": "湖南省" + }, + { + "area": "冷水江市", + "city": "娄底市", + "country": "中国", + "lat": "27.692058848957522", + "lng": "111.44153972291355", + "province": "湖南省" + }, + { + "area": "涟源市", + "city": "娄底市", + "country": "中国", + "lat": "27.69816753225533", + "lng": "111.67056199396235", + "province": "湖南省" + }, + { + "area": "", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.317369104701186", + "lng": "109.74557664946683", + "province": "湖南省" + }, + { + "area": "吉首市", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.267493127592708", + "lng": "109.70444880967267", + "province": "湖南省" + }, + { + "area": "泸溪县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.22187309756933", + "lng": "110.22659921768825", + "province": "湖南省" + }, + { + "area": "凤凰县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "27.95384780972621", + "lng": "109.60552668830216", + "province": "湖南省" + }, + { + "area": "花垣县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.5779099343968", + "lng": "109.48856183127808", + "province": "湖南省" + }, + { + "area": "保靖县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.705968872486093", + "lng": "109.66647357306476", + "province": "湖南省" + }, + { + "area": "古丈县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.623083527843185", + "lng": "109.95750740056623", + "province": "湖南省" + }, + { + "area": "永顺县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.98577448568191", + "lng": "109.86358578664593", + "province": "湖南省" + }, + { + "area": "龙山县", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "29.464121765857005", + "lng": "109.4504157369622", + "province": "湖南省" + }, + { + "area": "湖南永顺经济开发区", + "city": "湘西土家族苗族自治州", + "country": "中国", + "lat": "28.98577448568191", + "lng": "109.86358578664593", + "province": "湖南省" + }, + { + "area": "", + "city": "广州市", + "country": "中国", + "lat": "23.135336306695006", + "lng": "113.27143134445974", + "province": "广东省" + }, + { + "area": "荔湾区", + "city": "广州市", + "country": "中国", + "lat": "23.13179113497485", + "lng": "113.250502263373", + "province": "广东省" + }, + { + "area": "越秀区", + "city": "广州市", + "country": "中国", + "lat": "23.13526012014849", + "lng": "113.27342648099675", + "province": "广东省" + }, + { + "area": "海珠区", + "city": "广州市", + "country": "中国", + "lat": "23.08898129664783", + "lng": "113.32353998097368", + "province": "广东省" + }, + { + "area": "天河区", + "city": "广州市", + "country": "中国", + "lat": "23.13035783510465", + "lng": "113.36850942427998", + "province": "广东省" + }, + { + "area": "白云区", + "city": "广州市", + "country": "中国", + "lat": "23.16431683445584", + "lng": "113.27943309061779", + "province": "广东省" + }, + { + "area": "黄埔区", + "city": "广州市", + "country": "中国", + "lat": "23.187491541424553", + "lng": "113.48707083968644", + "province": "广东省" + }, + { + "area": "番禺区", + "city": "广州市", + "country": "中国", + "lat": "22.94383073151757", + "lng": "113.39046958043075", + "province": "广东省" + }, + { + "area": "花都区", + "city": "广州市", + "country": "中国", + "lat": "23.411161504875746", + "lng": "113.22657580629208", + "province": "广东省" + }, + { + "area": "南沙区", + "city": "广州市", + "country": "中国", + "lat": "22.807929296528254", + "lng": "113.5314355437236", + "province": "广东省" + }, + { + "area": "从化区", + "city": "广州市", + "country": "中国", + "lat": "23.5539859225784", + "lng": "113.59358543922477", + "province": "广东省" + }, + { + "area": "增城区", + "city": "广州市", + "country": "中国", + "lat": "23.266592400631392", + "lng": "113.81754566889597", + "province": "广东省" + }, + { + "area": "", + "city": "韶关市", + "country": "中国", + "lat": "24.815881278583017", + "lng": "113.60352734562261", + "province": "广东省" + }, + { + "area": "武江区", + "city": "韶关市", + "country": "中国", + "lat": "24.798486030733113", + "lng": "113.59455578883632", + "province": "广东省" + }, + { + "area": "浈江区", + "city": "韶关市", + "country": "中国", + "lat": "24.810413749784487", + "lng": "113.6174774013741", + "province": "广东省" + }, + { + "area": "曲江区", + "city": "韶关市", + "country": "中国", + "lat": "24.688407846380294", + "lng": "113.61150106464875", + "province": "广东省" + }, + { + "area": "始兴县", + "city": "韶关市", + "country": "中国", + "lat": "24.958558154345624", + "lng": "114.06856735204634", + "province": "广东省" + }, + { + "area": "仁化县", + "city": "韶关市", + "country": "中国", + "lat": "25.092287524427956", + "lng": "113.75544293443409", + "province": "广东省" + }, + { + "area": "翁源县", + "city": "韶关市", + "country": "中国", + "lat": "24.356594490867355", + "lng": "114.13642723668924", + "province": "广东省" + }, + { + "area": "乳源瑶族自治县", + "city": "韶关市", + "country": "中国", + "lat": "24.782333322942147", + "lng": "113.28243136491744", + "province": "广东省" + }, + { + "area": "新丰县", + "city": "韶关市", + "country": "中国", + "lat": "24.065546505163553", + "lng": "114.21351173078048", + "province": "广东省" + }, + { + "area": "乐昌市", + "city": "韶关市", + "country": "中国", + "lat": "25.135591561194918", + "lng": "113.35457868209694", + "province": "广东省" + }, + { + "area": "南雄市", + "city": "韶关市", + "country": "中国", + "lat": "25.123526537362086", + "lng": "114.31857889065107", + "province": "广东省" + }, + { + "area": "", + "city": "深圳市", + "country": "中国", + "lat": "22.548456637984177", + "lng": "114.06455183658751", + "province": "广东省" + }, + { + "area": "罗湖区", + "city": "深圳市", + "country": "中国", + "lat": "22.55448487585574", + "lng": "114.13743190157126", + "province": "广东省" + }, + { + "area": "福田区", + "city": "深圳市", + "country": "中国", + "lat": "22.528465912071983", + "lng": "114.06154700465763", + "province": "广东省" + }, + { + "area": "南山区", + "city": "深圳市", + "country": "中国", + "lat": "22.538500195784383", + "lng": "113.93653916925258", + "province": "广东省" + }, + { + "area": "宝安区", + "city": "深圳市", + "country": "中国", + "lat": "22.560032908924555", + "lng": "113.89042744066019", + "province": "广东省" + }, + { + "area": "龙岗区", + "city": "深圳市", + "country": "中国", + "lat": "22.72601655078104", + "lng": "114.25445487896184", + "province": "广东省" + }, + { + "area": "盐田区", + "city": "深圳市", + "country": "中国", + "lat": "22.563437914836104", + "lng": "114.24343015510262", + "province": "广东省" + }, + { + "area": "龙华区", + "city": "深圳市", + "country": "中国", + "lat": "22.75759664922203", + "lng": "114.04852876121132", + "province": "广东省" + }, + { + "area": "坪山区", + "city": "深圳市", + "country": "中国", + "lat": "22.716233464748687", + "lng": "114.35047403624726", + "province": "广东省" + }, + { + "area": "光明区", + "city": "深圳市", + "country": "中国", + "lat": "22.754465883635365", + "lng": "113.94256006193123", + "province": "广东省" + }, + { + "area": "", + "city": "珠海市", + "country": "中国", + "lat": "22.27656465424921", + "lng": "113.58255478654918", + "province": "广东省" + }, + { + "area": "香洲区", + "city": "珠海市", + "country": "中国", + "lat": "22.27300386179866", + "lng": "113.55047243408478", + "province": "广东省" + }, + { + "area": "斗门区", + "city": "珠海市", + "country": "中国", + "lat": "22.215515662229034", + "lng": "113.3034672545293", + "province": "广东省" + }, + { + "area": "金湾区", + "city": "珠海市", + "country": "中国", + "lat": "22.152576780675133", + "lng": "113.36951705357019", + "province": "广东省" + }, + { + "area": "", + "city": "汕头市", + "country": "中国", + "lat": "23.35909171772515", + "lng": "116.68852864054833", + "province": "广东省" + }, + { + "area": "龙湖区", + "city": "汕头市", + "country": "中国", + "lat": "23.37777578062844", + "lng": "116.7235246469334", + "province": "广东省" + }, + { + "area": "金平区", + "city": "汕头市", + "country": "中国", + "lat": "23.371750385773453", + "lng": "116.70955006744148", + "province": "广东省" + }, + { + "area": "濠江区", + "city": "汕头市", + "country": "中国", + "lat": "23.291546359756765", + "lng": "116.73351658894812", + "province": "广东省" + }, + { + "area": "潮阳区", + "city": "汕头市", + "country": "中国", + "lat": "23.27085495694311", + "lng": "116.60851450269834", + "province": "广东省" + }, + { + "area": "潮南区", + "city": "汕头市", + "country": "中国", + "lat": "23.25634143267327", + "lng": "116.43949131426885", + "province": "广东省" + }, + { + "area": "澄海区", + "city": "汕头市", + "country": "中国", + "lat": "23.472341401523146", + "lng": "116.76242504838574", + "province": "广东省" + }, + { + "area": "南澳县", + "city": "汕头市", + "country": "中国", + "lat": "23.42781204594636", + "lng": "117.03049603112653", + "province": "广东省" + }, + { + "area": "", + "city": "佛山市", + "country": "中国", + "lat": "23.02775875078891", + "lng": "113.12851219549718", + "province": "广东省" + }, + { + "area": "禅城区", + "city": "佛山市", + "country": "中国", + "lat": "23.015374368816396", + "lng": "113.12950518240757", + "province": "广东省" + }, + { + "area": "南海区", + "city": "佛山市", + "country": "中国", + "lat": "23.03501144600308", + "lng": "113.14944567828094", + "province": "广东省" + }, + { + "area": "顺德区", + "city": "佛山市", + "country": "中国", + "lat": "22.81045342679539", + "lng": "113.30045343954433", + "province": "广东省" + }, + { + "area": "三水区", + "city": "佛山市", + "country": "中国", + "lat": "23.16192049398403", + "lng": "112.90347085514507", + "province": "广东省" + }, + { + "area": "高明区", + "city": "佛山市", + "country": "中国", + "lat": "22.90634960163004", + "lng": "112.89947240749092", + "province": "广东省" + }, + { + "area": "", + "city": "江门市", + "country": "中国", + "lat": "22.584603880965", + "lng": "113.08855619524043", + "province": "广东省" + }, + { + "area": "蓬江区", + "city": "江门市", + "country": "中国", + "lat": "22.601065786023433", + "lng": "113.08454642893685", + "province": "广东省" + }, + { + "area": "江海区", + "city": "江门市", + "country": "中国", + "lat": "22.56611545182351", + "lng": "113.11755718014552", + "province": "广东省" + }, + { + "area": "新会区", + "city": "江门市", + "country": "中国", + "lat": "22.465113060519734", + "lng": "113.03845482238786", + "province": "广东省" + }, + { + "area": "台山市", + "city": "江门市", + "country": "中国", + "lat": "22.257923470251228", + "lng": "112.80044482505359", + "province": "广东省" + }, + { + "area": "开平市", + "city": "江门市", + "country": "中国", + "lat": "22.382499490200658", + "lng": "112.70446429490508", + "province": "广东省" + }, + { + "area": "鹤山市", + "city": "江门市", + "country": "中国", + "lat": "22.77116943137714", + "lng": "112.97052666652624", + "province": "广东省" + }, + { + "area": "恩平市", + "city": "江门市", + "country": "中国", + "lat": "22.189035201534217", + "lng": "112.3114375784788", + "province": "广东省" + }, + { + "area": "", + "city": "湛江市", + "country": "中国", + "lat": "21.276723439012073", + "lng": "110.36555441392824", + "province": "广东省" + }, + { + "area": "赤坎区", + "city": "湛江市", + "country": "中国", + "lat": "21.272134812703147", + "lng": "110.372532540958", + "province": "广东省" + }, + { + "area": "霞山区", + "city": "湛江市", + "country": "中国", + "lat": "21.19822718530276", + "lng": "110.40442535095987", + "province": "广东省" + }, + { + "area": "坡头区", + "city": "湛江市", + "country": "中国", + "lat": "21.2503767385989", + "lng": "110.46256709710735", + "province": "广东省" + }, + { + "area": "麻章区", + "city": "湛江市", + "country": "中国", + "lat": "21.26918876656652", + "lng": "110.34057918516478", + "province": "广东省" + }, + { + "area": "遂溪县", + "city": "湛江市", + "country": "中国", + "lat": "21.3831029620292", + "lng": "110.25651530641605", + "province": "广东省" + }, + { + "area": "徐闻县", + "city": "湛江市", + "country": "中国", + "lat": "20.33172368670216", + "lng": "110.18247274427223", + "province": "广东省" + }, + { + "area": "廉江市", + "city": "湛江市", + "country": "中国", + "lat": "21.615816495304664", + "lng": "110.29244770646442", + "province": "广东省" + }, + { + "area": "雷州市", + "city": "湛江市", + "country": "中国", + "lat": "20.919880592716495", + "lng": "110.10258050647992", + "province": "广东省" + }, + { + "area": "吴川市", + "city": "湛江市", + "country": "中国", + "lat": "21.447262768557348", + "lng": "110.78645034014797", + "province": "广东省" + }, + { + "area": "", + "city": "茂名市", + "country": "中国", + "lat": "21.669064031332095", + "lng": "110.931542579969", + "province": "广东省" + }, + { + "area": "茂南区", + "city": "茂名市", + "country": "中国", + "lat": "21.647152082303503", + "lng": "110.92554576187803", + "province": "广东省" + }, + { + "area": "电白区", + "city": "茂名市", + "country": "中国", + "lat": "21.52035118819837", + "lng": "111.02047123220541", + "province": "广东省" + }, + { + "area": "高州市", + "city": "茂名市", + "country": "中国", + "lat": "21.924048896771122", + "lng": "110.85947386452162", + "province": "广东省" + }, + { + "area": "化州市", + "city": "茂名市", + "country": "中国", + "lat": "21.670231093869553", + "lng": "110.64643101120122", + "province": "广东省" + }, + { + "area": "信宜市", + "city": "茂名市", + "country": "中国", + "lat": "22.36009314172976", + "lng": "110.95358169717407", + "province": "广东省" + }, + { + "area": "", + "city": "肇庆市", + "country": "中国", + "lat": "23.052888771125616", + "lng": "112.47148894063035", + "province": "广东省" + }, + { + "area": "端州区", + "city": "肇庆市", + "country": "中国", + "lat": "23.057563726175687", + "lng": "112.49156022978593", + "province": "广东省" + }, + { + "area": "鼎湖区", + "city": "肇庆市", + "country": "中国", + "lat": "23.164308112715716", + "lng": "112.57443448254817", + "province": "广东省" + }, + { + "area": "高要区", + "city": "肇庆市", + "country": "中国", + "lat": "23.03189554686566", + "lng": "112.46444604577336", + "province": "广东省" + }, + { + "area": "广宁县", + "city": "肇庆市", + "country": "中国", + "lat": "23.64103572633298", + "lng": "112.4474238750093", + "province": "广东省" + }, + { + "area": "怀集县", + "city": "肇庆市", + "country": "中国", + "lat": "23.917842129185328", + "lng": "112.19146878783033", + "province": "广东省" + }, + { + "area": "封开县", + "city": "肇庆市", + "country": "中国", + "lat": "23.429768921261136", + "lng": "111.51852585255149", + "province": "广东省" + }, + { + "area": "德庆县", + "city": "肇庆市", + "country": "中国", + "lat": "23.15137330611021", + "lng": "111.79155377492526", + "province": "广东省" + }, + { + "area": "四会市", + "city": "肇庆市", + "country": "中国", + "lat": "23.33238100517465", + "lng": "112.74057914080245", + "province": "广东省" + }, + { + "area": "", + "city": "惠州市", + "country": "中国", + "lat": "23.116358854725593", + "lng": "114.4235580165817", + "province": "广东省" + }, + { + "area": "惠城区", + "city": "惠州市", + "country": "中国", + "lat": "23.08972597254434", + "lng": "114.38949004961869", + "province": "广东省" + }, + { + "area": "惠阳区", + "city": "惠州市", + "country": "中国", + "lat": "22.7947208785705", + "lng": "114.46346443037433", + "province": "广东省" + }, + { + "area": "博罗县", + "city": "惠州市", + "country": "中国", + "lat": "23.178805592432578", + "lng": "114.29657265142765", + "province": "广东省" + }, + { + "area": "惠东县", + "city": "惠州市", + "country": "中国", + "lat": "22.991443112002415", + "lng": "114.72642585137605", + "province": "广东省" + }, + { + "area": "龙门县", + "city": "惠州市", + "country": "中国", + "lat": "23.733838340061837", + "lng": "114.26143022124452", + "province": "广东省" + }, + { + "area": "", + "city": "梅州市", + "country": "中国", + "lat": "24.294177532206206", + "lng": "116.12953737612247", + "province": "广东省" + }, + { + "area": "梅江区", + "city": "梅州市", + "country": "中国", + "lat": "24.315878769037926", + "lng": "116.1235359766734", + "province": "广东省" + }, + { + "area": "梅县区", + "city": "梅州市", + "country": "中国", + "lat": "24.270999314695175", + "lng": "116.08856170928166", + "province": "广东省" + }, + { + "area": "大埔县", + "city": "梅州市", + "country": "中国", + "lat": "24.353459468581786", + "lng": "116.70155892128847", + "province": "广东省" + }, + { + "area": "丰顺县", + "city": "梅州市", + "country": "中国", + "lat": "23.745738303254953", + "lng": "116.18845382094152", + "province": "广东省" + }, + { + "area": "五华县", + "city": "梅州市", + "country": "中国", + "lat": "23.938408899570756", + "lng": "115.78248548652893", + "province": "广东省" + }, + { + "area": "平远县", + "city": "梅州市", + "country": "中国", + "lat": "24.572414126136522", + "lng": "115.89747694600936", + "province": "广东省" + }, + { + "area": "蕉岭县", + "city": "梅州市", + "country": "中国", + "lat": "24.664992548661576", + "lng": "116.17743924793456", + "province": "广东省" + }, + { + "area": "兴宁市", + "city": "梅州市", + "country": "中国", + "lat": "24.14229377932197", + "lng": "115.73757946359162", + "province": "广东省" + }, + { + "area": "", + "city": "汕尾市", + "country": "中国", + "lat": "22.79126303654673", + "lng": "115.38155260365083", + "province": "广东省" + }, + { + "area": "城区", + "city": "汕尾市", + "country": "中国", + "lat": "22.784551839489296", + "lng": "115.37153074806264", + "province": "广东省" + }, + { + "area": "海丰县", + "city": "汕尾市", + "country": "中国", + "lat": "22.972744260965804", + "lng": "115.32944477561186", + "province": "广东省" + }, + { + "area": "陆河县", + "city": "汕尾市", + "country": "中国", + "lat": "23.307677076489913", + "lng": "115.6664827147057", + "province": "广东省" + }, + { + "area": "陆丰市", + "city": "汕尾市", + "country": "中国", + "lat": "22.923635773560758", + "lng": "115.65849031092495", + "province": "广东省" + }, + { + "area": "", + "city": "河源市", + "country": "中国", + "lat": "23.749684370959752", + "lng": "114.70744627290641", + "province": "广东省" + }, + { + "area": "源城区", + "city": "河源市", + "country": "中国", + "lat": "23.740298338346726", + "lng": "114.70843899032516", + "province": "广东省" + }, + { + "area": "紫金县", + "city": "河源市", + "country": "中国", + "lat": "23.641430253188638", + "lng": "115.19044771833511", + "province": "广东省" + }, + { + "area": "龙川县", + "city": "河源市", + "country": "中国", + "lat": "24.105850721954667", + "lng": "115.2665554848457", + "province": "广东省" + }, + { + "area": "连平县", + "city": "河源市", + "country": "中国", + "lat": "24.375808067413903", + "lng": "114.49544419634952", + "province": "广东省" + }, + { + "area": "和平县", + "city": "河源市", + "country": "中国", + "lat": "24.44825276768894", + "lng": "114.94544881430497", + "province": "广东省" + }, + { + "area": "东源县", + "city": "河源市", + "country": "中国", + "lat": "23.79425787311432", + "lng": "114.75350832520412", + "province": "广东省" + }, + { + "area": "", + "city": "阳江市", + "country": "中国", + "lat": "21.864339726138933", + "lng": "111.98848929181268", + "province": "广东省" + }, + { + "area": "江城区", + "city": "阳江市", + "country": "中国", + "lat": "21.868127886755477", + "lng": "111.96145451800717", + "province": "广东省" + }, + { + "area": "阳东区", + "city": "阳江市", + "country": "中国", + "lat": "21.873996844318786", + "lng": "112.01857947214826", + "province": "广东省" + }, + { + "area": "阳西县", + "city": "阳江市", + "country": "中国", + "lat": "21.758700627504624", + "lng": "111.62448107724893", + "province": "广东省" + }, + { + "area": "阳春市", + "city": "阳江市", + "country": "中国", + "lat": "22.176014807320136", + "lng": "111.79753613029754", + "province": "广东省" + }, + { + "area": "", + "city": "清远市", + "country": "中国", + "lat": "23.688230292088083", + "lng": "113.06246832527266", + "province": "广东省" + }, + { + "area": "清城区", + "city": "清远市", + "country": "中国", + "lat": "23.704022037924876", + "lng": "113.06947663536754", + "province": "广东省" + }, + { + "area": "清新区", + "city": "清远市", + "country": "中国", + "lat": "23.75427033709297", + "lng": "112.9915577951189", + "province": "广东省" + }, + { + "area": "佛冈县", + "city": "清远市", + "country": "中国", + "lat": "23.885475421110662", + "lng": "113.53844124873252", + "province": "广东省" + }, + { + "area": "阳山县", + "city": "清远市", + "country": "中国", + "lat": "24.470943635879568", + "lng": "112.64751954084923", + "province": "广东省" + }, + { + "area": "连山壮族瑶族自治县", + "city": "清远市", + "country": "中国", + "lat": "24.576845604092956", + "lng": "112.10042570408524", + "province": "广东省" + }, + { + "area": "连南瑶族自治县", + "city": "清远市", + "country": "中国", + "lat": "24.731548581479572", + "lng": "112.29351728186617", + "province": "广东省" + }, + { + "area": "英德市", + "city": "清远市", + "country": "中国", + "lat": "24.191939355216665", + "lng": "113.42144297474346", + "province": "广东省" + }, + { + "area": "连州市", + "city": "清远市", + "country": "中国", + "lat": "24.78646685504731", + "lng": "112.38357258887281", + "province": "广东省" + }, + { + "area": "", + "city": "东莞市", + "country": "中国", + "lat": "23.02730841164339", + "lng": "113.75842045787648", + "province": "广东省" + }, + { + "area": "东莞市", + "city": "东莞市", + "country": "中国", + "lat": "23.02730841164339", + "lng": "113.75842045787648", + "province": "广东省" + }, + { + "area": "", + "city": "中山市", + "country": "中国", + "lat": "22.5223146707905", + "lng": "113.39942236263188", + "province": "广东省" + }, + { + "area": "中山市", + "city": "中山市", + "country": "中国", + "lat": "22.5223146707905", + "lng": "113.39942236263188", + "province": "广东省" + }, + { + "area": "", + "city": "潮州市", + "country": "中国", + "lat": "23.662623192615886", + "lng": "116.62947017362819", + "province": "广东省" + }, + { + "area": "湘桥区", + "city": "潮州市", + "country": "中国", + "lat": "23.680686981566488", + "lng": "116.63446160819274", + "province": "广东省" + }, + { + "area": "潮安区", + "city": "潮州市", + "country": "中国", + "lat": "23.468357129830867", + "lng": "116.68452606068884", + "province": "广东省" + }, + { + "area": "饶平县", + "city": "潮州市", + "country": "中国", + "lat": "23.670347111195284", + "lng": "117.01044917588082", + "province": "广东省" + }, + { + "area": "", + "city": "揭阳市", + "country": "中国", + "lat": "23.555740488275585", + "lng": "116.37851218033846", + "province": "广东省" + }, + { + "area": "榕城区", + "city": "揭阳市", + "country": "中国", + "lat": "23.53074641796635", + "lng": "116.37351589492418", + "province": "广东省" + }, + { + "area": "揭东区", + "city": "揭阳市", + "country": "中国", + "lat": "23.572485187047057", + "lng": "116.4184557839792", + "province": "广东省" + }, + { + "area": "揭西县", + "city": "揭阳市", + "country": "中国", + "lat": "23.43729970820865", + "lng": "115.84856088727683", + "province": "广东省" + }, + { + "area": "惠来县", + "city": "揭阳市", + "country": "中国", + "lat": "23.039645374524625", + "lng": "116.30144448456024", + "province": "广东省" + }, + { + "area": "普宁市", + "city": "揭阳市", + "country": "中国", + "lat": "23.30363452186039", + "lng": "116.1724489811672", + "province": "广东省" + }, + { + "area": "", + "city": "云浮市", + "country": "中国", + "lat": "22.920911970342857", + "lng": "112.05151269959146", + "province": "广东省" + }, + { + "area": "云城区", + "city": "云浮市", + "country": "中国", + "lat": "22.93389780297112", + "lng": "112.05052923471945", + "province": "广东省" + }, + { + "area": "云安区", + "city": "云浮市", + "country": "中国", + "lat": "23.076892611910726", + "lng": "112.00956308991704", + "province": "广东省" + }, + { + "area": "新兴县", + "city": "云浮市", + "country": "中国", + "lat": "22.701890082605544", + "lng": "112.23149683218897", + "province": "广东省" + }, + { + "area": "郁南县", + "city": "云浮市", + "country": "中国", + "lat": "23.240174042652985", + "lng": "111.54155382446162", + "province": "广东省" + }, + { + "area": "罗定市", + "city": "云浮市", + "country": "中国", + "lat": "22.774296060762723", + "lng": "111.57648048166133", + "province": "广东省" + }, + { + "area": "", + "city": "南宁市", + "country": "中国", + "lat": "22.822606601187154", + "lng": "108.37345082581861", + "province": "广西壮族自治区" + }, + { + "area": "兴宁区", + "city": "南宁市", + "country": "中国", + "lat": "22.86029095125464", + "lng": "108.37544497421953", + "province": "广西壮族自治区" + }, + { + "area": "青秀区", + "city": "南宁市", + "country": "中国", + "lat": "22.792227439630846", + "lng": "108.5014386100909", + "province": "广西壮族自治区" + }, + { + "area": "江南区", + "city": "南宁市", + "country": "中国", + "lat": "22.78704575358756", + "lng": "108.27949435764451", + "province": "广西壮族自治区" + }, + { + "area": "西乡塘区", + "city": "南宁市", + "country": "中国", + "lat": "22.839651509338932", + "lng": "108.31957243762004", + "province": "广西壮族自治区" + }, + { + "area": "良庆区", + "city": "南宁市", + "country": "中国", + "lat": "22.76284928359022", + "lng": "108.32751579391994", + "province": "广西壮族自治区" + }, + { + "area": "邕宁区", + "city": "南宁市", + "country": "中国", + "lat": "22.764600449550194", + "lng": "108.49342024528094", + "province": "广西壮族自治区" + }, + { + "area": "武鸣区", + "city": "南宁市", + "country": "中国", + "lat": "23.16451560691069", + "lng": "108.28151653317735", + "province": "广西壮族自治区" + }, + { + "area": "隆安县", + "city": "南宁市", + "country": "中国", + "lat": "23.1715852498276", + "lng": "107.70257390338148", + "province": "广西壮族自治区" + }, + { + "area": "马山县", + "city": "南宁市", + "country": "中国", + "lat": "23.713877725360007", + "lng": "108.18356215633243", + "province": "广西壮族自治区" + }, + { + "area": "上林县", + "city": "南宁市", + "country": "中国", + "lat": "23.438518877662855", + "lng": "108.61145148077557", + "province": "广西壮族自治区" + }, + { + "area": "宾阳县", + "city": "南宁市", + "country": "中国", + "lat": "23.223700543766824", + "lng": "108.81650237946799", + "province": "广西壮族自治区" + }, + { + "area": "横县", + "city": "南宁市", + "country": "中国", + "lat": "22.68557260883826", + "lng": "109.26756780639981", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "柳州市", + "country": "中国", + "lat": "24.331961386852413", + "lng": "109.43442194634564", + "province": "广西壮族自治区" + }, + { + "area": "城中区", + "city": "柳州市", + "country": "中国", + "lat": "24.32131406989099", + "lng": "109.41748215019682", + "province": "广西壮族自治区" + }, + { + "area": "鱼峰区", + "city": "柳州市", + "country": "中国", + "lat": "24.318521699514562", + "lng": "109.44941628225213", + "province": "广西壮族自治区" + }, + { + "area": "柳南区", + "city": "柳州市", + "country": "中国", + "lat": "24.341578870911754", + "lng": "109.39155193284601", + "province": "广西壮族自治区" + }, + { + "area": "柳北区", + "city": "柳州市", + "country": "中国", + "lat": "24.367867017647864", + "lng": "109.40853179342056", + "province": "广西壮族自治区" + }, + { + "area": "柳江区", + "city": "柳州市", + "country": "中国", + "lat": "24.260814965350463", + "lng": "109.33244423878395", + "province": "广西壮族自治区" + }, + { + "area": "柳城县", + "city": "柳州市", + "country": "中国", + "lat": "24.65637039148558", + "lng": "109.25156152933667", + "province": "广西壮族自治区" + }, + { + "area": "鹿寨县", + "city": "柳州市", + "country": "中国", + "lat": "24.478622266897954", + "lng": "109.7575544754718", + "province": "广西壮族自治区" + }, + { + "area": "融安县", + "city": "柳州市", + "country": "中国", + "lat": "25.2305114471283", + "lng": "109.4045632593399", + "province": "广西壮族自治区" + }, + { + "area": "融水苗族自治县", + "city": "柳州市", + "country": "中国", + "lat": "25.07207650410932", + "lng": "109.26256083114997", + "province": "广西壮族自治区" + }, + { + "area": "三江侗族自治县", + "city": "柳州市", + "country": "中国", + "lat": "25.78883038778805", + "lng": "109.6145474722304", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "桂林市", + "country": "中国", + "lat": "25.242885724872647", + "lng": "110.20354537457943", + "province": "广西壮族自治区" + }, + { + "area": "秀峰区", + "city": "桂林市", + "country": "中国", + "lat": "25.279618485669605", + "lng": "110.27043670622179", + "province": "广西壮族自治区" + }, + { + "area": "叠彩区", + "city": "桂林市", + "country": "中国", + "lat": "25.32023327484348", + "lng": "110.30846314624377", + "province": "广西壮族自治区" + }, + { + "area": "象山区", + "city": "桂林市", + "country": "中国", + "lat": "25.26793001021147", + "lng": "110.2874226752738", + "province": "广西壮族自治区" + }, + { + "area": "七星区", + "city": "桂林市", + "country": "中国", + "lat": "25.258567087500396", + "lng": "110.32453805384785", + "province": "广西壮族自治区" + }, + { + "area": "雁山区", + "city": "桂林市", + "country": "中国", + "lat": "25.06621354391673", + "lng": "110.31547927159657", + "province": "广西壮族自治区" + }, + { + "area": "临桂区", + "city": "桂林市", + "country": "中国", + "lat": "25.2443019992707", + "lng": "110.21858669186409", + "province": "广西壮族自治区" + }, + { + "area": "阳朔县", + "city": "桂林市", + "country": "中国", + "lat": "24.7845191914325", + "lng": "110.50347503171274", + "province": "广西壮族自治区" + }, + { + "area": "灵川县", + "city": "桂林市", + "country": "中国", + "lat": "25.41554953076031", + "lng": "110.33253719491991", + "province": "广西壮族自治区" + }, + { + "area": "全州县", + "city": "桂林市", + "country": "中国", + "lat": "25.93434302736133", + "lng": "111.07956895507631", + "province": "广西壮族自治区" + }, + { + "area": "兴安县", + "city": "桂林市", + "country": "中国", + "lat": "25.617567220036516", + "lng": "110.6785163280738", + "province": "广西壮族自治区" + }, + { + "area": "永福县", + "city": "桂林市", + "country": "中国", + "lat": "24.98557797308376", + "lng": "109.98959083099726", + "province": "广西壮族自治区" + }, + { + "area": "灌阳县", + "city": "桂林市", + "country": "中国", + "lat": "25.4951207520505", + "lng": "111.16755205093322", + "province": "广西壮族自治区" + }, + { + "area": "龙胜各族自治县", + "city": "桂林市", + "country": "中国", + "lat": "25.804116784253843", + "lng": "110.01749399673898", + "province": "广西壮族自治区" + }, + { + "area": "资源县", + "city": "桂林市", + "country": "中国", + "lat": "26.048569077338414", + "lng": "110.65843911010187", + "province": "广西壮族自治区" + }, + { + "area": "平乐县", + "city": "桂林市", + "country": "中国", + "lat": "24.639632128059755", + "lng": "110.64944626347499", + "province": "广西壮族自治区" + }, + { + "area": "恭城瑶族自治县", + "city": "桂林市", + "country": "中国", + "lat": "24.837194365911333", + "lng": "110.83455963070226", + "province": "广西壮族自治区" + }, + { + "area": "荔浦市", + "city": "桂林市", + "country": "中国", + "lat": "24.494121641923368", + "lng": "110.4014367783597", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "梧州市", + "country": "中国", + "lat": "23.48274528113516", + "lng": "111.28551681182014", + "province": "广西壮族自治区" + }, + { + "area": "万秀区", + "city": "梧州市", + "country": "中国", + "lat": "23.478845767295883", + "lng": "111.32751969101128", + "province": "广西壮族自治区" + }, + { + "area": "长洲区", + "city": "梧州市", + "country": "中国", + "lat": "23.49150958440631", + "lng": "111.2814991404281", + "province": "广西壮族自治区" + }, + { + "area": "龙圩区", + "city": "梧州市", + "country": "中国", + "lat": "23.421414485718135", + "lng": "111.2534482932606", + "province": "广西壮族自治区" + }, + { + "area": "苍梧县", + "city": "梧州市", + "country": "中国", + "lat": "23.845998205466344", + "lng": "111.55554663955536", + "province": "广西壮族自治区" + }, + { + "area": "藤县", + "city": "梧州市", + "country": "中国", + "lat": "23.381009915550127", + "lng": "110.92149925487912", + "province": "广西壮族自治区" + }, + { + "area": "蒙山县", + "city": "梧州市", + "country": "中国", + "lat": "24.20001744593537", + "lng": "110.53141700425248", + "province": "广西壮族自治区" + }, + { + "area": "岑溪市", + "city": "梧州市", + "country": "中国", + "lat": "22.92462127871964", + "lng": "111.00143182658881", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "北海市", + "country": "中国", + "lat": "21.48683649576942", + "lng": "109.126533212566", + "province": "广西壮族自治区" + }, + { + "area": "海城区", + "city": "北海市", + "country": "中国", + "lat": "21.481065838235963", + "lng": "109.12452136754654", + "province": "广西壮族自治区" + }, + { + "area": "银海区", + "city": "北海市", + "country": "中国", + "lat": "21.454768668894744", + "lng": "109.14654476440518", + "province": "广西壮族自治区" + }, + { + "area": "铁山港区", + "city": "北海市", + "country": "中国", + "lat": "21.535295042849512", + "lng": "109.42847264861612", + "province": "广西壮族自治区" + }, + { + "area": "合浦县", + "city": "北海市", + "country": "中国", + "lat": "21.66700573564183", + "lng": "109.21343861130296", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "防城港市", + "country": "中国", + "lat": "21.6930052899694", + "lng": "108.360418838298", + "province": "广西壮族自治区" + }, + { + "area": "港口区", + "city": "防城港市", + "country": "中国", + "lat": "21.649565586624067", + "lng": "108.38648254384755", + "province": "广西壮族自治区" + }, + { + "area": "防城区", + "city": "防城港市", + "country": "中国", + "lat": "21.775411305197203", + "lng": "108.36044848237981", + "province": "广西壮族自治区" + }, + { + "area": "上思县", + "city": "防城港市", + "country": "中国", + "lat": "22.159914083110326", + "lng": "107.99044264125014", + "province": "广西壮族自治区" + }, + { + "area": "东兴市", + "city": "防城港市", + "country": "中国", + "lat": "21.553615433580305", + "lng": "107.97748898597", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "钦州市", + "country": "中国", + "lat": "21.986593539484296", + "lng": "108.66058016842224", + "province": "广西壮族自治区" + }, + { + "area": "钦南区", + "city": "钦州市", + "country": "中国", + "lat": "21.945972440988985", + "lng": "108.66454861267236", + "province": "广西壮族自治区" + }, + { + "area": "钦北区", + "city": "钦州市", + "country": "中国", + "lat": "22.020367050196267", + "lng": "108.63851257493252", + "province": "广西壮族自治区" + }, + { + "area": "灵山县", + "city": "钦州市", + "country": "中国", + "lat": "22.42241332670075", + "lng": "109.29747796631128", + "province": "广西壮族自治区" + }, + { + "area": "浦北县", + "city": "钦州市", + "country": "中国", + "lat": "22.27782232693711", + "lng": "109.56342292940231", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "贵港市", + "country": "中国", + "lat": "23.117448382037534", + "lng": "109.60552031033306", + "province": "广西壮族自治区" + }, + { + "area": "港北区", + "city": "贵港市", + "country": "中国", + "lat": "23.117563632763698", + "lng": "109.57843298565523", + "province": "广西壮族自治区" + }, + { + "area": "港南区", + "city": "贵港市", + "country": "中国", + "lat": "23.081239578360368", + "lng": "109.60655345149974", + "province": "广西壮族自治区" + }, + { + "area": "覃塘区", + "city": "贵港市", + "country": "中国", + "lat": "23.13325108921251", + "lng": "109.45942672936037", + "province": "广西壮族自治区" + }, + { + "area": "平南县", + "city": "贵港市", + "country": "中国", + "lat": "23.545506098828316", + "lng": "110.39845197864268", + "province": "广西壮族自治区" + }, + { + "area": "桂平市", + "city": "贵港市", + "country": "中国", + "lat": "23.40004888369942", + "lng": "110.08552599671751", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "玉林市", + "country": "中国", + "lat": "22.659830509953142", + "lng": "110.1884531233724", + "province": "广西壮族自治区" + }, + { + "area": "玉州区", + "city": "玉林市", + "country": "中国", + "lat": "22.634492736172014", + "lng": "110.15743140022326", + "province": "广西壮族自治区" + }, + { + "area": "福绵区", + "city": "玉林市", + "country": "中国", + "lat": "22.56370541224873", + "lng": "110.08853765576929", + "province": "广西壮族自治区" + }, + { + "area": "容县", + "city": "玉林市", + "country": "中国", + "lat": "22.863665599934787", + "lng": "110.56453016228923", + "province": "广西壮族自治区" + }, + { + "area": "陆川县", + "city": "玉林市", + "country": "中国", + "lat": "22.32722152776934", + "lng": "110.27045619945135", + "province": "广西壮族自治区" + }, + { + "area": "博白县", + "city": "玉林市", + "country": "中国", + "lat": "22.278674815493492", + "lng": "109.98255305648165", + "province": "广西壮族自治区" + }, + { + "area": "兴业县", + "city": "玉林市", + "country": "中国", + "lat": "22.742267653422893", + "lng": "109.881551807009", + "province": "广西壮族自治区" + }, + { + "area": "北流市", + "city": "玉林市", + "country": "中国", + "lat": "22.713958021611358", + "lng": "110.36057016580777", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "百色市", + "country": "中国", + "lat": "23.908185934295958", + "lng": "106.62458932565383", + "province": "广西壮族自治区" + }, + { + "area": "右江区", + "city": "百色市", + "country": "中国", + "lat": "23.907084503108653", + "lng": "106.6255891396861", + "province": "广西壮族自治区" + }, + { + "area": "田阳区", + "city": "百色市", + "country": "中国", + "lat": "23.74200572247847", + "lng": "106.92141255250411", + "province": "广西壮族自治区" + }, + { + "area": "田东县", + "city": "百色市", + "country": "中国", + "lat": "23.603129804014763", + "lng": "107.13249943540772", + "province": "广西壮族自治区" + }, + { + "area": "平果县", + "city": "百色市", + "country": "中国", + "lat": "23.33492274259196", + "lng": "107.59657106849201", + "province": "广西壮族自治区" + }, + { + "area": "德保县", + "city": "百色市", + "country": "中国", + "lat": "23.328994351285857", + "lng": "106.62158260728236", + "province": "广西壮族自治区" + }, + { + "area": "那坡县", + "city": "百色市", + "country": "中国", + "lat": "23.39379383129231", + "lng": "105.83942261016988", + "province": "广西壮族自治区" + }, + { + "area": "凌云县", + "city": "百色市", + "country": "中国", + "lat": "24.354015240603566", + "lng": "106.56841567704747", + "province": "广西壮族自治区" + }, + { + "area": "乐业县", + "city": "百色市", + "country": "中国", + "lat": "24.783216467052593", + "lng": "106.56342972214655", + "province": "广西壮族自治区" + }, + { + "area": "田林县", + "city": "百色市", + "country": "中国", + "lat": "24.300534611050978", + "lng": "106.23449791231099", + "province": "广西壮族自治区" + }, + { + "area": "西林县", + "city": "百色市", + "country": "中国", + "lat": "24.495667790361946", + "lng": "105.10049410469409", + "province": "广西壮族自治区" + }, + { + "area": "隆林各族自治县", + "city": "百色市", + "country": "中国", + "lat": "24.776813610296077", + "lng": "105.35045947039562", + "province": "广西壮族自治区" + }, + { + "area": "靖西市", + "city": "百色市", + "country": "中国", + "lat": "23.140125669019067", + "lng": "106.42445269708266", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "贺州市", + "country": "中国", + "lat": "24.409450902865487", + "lng": "111.57352631416218", + "province": "广西壮族自治区" + }, + { + "area": "八步区", + "city": "贺州市", + "country": "中国", + "lat": "24.41753104091857", + "lng": "111.55856737149277", + "province": "广西壮族自治区" + }, + { + "area": "平桂区", + "city": "贺州市", + "country": "中国", + "lat": "24.462001422772527", + "lng": "111.47841426578044", + "province": "广西壮族自治区" + }, + { + "area": "昭平县", + "city": "贺州市", + "country": "中国", + "lat": "24.17510605063606", + "lng": "110.81757491927796", + "province": "广西壮族自治区" + }, + { + "area": "钟山县", + "city": "贺州市", + "country": "中国", + "lat": "24.53167310793877", + "lng": "111.3095857401549", + "province": "广西壮族自治区" + }, + { + "area": "富川瑶族自治县", + "city": "贺州市", + "country": "中国", + "lat": "24.820159951323383", + "lng": "111.28451124863261", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "河池市", + "country": "中国", + "lat": "24.698911731272894", + "lng": "108.09149994498661", + "province": "广西壮族自治区" + }, + { + "area": "金城江区", + "city": "河池市", + "country": "中国", + "lat": "24.69567938223939", + "lng": "108.04350707482638", + "province": "广西壮族自治区" + }, + { + "area": "宜州区", + "city": "河池市", + "country": "中国", + "lat": "24.49108436773905", + "lng": "108.64353158747622", + "province": "广西壮族自治区" + }, + { + "area": "南丹县", + "city": "河池市", + "country": "中国", + "lat": "24.98184977548506", + "lng": "107.54748028933784", + "province": "广西壮族自治区" + }, + { + "area": "天峨县", + "city": "河池市", + "country": "中国", + "lat": "25.005664155231774", + "lng": "107.17845647579135", + "province": "广西壮族自治区" + }, + { + "area": "凤山县", + "city": "河池市", + "country": "中国", + "lat": "24.553217796777115", + "lng": "107.04841983631258", + "province": "广西壮族自治区" + }, + { + "area": "东兰县", + "city": "河池市", + "country": "中国", + "lat": "24.516871463380625", + "lng": "107.38050415950381", + "province": "广西壮族自治区" + }, + { + "area": "罗城仫佬族自治县", + "city": "河池市", + "country": "中国", + "lat": "24.783084996429107", + "lng": "108.91157445325456", + "province": "广西壮族自治区" + }, + { + "area": "环江毛南族自治县", + "city": "河池市", + "country": "中国", + "lat": "24.80371800911555", + "lng": "108.33833714141177", + "province": "广西壮族自治区" + }, + { + "area": "巴马瑶族自治县", + "city": "河池市", + "country": "中国", + "lat": "24.147264804270304", + "lng": "107.26648125302391", + "province": "广西壮族自治区" + }, + { + "area": "都安瑶族自治县", + "city": "河池市", + "country": "中国", + "lat": "23.9373312619231", + "lng": "108.11145804764794", + "province": "广西壮族自治区" + }, + { + "area": "大化瑶族自治县", + "city": "河池市", + "country": "中国", + "lat": "23.74281822296297", + "lng": "108.00441075294238", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "来宾市", + "country": "中国", + "lat": "23.75654676260728", + "lng": "109.22745819590091", + "province": "广西壮族自治区" + }, + { + "area": "兴宾区", + "city": "来宾市", + "country": "中国", + "lat": "23.733211038144013", + "lng": "109.24149907033942", + "province": "广西壮族自治区" + }, + { + "area": "忻城县", + "city": "来宾市", + "country": "中国", + "lat": "24.071888636575988", + "lng": "108.67256239612422", + "province": "广西壮族自治区" + }, + { + "area": "象州县", + "city": "来宾市", + "country": "中国", + "lat": "23.979680993270705", + "lng": "109.71146215027841", + "province": "广西壮族自治区" + }, + { + "area": "武宣县", + "city": "来宾市", + "country": "中国", + "lat": "23.600404197633267", + "lng": "109.66944220328261", + "province": "广西壮族自治区" + }, + { + "area": "金秀瑶族自治县", + "city": "来宾市", + "country": "中国", + "lat": "24.13631948648557", + "lng": "110.19550625891219", + "province": "广西壮族自治区" + }, + { + "area": "合山市", + "city": "来宾市", + "country": "中国", + "lat": "23.812260071049884", + "lng": "108.8925657696864", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "崇左市", + "country": "中国", + "lat": "22.383117234663302", + "lng": "107.3715202061015", + "province": "广西壮族自治区" + }, + { + "area": "江州区", + "city": "崇左市", + "country": "中国", + "lat": "22.411245728018145", + "lng": "107.3595332173803", + "province": "广西壮族自治区" + }, + { + "area": "扶绥县", + "city": "崇左市", + "country": "中国", + "lat": "22.64109713634538", + "lng": "107.91046515426495", + "province": "广西壮族自治区" + }, + { + "area": "宁明县", + "city": "崇左市", + "country": "中国", + "lat": "22.145884844183623", + "lng": "107.0835238190199", + "province": "广西壮族自治区" + }, + { + "area": "龙州县", + "city": "崇左市", + "country": "中国", + "lat": "22.348298905766136", + "lng": "106.86058190847446", + "province": "广西壮族自治区" + }, + { + "area": "大新县", + "city": "崇左市", + "country": "中国", + "lat": "22.836229044405744", + "lng": "107.20755690311638", + "province": "广西壮族自治区" + }, + { + "area": "天等县", + "city": "崇左市", + "country": "中国", + "lat": "23.087505812090356", + "lng": "107.1494726485215", + "province": "广西壮族自治区" + }, + { + "area": "凭祥市", + "city": "崇左市", + "country": "中国", + "lat": "22.100152592954007", + "lng": "106.77352361813976", + "province": "广西壮族自治区" + }, + { + "area": "", + "city": "海口市", + "country": "中国", + "lat": "20.04404943925674", + "lng": "110.32552547126409", + "province": "海南省" + }, + { + "area": "秀英区", + "city": "海口市", + "country": "中国", + "lat": "20.01364238516145", + "lng": "110.30043588820925", + "province": "海南省" + }, + { + "area": "龙华区", + "city": "海口市", + "country": "中国", + "lat": "20.036320733520892", + "lng": "110.33554112854428", + "province": "海南省" + }, + { + "area": "琼山区", + "city": "海口市", + "country": "中国", + "lat": "20.00915064449064", + "lng": "110.36052605900726", + "province": "海南省" + }, + { + "area": "美兰区", + "city": "海口市", + "country": "中国", + "lat": "20.034646217625145", + "lng": "110.373498399042", + "province": "海南省" + }, + { + "area": "", + "city": "三亚市", + "country": "中国", + "lat": "18.258736291747855", + "lng": "109.51855670139908", + "province": "海南省" + }, + { + "area": "海棠区", + "city": "三亚市", + "country": "中国", + "lat": "18.34801783549779", + "lng": "109.71318002841308", + "province": "海南省" + }, + { + "area": "吉阳区", + "city": "三亚市", + "country": "中国", + "lat": "18.298121377248343", + "lng": "109.60226380553836", + "province": "海南省" + }, + { + "area": "天涯区", + "city": "三亚市", + "country": "中国", + "lat": "18.452443306202696", + "lng": "109.39862587224313", + "province": "海南省" + }, + { + "area": "崖州区", + "city": "三亚市", + "country": "中国", + "lat": "18.394760392009328", + "lng": "109.1549220732324", + "province": "海南省" + }, + { + "area": "", + "city": "三沙市", + "country": "中国", + "lat": "30.316571904872184", + "lng": "112.26157741482734", + "province": "海南省" + }, + { + "area": "西沙群岛", + "city": "三沙市", + "country": "中国", + "lat": "16.670664069294457", + "lng": "112.16056704236507", + "province": "海南省" + }, + { + "area": "南沙群岛", + "city": "三沙市", + "country": "中国", + "lat": "8.741764576647663", + "lng": "114.39947592223567", + "province": "海南省" + }, + { + "area": "中沙群岛的岛礁及其海域", + "city": "三沙市", + "country": "中国", + "lat": "15.914359953954222", + "lng": "114.36042991039747", + "province": "海南省" + }, + { + "area": "", + "city": "儋州市", + "country": "中国", + "lat": "19.64278758232148", + "lng": "109.1739880875565", + "province": "海南省" + }, + { + "area": "儋州市", + "city": "儋州市", + "country": "中国", + "lat": "19.527146110044196", + "lng": "109.58745583568611", + "province": "海南省" + }, + { + "area": "", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "五指山市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "琼海市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "文昌市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "万宁市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "东方市", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "定安县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "屯昌县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "澄迈县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "临高县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "20.025801964462914", + "lng": "110.35553651088428", + "province": "海南省" + }, + { + "area": "白沙黎族自治县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "19.254235689459627", + "lng": "110.47147936573002", + "province": "海南省" + }, + { + "area": "昌江黎族自治县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "19.254235689459627", + "lng": "110.47147936573002", + "province": "海南省" + }, + { + "area": "乐东黎族自治县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "18.751742805146403", + "lng": "109.18118558079172", + "province": "海南省" + }, + { + "area": "陵水黎族自治县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "19.254235689459627", + "lng": "110.47147936573002", + "province": "海南省" + }, + { + "area": "保亭黎族苗族自治县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "19.254235689459627", + "lng": "110.47147936573002", + "province": "海南省" + }, + { + "area": "琼中黎族苗族自治县", + "city": "省直辖县级行政区划", + "country": "中国", + "lat": "19.254235689459627", + "lng": "110.47147936573002", + "province": "海南省" + }, + { + "area": "", + "city": "市辖区", + "country": "中国", + "lat": "29.568996245338923", + "lng": "106.55843415537664", + "province": "重庆市" + }, + { + "area": "万州区", + "city": "市辖区", + "country": "中国", + "lat": "30.813621636707666", + "lng": "108.41555837050288", + "province": "重庆市" + }, + { + "area": "涪陵区", + "city": "市辖区", + "country": "中国", + "lat": "29.70927819797873", + "lng": "107.39641979754104", + "province": "重庆市" + }, + { + "area": "渝中区", + "city": "市辖区", + "country": "中国", + "lat": "29.559090182993803", + "lng": "106.57544006681098", + "province": "重庆市" + }, + { + "area": "大渡口区", + "city": "市辖区", + "country": "中国", + "lat": "29.490107128556012", + "lng": "106.48853359010742", + "province": "重庆市" + }, + { + "area": "江北区", + "city": "市辖区", + "country": "中国", + "lat": "29.612832314080265", + "lng": "106.5804150623847", + "province": "重庆市" + }, + { + "area": "沙坪坝区", + "city": "市辖区", + "country": "中国", + "lat": "29.547192516541124", + "lng": "106.46446511092543", + "province": "重庆市" + }, + { + "area": "九龙坡区", + "city": "市辖区", + "country": "中国", + "lat": "29.50792771555286", + "lng": "106.51755873943073", + "province": "重庆市" + }, + { + "area": "南岸区", + "city": "市辖区", + "country": "中国", + "lat": "29.50268309883491", + "lng": "106.66842977859555", + "province": "重庆市" + }, + { + "area": "北碚区", + "city": "市辖区", + "country": "中国", + "lat": "29.811156512938553", + "lng": "106.40228116964546", + "province": "重庆市" + }, + { + "area": "綦江区", + "city": "市辖区", + "country": "中国", + "lat": "29.226858419326682", + "lng": "106.37178962640816", + "province": "重庆市" + }, + { + "area": "大足区", + "city": "市辖区", + "country": "中国", + "lat": "29.222926941488858", + "lng": "106.29811321359007", + "province": "重庆市" + }, + { + "area": "渝北区", + "city": "市辖区", + "country": "中国", + "lat": "29.723927343006626", + "lng": "106.6375590606026", + "province": "重庆市" + }, + { + "area": "巴南区", + "city": "市辖区", + "country": "中国", + "lat": "29.408474739770405", + "lng": "106.54745425696237", + "province": "重庆市" + }, + { + "area": "黔江区", + "city": "市辖区", + "country": "中国", + "lat": "29.53881256766016", + "lng": "108.77759119834955", + "province": "重庆市" + }, + { + "area": "长寿区", + "city": "市辖区", + "country": "中国", + "lat": "29.863520067323154", + "lng": "107.08753107006804", + "province": "重庆市" + }, + { + "area": "江津区", + "city": "市辖区", + "country": "中国", + "lat": "29.295884374464997", + "lng": "106.26559760837834", + "province": "重庆市" + }, + { + "area": "合川区", + "city": "市辖区", + "country": "中国", + "lat": "29.978181239534244", + "lng": "106.28254108757974", + "province": "重庆市" + }, + { + "area": "永川区", + "city": "市辖区", + "country": "中国", + "lat": "29.568996245338923", + "lng": "106.55843415537664", + "province": "重庆市" + }, + { + "area": "南川区", + "city": "市辖区", + "country": "中国", + "lat": "29.16347859960621", + "lng": "107.10558512437106", + "province": "重庆市" + }, + { + "area": "璧山区", + "city": "市辖区", + "country": "中国", + "lat": "29.573041606732865", + "lng": "106.2421777956049", + "province": "重庆市" + }, + { + "area": "铜梁区", + "city": "市辖区", + "country": "中国", + "lat": "29.855981139651337", + "lng": "106.08307441525771", + "province": "重庆市" + }, + { + "area": "潼南区", + "city": "市辖区", + "country": "中国", + "lat": "30.19731423966403", + "lng": "105.84739903616547", + "province": "重庆市" + }, + { + "area": "荣昌区", + "city": "市辖区", + "country": "中国", + "lat": "29.41130739668994", + "lng": "105.60141979927967", + "province": "重庆市" + }, + { + "area": "开州区", + "city": "市辖区", + "country": "中国", + "lat": "31.17229103609067", + "lng": "108.40268080169514", + "province": "重庆市" + }, + { + "area": "梁平区", + "city": "市辖区", + "country": "中国", + "lat": "30.66055325502347", + "lng": "107.77609725763075", + "province": "重庆市" + }, + { + "area": "武隆区", + "city": "市辖区", + "country": "中国", + "lat": "29.3308870846812", + "lng": "107.76616602837842", + "province": "重庆市" + }, + { + "area": "", + "city": "县", + "country": "中国", + "lat": "29.568996245338923", + "lng": "106.55843415537664", + "province": "重庆市" + }, + { + "area": "城口县", + "city": "县", + "country": "中国", + "lat": "31.953390746292587", + "lng": "108.67161164255864", + "province": "重庆市" + }, + { + "area": "丰都县", + "city": "县", + "country": "中国", + "lat": "29.86941278921405", + "lng": "107.73748061819887", + "province": "重庆市" + }, + { + "area": "垫江县", + "city": "县", + "country": "中国", + "lat": "30.333293968500094", + "lng": "107.33956587471806", + "province": "重庆市" + }, + { + "area": "忠县", + "city": "县", + "country": "中国", + "lat": "30.305268389356584", + "lng": "108.04453753385525", + "province": "重庆市" + }, + { + "area": "云阳县", + "city": "县", + "country": "中国", + "lat": "30.93661127197471", + "lng": "108.70344750000172", + "province": "重庆市" + }, + { + "area": "奉节县", + "city": "县", + "country": "中国", + "lat": "31.024601766549154", + "lng": "109.47047275630993", + "province": "重庆市" + }, + { + "area": "巫山县", + "city": "县", + "country": "中国", + "lat": "31.080518811735914", + "lng": "109.8855455070308", + "province": "重庆市" + }, + { + "area": "巫溪县", + "city": "县", + "country": "中国", + "lat": "31.404880009858267", + "lng": "109.57640255899645", + "province": "重庆市" + }, + { + "area": "石柱土家族自治县", + "city": "县", + "country": "中国", + "lat": "30.006108697868918", + "lng": "108.12041416638326", + "province": "重庆市" + }, + { + "area": "秀山土家族苗族自治县", + "city": "县", + "country": "中国", + "lat": "29.651802622441807", + "lng": "108.76071221748374", + "province": "重庆市" + }, + { + "area": "酉阳土家族苗族自治县", + "city": "县", + "country": "中国", + "lat": "29.651802622441807", + "lng": "108.76071221748374", + "province": "重庆市" + }, + { + "area": "彭水苗族土家族自治县", + "city": "县", + "country": "中国", + "lat": "29.29946229044254", + "lng": "108.17257803588225", + "province": "重庆市" + }, + { + "area": "", + "city": "成都市", + "country": "中国", + "lat": "30.655821878416408", + "lng": "104.08153351042463", + "province": "四川省" + }, + { + "area": "锦江区", + "city": "成都市", + "country": "中国", + "lat": "30.661904490317255", + "lng": "104.08956175659785", + "province": "四川省" + }, + { + "area": "青羊区", + "city": "成都市", + "country": "中国", + "lat": "30.680037807006812", + "lng": "104.06744547494219", + "province": "四川省" + }, + { + "area": "金牛区", + "city": "成都市", + "country": "中国", + "lat": "30.697356042874134", + "lng": "104.05740358713781", + "province": "四川省" + }, + { + "area": "武侯区", + "city": "成都市", + "country": "中国", + "lat": "30.648712685321083", + "lng": "104.04942447827598", + "province": "四川省" + }, + { + "area": "成华区", + "city": "成都市", + "country": "中国", + "lat": "30.665589283983017", + "lng": "104.10859155035178", + "province": "四川省" + }, + { + "area": "龙泉驿区", + "city": "成都市", + "country": "中国", + "lat": "30.56269784099964", + "lng": "104.28139696435632", + "province": "四川省" + }, + { + "area": "青白江区", + "city": "成都市", + "country": "中国", + "lat": "30.884421372736316", + "lng": "104.25751245813483", + "province": "四川省" + }, + { + "area": "新都区", + "city": "成都市", + "country": "中国", + "lat": "30.82940746819094", + "lng": "104.1653928450365", + "province": "四川省" + }, + { + "area": "温江区", + "city": "成都市", + "country": "中国", + "lat": "30.68848683662664", + "lng": "103.86357306318057", + "province": "四川省" + }, + { + "area": "双流区", + "city": "成都市", + "country": "中国", + "lat": "30.580399352821136", + "lng": "103.93039154226817", + "province": "四川省" + }, + { + "area": "郫都区", + "city": "成都市", + "country": "中国", + "lat": "30.79953765357336", + "lng": "103.90544568808663", + "province": "四川省" + }, + { + "area": "金堂县", + "city": "成都市", + "country": "中国", + "lat": "30.868358423946407", + "lng": "104.41844263261966", + "province": "四川省" + }, + { + "area": "大邑县", + "city": "成都市", + "country": "中国", + "lat": "30.59315540240197", + "lng": "103.52752981766662", + "province": "四川省" + }, + { + "area": "蒲江县", + "city": "成都市", + "country": "中国", + "lat": "30.202500428139256", + "lng": "103.51257132414501", + "province": "四川省" + }, + { + "area": "新津县", + "city": "成都市", + "country": "中国", + "lat": "30.416363953297463", + "lng": "103.81743303794937", + "province": "四川省" + }, + { + "area": "都江堰市", + "city": "成都市", + "country": "中国", + "lat": "30.994256893542204", + "lng": "103.65353360443186", + "province": "四川省" + }, + { + "area": "彭州市", + "city": "成都市", + "country": "中国", + "lat": "30.995564002628758", + "lng": "103.96556137078096", + "province": "四川省" + }, + { + "area": "邛崃市", + "city": "成都市", + "country": "中国", + "lat": "30.41639860085413", + "lng": "103.47048112964444", + "province": "四川省" + }, + { + "area": "崇州市", + "city": "成都市", + "country": "中国", + "lat": "30.63659589137926", + "lng": "103.67943336923445", + "province": "四川省" + }, + { + "area": "简阳市", + "city": "成都市", + "country": "中国", + "lat": "30.41745149135266", + "lng": "104.55349406265084", + "province": "四川省" + }, + { + "area": "", + "city": "自贡市", + "country": "中国", + "lat": "29.345584921327575", + "lng": "104.78444884671711", + "province": "四川省" + }, + { + "area": "自流井区", + "city": "自贡市", + "country": "中国", + "lat": "29.343498562347857", + "lng": "104.78344732590438", + "province": "四川省" + }, + { + "area": "贡井区", + "city": "自贡市", + "country": "中国", + "lat": "29.35147626952156", + "lng": "104.72155659154275", + "province": "四川省" + }, + { + "area": "大安区", + "city": "自贡市", + "country": "中国", + "lat": "29.369928541322043", + "lng": "104.78041635328415", + "province": "四川省" + }, + { + "area": "沿滩区", + "city": "自贡市", + "country": "中国", + "lat": "29.278797205251124", + "lng": "104.8804090751611", + "province": "四川省" + }, + { + "area": "荣县", + "city": "自贡市", + "country": "中国", + "lat": "29.450986724011596", + "lng": "104.42387467445577", + "province": "四川省" + }, + { + "area": "富顺县", + "city": "自贡市", + "country": "中国", + "lat": "29.186886257830583", + "lng": "104.98149440602947", + "province": "四川省" + }, + { + "area": "", + "city": "攀枝花市", + "country": "中国", + "lat": "26.58803317333301", + "lng": "101.72554117091441", + "province": "四川省" + }, + { + "area": "东区", + "city": "攀枝花市", + "country": "中国", + "lat": "26.58803317333301", + "lng": "101.72554117091441", + "province": "四川省" + }, + { + "area": "西区", + "city": "攀枝花市", + "country": "中国", + "lat": "26.58803317333301", + "lng": "101.72554117091441", + "province": "四川省" + }, + { + "area": "仁和区", + "city": "攀枝花市", + "country": "中国", + "lat": "26.504019493295285", + "lng": "101.7444499629099", + "province": "四川省" + }, + { + "area": "米易县", + "city": "攀枝花市", + "country": "中国", + "lat": "26.89696797612047", + "lng": "102.11644043040211", + "province": "四川省" + }, + { + "area": "盐边县", + "city": "攀枝花市", + "country": "中国", + "lat": "26.688767481963932", + "lng": "101.86049854831414", + "province": "四川省" + }, + { + "area": "", + "city": "泸州市", + "country": "中国", + "lat": "28.87766830360723", + "lng": "105.4485240693266", + "province": "四川省" + }, + { + "area": "江阳区", + "city": "泸州市", + "country": "中国", + "lat": "28.884498343782106", + "lng": "105.44157316095377", + "province": "四川省" + }, + { + "area": "纳溪区", + "city": "泸州市", + "country": "中国", + "lat": "28.779001444761114", + "lng": "105.37800502071394", + "province": "四川省" + }, + { + "area": "龙马潭区", + "city": "泸州市", + "country": "中国", + "lat": "28.91908396336834", + "lng": "105.44459416238283", + "province": "四川省" + }, + { + "area": "泸县", + "city": "泸州市", + "country": "中国", + "lat": "29.157827612736778", + "lng": "105.38830966287658", + "province": "四川省" + }, + { + "area": "合江县", + "city": "泸州市", + "country": "中国", + "lat": "28.818006422269857", + "lng": "105.8373682752998", + "province": "四川省" + }, + { + "area": "叙永县", + "city": "泸州市", + "country": "中国", + "lat": "28.161785996115697", + "lng": "105.45117496888565", + "province": "四川省" + }, + { + "area": "古蔺县", + "city": "泸州市", + "country": "中国", + "lat": "28.044757961922556", + "lng": "105.81914219549165", + "province": "四川省" + }, + { + "area": "", + "city": "德阳市", + "country": "中国", + "lat": "31.133115003656755", + "lng": "104.40441936496448", + "province": "四川省" + }, + { + "area": "旌阳区", + "city": "德阳市", + "country": "中国", + "lat": "31.148596291553144", + "lng": "104.42343882820505", + "province": "四川省" + }, + { + "area": "罗江区", + "city": "德阳市", + "country": "中国", + "lat": "31.324178639826055", + "lng": "104.51741416082588", + "province": "四川省" + }, + { + "area": "中江县", + "city": "德阳市", + "country": "中国", + "lat": "31.038953695301622", + "lng": "104.6855301505767", + "province": "四川省" + }, + { + "area": "广汉市", + "city": "德阳市", + "country": "中国", + "lat": "30.9824152397429", + "lng": "104.28842189310545", + "province": "四川省" + }, + { + "area": "什邡市", + "city": "德阳市", + "country": "中国", + "lat": "31.13288904823836", + "lng": "104.17442710355034", + "province": "四川省" + }, + { + "area": "绵竹市", + "city": "德阳市", + "country": "中国", + "lat": "31.343592258210748", + "lng": "104.22760930499648", + "province": "四川省" + }, + { + "area": "", + "city": "绵阳市", + "country": "中国", + "lat": "31.473663048745863", + "lng": "104.6855618607612", + "province": "四川省" + }, + { + "area": "涪城区", + "city": "绵阳市", + "country": "中国", + "lat": "31.46131438857991", + "lng": "104.7634203349053", + "province": "四川省" + }, + { + "area": "游仙区", + "city": "绵阳市", + "country": "中国", + "lat": "31.479904474057665", + "lng": "104.77242899171212", + "province": "四川省" + }, + { + "area": "安州区", + "city": "绵阳市", + "country": "中国", + "lat": "31.540750527876018", + "lng": "104.57355502129967", + "province": "四川省" + }, + { + "area": "三台县", + "city": "绵阳市", + "country": "中国", + "lat": "31.101585571237983", + "lng": "105.10148979832758", + "province": "四川省" + }, + { + "area": "盐亭县", + "city": "绵阳市", + "country": "中国", + "lat": "31.214318764837078", + "lng": "105.39550321547124", + "province": "四川省" + }, + { + "area": "梓潼县", + "city": "绵阳市", + "country": "中国", + "lat": "31.648313467681294", + "lng": "105.17756684281485", + "province": "四川省" + }, + { + "area": "北川羌族自治县", + "city": "绵阳市", + "country": "中国", + "lat": "31.963084103414715", + "lng": "104.36158555316277", + "province": "四川省" + }, + { + "area": "平武县", + "city": "绵阳市", + "country": "中国", + "lat": "32.41468197769553", + "lng": "104.53542150324834", + "province": "四川省" + }, + { + "area": "江油市", + "city": "绵阳市", + "country": "中国", + "lat": "31.784128193388135", + "lng": "104.75241160088052", + "province": "四川省" + }, + { + "area": "", + "city": "广元市", + "country": "中国", + "lat": "32.44161630531542", + "lng": "105.85042318166482", + "province": "四川省" + }, + { + "area": "利州区", + "city": "广元市", + "country": "中国", + "lat": "32.440207812726065", + "lng": "105.85242622329098", + "province": "四川省" + }, + { + "area": "昭化区", + "city": "广元市", + "country": "中国", + "lat": "32.32961849015881", + "lng": "105.9694189278245", + "province": "四川省" + }, + { + "area": "朝天区", + "city": "广元市", + "country": "中国", + "lat": "32.64972624030801", + "lng": "105.89658880860304", + "province": "四川省" + }, + { + "area": "旺苍县", + "city": "广元市", + "country": "中国", + "lat": "32.23509738307936", + "lng": "106.29649124536307", + "province": "四川省" + }, + { + "area": "青川县", + "city": "广元市", + "country": "中国", + "lat": "32.58161685729994", + "lng": "105.24540705458948", + "province": "四川省" + }, + { + "area": "剑阁县", + "city": "广元市", + "country": "中国", + "lat": "32.29347851677268", + "lng": "105.53157601886727", + "province": "四川省" + }, + { + "area": "苍溪县", + "city": "广元市", + "country": "中国", + "lat": "31.73868440061661", + "lng": "105.94148261460028", + "province": "四川省" + }, + { + "area": "", + "city": "遂宁市", + "country": "中国", + "lat": "30.53909767110912", + "lng": "105.5994215306444", + "province": "四川省" + }, + { + "area": "船山区", + "city": "遂宁市", + "country": "中国", + "lat": "30.531470607828908", + "lng": "105.57452283750214", + "province": "四川省" + }, + { + "area": "安居区", + "city": "遂宁市", + "country": "中国", + "lat": "30.3614964697459", + "lng": "105.46246730988199", + "province": "四川省" + }, + { + "area": "蓬溪县", + "city": "遂宁市", + "country": "中国", + "lat": "30.76375144179148", + "lng": "105.71344605411188", + "province": "四川省" + }, + { + "area": "大英县", + "city": "遂宁市", + "country": "中国", + "lat": "30.600810129920717", + "lng": "105.24340392313277", + "province": "四川省" + }, + { + "area": "射洪市", + "city": "遂宁市", + "country": "中国", + "lat": "30.877138522336935", + "lng": "105.39450950991609", + "province": "四川省" + }, + { + "area": "", + "city": "内江市", + "country": "中国", + "lat": "29.58588653832045", + "lng": "105.06458802499718", + "province": "四川省" + }, + { + "area": "市中区", + "city": "内江市", + "country": "中国", + "lat": "29.592710148735634", + "lng": "105.07457421785665", + "province": "四川省" + }, + { + "area": "东兴区", + "city": "内江市", + "country": "中国", + "lat": "29.59848572858322", + "lng": "105.08254748773004", + "province": "四川省" + }, + { + "area": "威远县", + "city": "内江市", + "country": "中国", + "lat": "29.533634931412458", + "lng": "104.67449822860426", + "province": "四川省" + }, + { + "area": "资中县", + "city": "内江市", + "country": "中国", + "lat": "29.770234032564836", + "lng": "104.85849482242187", + "province": "四川省" + }, + { + "area": "内江经济开发区", + "city": "内江市", + "country": "中国", + "lat": "29.58430590364533", + "lng": "105.01636599710143", + "province": "四川省" + }, + { + "area": "隆昌市", + "city": "内江市", + "country": "中国", + "lat": "29.345238365347296", + "lng": "105.29429094213069", + "province": "四川省" + }, + { + "area": "", + "city": "乐山市", + "country": "中国", + "lat": "29.55794071745811", + "lng": "103.7725376036347", + "province": "四川省" + }, + { + "area": "市中区", + "city": "乐山市", + "country": "中国", + "lat": "29.561363941632962", + "lng": "103.76755865551674", + "province": "四川省" + }, + { + "area": "沙湾区", + "city": "乐山市", + "country": "中国", + "lat": "29.419272499245103", + "lng": "103.55643566073162", + "province": "四川省" + }, + { + "area": "五通桥区", + "city": "乐山市", + "country": "中国", + "lat": "29.413185014439133", + "lng": "103.82445508073617", + "province": "四川省" + }, + { + "area": "金口河区", + "city": "乐山市", + "country": "中国", + "lat": "29.250803570124337", + "lng": "103.08539389553661", + "province": "四川省" + }, + { + "area": "犍为县", + "city": "乐山市", + "country": "中国", + "lat": "29.214219463759488", + "lng": "103.95550653594924", + "province": "四川省" + }, + { + "area": "井研县", + "city": "乐山市", + "country": "中国", + "lat": "29.65730305907957", + "lng": "104.07651071352818", + "province": "四川省" + }, + { + "area": "夹江县", + "city": "乐山市", + "country": "中国", + "lat": "29.743846302985492", + "lng": "103.57841009994", + "province": "四川省" + }, + { + "area": "沐川县", + "city": "乐山市", + "country": "中国", + "lat": "28.962888278215505", + "lng": "103.90846703742643", + "province": "四川省" + }, + { + "area": "峨边彝族自治县", + "city": "乐山市", + "country": "中国", + "lat": "29.236089109562577", + "lng": "103.26857725337631", + "province": "四川省" + }, + { + "area": "马边彝族自治县", + "city": "乐山市", + "country": "中国", + "lat": "28.841736014812202", + "lng": "103.55245419105162", + "province": "四川省" + }, + { + "area": "峨眉山市", + "city": "乐山市", + "country": "中国", + "lat": "29.60697552746157", + "lng": "103.49154557410374", + "province": "四川省" + }, + { + "area": "", + "city": "南充市", + "country": "中国", + "lat": "30.843782508337036", + "lng": "106.11750261487227", + "province": "四川省" + }, + { + "area": "顺庆区", + "city": "南充市", + "country": "中国", + "lat": "30.802753098595275", + "lng": "106.09841065837705", + "province": "四川省" + }, + { + "area": "高坪区", + "city": "南充市", + "country": "中国", + "lat": "30.787254931591587", + "lng": "106.12554047291444", + "province": "四川省" + }, + { + "area": "嘉陵区", + "city": "南充市", + "country": "中国", + "lat": "30.76489556013861", + "lng": "106.078432972649", + "province": "四川省" + }, + { + "area": "南部县", + "city": "南充市", + "country": "中国", + "lat": "31.353705301525753", + "lng": "106.04357826970909", + "province": "四川省" + }, + { + "area": "营山县", + "city": "南充市", + "country": "中国", + "lat": "31.083002970198866", + "lng": "106.57240802851658", + "province": "四川省" + }, + { + "area": "蓬安县", + "city": "南充市", + "country": "中国", + "lat": "31.034630778270895", + "lng": "106.41848194209304", + "province": "四川省" + }, + { + "area": "仪陇县", + "city": "南充市", + "country": "中国", + "lat": "31.277597359981243", + "lng": "106.30943016843716", + "province": "四川省" + }, + { + "area": "西充县", + "city": "南充市", + "country": "中国", + "lat": "31.000688020791618", + "lng": "105.90761137653269", + "province": "四川省" + }, + { + "area": "阆中市", + "city": "南充市", + "country": "中国", + "lat": "31.564074553640427", + "lng": "106.01156526641945", + "province": "四川省" + }, + { + "area": "", + "city": "眉山市", + "country": "中国", + "lat": "30.082526119421058", + "lng": "103.85656331579456", + "province": "四川省" + }, + { + "area": "东坡区", + "city": "眉山市", + "country": "中国", + "lat": "30.04827213443505", + "lng": "103.83852480217091", + "province": "四川省" + }, + { + "area": "彭山区", + "city": "眉山市", + "country": "中国", + "lat": "30.198854416859795", + "lng": "103.87955823006952", + "province": "四川省" + }, + { + "area": "仁寿县", + "city": "眉山市", + "country": "中国", + "lat": "30.001663984300848", + "lng": "104.14047690442844", + "province": "四川省" + }, + { + "area": "洪雅县", + "city": "眉山市", + "country": "中国", + "lat": "29.91061583746853", + "lng": "103.37960224487875", + "province": "四川省" + }, + { + "area": "丹棱县", + "city": "眉山市", + "country": "中国", + "lat": "30.020362794871584", + "lng": "103.51958331729479", + "province": "四川省" + }, + { + "area": "青神县", + "city": "眉山市", + "country": "中国", + "lat": "29.837054743717477", + "lng": "103.85355883179157", + "province": "四川省" + }, + { + "area": "", + "city": "宜宾市", + "country": "中国", + "lat": "28.75800702855183", + "lng": "104.6494037048691", + "province": "四川省" + }, + { + "area": "翠屏区", + "city": "宜宾市", + "country": "中国", + "lat": "28.77205177302718", + "lng": "104.6264379855308", + "province": "四川省" + }, + { + "area": "南溪区", + "city": "宜宾市", + "country": "中国", + "lat": "28.8515036480266", + "lng": "104.97651330197829", + "province": "四川省" + }, + { + "area": "叙州区", + "city": "宜宾市", + "country": "中国", + "lat": "28.69624639475244", + "lng": "104.53944275624289", + "province": "四川省" + }, + { + "area": "江安县", + "city": "宜宾市", + "country": "中国", + "lat": "28.72960972185531", + "lng": "105.07359488518999", + "province": "四川省" + }, + { + "area": "长宁县", + "city": "宜宾市", + "country": "中国", + "lat": "28.588133452698838", + "lng": "104.92756445509465", + "province": "四川省" + }, + { + "area": "高县", + "city": "宜宾市", + "country": "中国", + "lat": "28.44251080410157", + "lng": "104.52441132031883", + "province": "四川省" + }, + { + "area": "珙县", + "city": "宜宾市", + "country": "中国", + "lat": "28.44431976524751", + "lng": "104.71557459549268", + "province": "四川省" + }, + { + "area": "筠连县", + "city": "宜宾市", + "country": "中国", + "lat": "28.170174457647605", + "lng": "104.5174064237849", + "province": "四川省" + }, + { + "area": "兴文县", + "city": "宜宾市", + "country": "中国", + "lat": "28.309904884116502", + "lng": "105.24240230063606", + "province": "四川省" + }, + { + "area": "屏山县", + "city": "宜宾市", + "country": "中国", + "lat": "28.83427496647727", + "lng": "104.35267533908066", + "province": "四川省" + }, + { + "area": "", + "city": "广安市", + "country": "中国", + "lat": "30.461746110678995", + "lng": "106.63955268233484", + "province": "四川省" + }, + { + "area": "广安区", + "city": "广安市", + "country": "中国", + "lat": "30.479768100141722", + "lng": "106.64853115607652", + "province": "四川省" + }, + { + "area": "前锋区", + "city": "广安市", + "country": "中国", + "lat": "30.506435157767033", + "lng": "106.90447959587928", + "province": "四川省" + }, + { + "area": "岳池县", + "city": "广安市", + "country": "中国", + "lat": "30.544119864579894", + "lng": "106.44641061972047", + "province": "四川省" + }, + { + "area": "武胜县", + "city": "广安市", + "country": "中国", + "lat": "30.35549566037789", + "lng": "106.3024617431046", + "province": "四川省" + }, + { + "area": "邻水县", + "city": "广安市", + "country": "中国", + "lat": "30.34107251833194", + "lng": "106.93640258895681", + "province": "四川省" + }, + { + "area": "华蓥市", + "city": "广安市", + "country": "中国", + "lat": "30.396307084289287", + "lng": "106.7894618160094", + "province": "四川省" + }, + { + "area": "", + "city": "达州市", + "country": "中国", + "lat": "31.214307723927455", + "lng": "107.47459385897544", + "province": "四川省" + }, + { + "area": "通川区", + "city": "达州市", + "country": "中国", + "lat": "31.22093180410479", + "lng": "107.51144711201394", + "province": "四川省" + }, + { + "area": "达川区", + "city": "达州市", + "country": "中国", + "lat": "31.20239336055401", + "lng": "107.51841059666617", + "province": "四川省" + }, + { + "area": "宣汉县", + "city": "达州市", + "country": "中国", + "lat": "31.35975482366174", + "lng": "107.73353356629586", + "province": "四川省" + }, + { + "area": "开江县", + "city": "达州市", + "country": "中国", + "lat": "31.089372149065603", + "lng": "107.87542487414112", + "province": "四川省" + }, + { + "area": "大竹县", + "city": "达州市", + "country": "中国", + "lat": "30.74207661790974", + "lng": "107.21157970735341", + "province": "四川省" + }, + { + "area": "渠县", + "city": "达州市", + "country": "中国", + "lat": "30.84229928348102", + "lng": "106.97958296702429", + "province": "四川省" + }, + { + "area": "达州经济开发区", + "city": "达州市", + "country": "中国", + "lat": "31.14228953995802", + "lng": "107.5011233359405", + "province": "四川省" + }, + { + "area": "万源市", + "city": "达州市", + "country": "中国", + "lat": "32.08742084778871", + "lng": "108.04154069684341", + "province": "四川省" + }, + { + "area": "", + "city": "雅安市", + "country": "中国", + "lat": "30.01679254570607", + "lng": "103.04954262360451", + "province": "四川省" + }, + { + "area": "雨城区", + "city": "雅安市", + "country": "中国", + "lat": "30.011061644393436", + "lng": "103.0395752053269", + "province": "四川省" + }, + { + "area": "名山区", + "city": "雅安市", + "country": "中国", + "lat": "30.075913663381538", + "lng": "103.11548579380317", + "province": "四川省" + }, + { + "area": "荥经县", + "city": "雅安市", + "country": "中国", + "lat": "29.799193512656352", + "lng": "102.85343551292941", + "province": "四川省" + }, + { + "area": "汉源县", + "city": "雅安市", + "country": "中国", + "lat": "29.350217385987463", + "lng": "102.65857589024432", + "province": "四川省" + }, + { + "area": "石棉县", + "city": "雅安市", + "country": "中国", + "lat": "29.234304877589505", + "lng": "102.36640453847592", + "province": "四川省" + }, + { + "area": "天全县", + "city": "雅安市", + "country": "中国", + "lat": "30.072472953275035", + "lng": "102.76453022767083", + "province": "四川省" + }, + { + "area": "芦山县", + "city": "雅安市", + "country": "中国", + "lat": "30.14987318956309", + "lng": "102.93452771831228", + "province": "四川省" + }, + { + "area": "宝兴县", + "city": "雅安市", + "country": "中国", + "lat": "30.37408211244484", + "lng": "102.82148423429224", + "province": "四川省" + }, + { + "area": "", + "city": "巴中市", + "country": "中国", + "lat": "31.872888585956545", + "lng": "106.7515853031645", + "province": "四川省" + }, + { + "area": "巴州区", + "city": "巴中市", + "country": "中国", + "lat": "31.857685602645372", + "lng": "106.77551310771157", + "province": "四川省" + }, + { + "area": "恩阳区", + "city": "巴中市", + "country": "中国", + "lat": "31.80261404417579", + "lng": "106.6355819024891", + "province": "四川省" + }, + { + "area": "通江县", + "city": "巴中市", + "country": "中国", + "lat": "31.9177143468814", + "lng": "107.25151684320765", + "province": "四川省" + }, + { + "area": "南江县", + "city": "巴中市", + "country": "中国", + "lat": "32.35253165416549", + "lng": "106.83448345088068", + "province": "四川省" + }, + { + "area": "平昌县", + "city": "巴中市", + "country": "中国", + "lat": "31.56618581009506", + "lng": "107.11059310022719", + "province": "四川省" + }, + { + "area": "巴中经济开发区", + "city": "巴中市", + "country": "中国", + "lat": "31.85415348182414", + "lng": "106.85893254211521", + "province": "四川省" + }, + { + "area": "", + "city": "资阳市", + "country": "中国", + "lat": "30.13495655925314", + "lng": "104.6344353416441", + "province": "四川省" + }, + { + "area": "雁江区", + "city": "资阳市", + "country": "中国", + "lat": "30.123753456785117", + "lng": "104.65842441062695", + "province": "四川省" + }, + { + "area": "安岳县", + "city": "资阳市", + "country": "中国", + "lat": "30.103392734493756", + "lng": "105.34245423273225", + "province": "四川省" + }, + { + "area": "乐至县", + "city": "资阳市", + "country": "中国", + "lat": "30.28234834600031", + "lng": "105.02747697007167", + "province": "四川省" + }, + { + "area": "", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "32.9082209186247", + "lng": "101.71360970816114", + "province": "四川省" + }, + { + "area": "马尔康市", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "31.911747955647705", + "lng": "102.21350208208408", + "province": "四川省" + }, + { + "area": "汶川县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "31.48300532046848", + "lng": "103.5965178842219", + "province": "四川省" + }, + { + "area": "理县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "31.442550437563135", + "lng": "103.17351138906746", + "province": "四川省" + }, + { + "area": "茂县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "31.686809397063193", + "lng": "103.85958979688823", + "province": "四川省" + }, + { + "area": "松潘县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "32.66179655985326", + "lng": "103.61057968918345", + "province": "四川省" + }, + { + "area": "九寨沟县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "33.257591509496066", + "lng": "104.24954673402509", + "province": "四川省" + }, + { + "area": "金川县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "31.482005950337257", + "lng": "102.0706104212229", + "province": "四川省" + }, + { + "area": "小金县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "31.002208697061754", + "lng": "102.369426359284", + "province": "四川省" + }, + { + "area": "黑水县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "32.067805449367526", + "lng": "102.99651735613097", + "province": "四川省" + }, + { + "area": "壤塘县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "32.271093316268534", + "lng": "100.98558348726313", + "province": "四川省" + }, + { + "area": "阿坝县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "32.9082209186247", + "lng": "101.71360970816114", + "province": "四川省" + }, + { + "area": "若尔盖县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "33.584376654702446", + "lng": "102.97439065413141", + "province": "四川省" + }, + { + "area": "红原县", + "city": "阿坝藏族羌族自治州", + "country": "中国", + "lat": "32.7966052787623", + "lng": "102.55061520946042", + "province": "四川省" + }, + { + "area": "", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.05527884351838", + "lng": "101.96854674579022", + "province": "四川省" + }, + { + "area": "康定市", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.004407384261924", + "lng": "101.96355522139348", + "province": "四川省" + }, + { + "area": "泸定县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "29.92040166495139", + "lng": "102.24143209630797", + "province": "四川省" + }, + { + "area": "丹巴县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.88476979933027", + "lng": "101.89643706758775", + "province": "四川省" + }, + { + "area": "九龙县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "29.006431902924817", + "lng": "101.5134156671805", + "province": "四川省" + }, + { + "area": "雅江县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.037568967863947", + "lng": "101.02050035294431", + "province": "四川省" + }, + { + "area": "道孚县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.985326277401796", + "lng": "101.13154034618545", + "province": "四川省" + }, + { + "area": "炉霍县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "31.397991882881524", + "lng": "100.68239693357377", + "province": "四川省" + }, + { + "area": "甘孜县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "31.628956694034013", + "lng": "99.99921035085072", + "province": "四川省" + }, + { + "area": "新龙县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.94546952526588", + "lng": "100.31839824092819", + "province": "四川省" + }, + { + "area": "德格县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "31.812106494712996", + "lng": "98.5874016113543", + "province": "四川省" + }, + { + "area": "白玉县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "31.21531444878755", + "lng": "98.8311002182397", + "province": "四川省" + }, + { + "area": "石渠县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "32.98400342047804", + "lng": "98.10948062240828", + "province": "四川省" + }, + { + "area": "色达县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "32.27433041322677", + "lng": "100.33941364918138", + "province": "四川省" + }, + { + "area": "理塘县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.000030621750792", + "lng": "100.27557457997872", + "province": "四川省" + }, + { + "area": "巴塘县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "30.01166170737641", + "lng": "99.11672669581999", + "province": "四川省" + }, + { + "area": "乡城县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "28.936733475223633", + "lng": "99.80505957092221", + "province": "四川省" + }, + { + "area": "稻城县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "29.04312155812638", + "lng": "100.30446155970226", + "province": "四川省" + }, + { + "area": "得荣县", + "city": "甘孜藏族自治州", + "country": "中国", + "lat": "28.718780051460737", + "lng": "99.29298419818103", + "province": "四川省" + }, + { + "area": "", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.88775230036972", + "lng": "102.2735026809702", + "province": "四川省" + }, + { + "area": "西昌市", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.900580896263623", + "lng": "102.27148382916775", + "province": "四川省" + }, + { + "area": "木里藏族自治县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.934598559239884", + "lng": "101.28639697674048", + "province": "四川省" + }, + { + "area": "盐源县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.4281548677411", + "lng": "101.5154291291499", + "province": "四川省" + }, + { + "area": "德昌县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.408504192993636", + "lng": "102.18259551084873", + "province": "四川省" + }, + { + "area": "会理县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "26.661199778427346", + "lng": "102.25143634510819", + "province": "四川省" + }, + { + "area": "会东县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "26.640823775829343", + "lng": "102.58446218230412", + "province": "四川省" + }, + { + "area": "宁南县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.064605070115846", + "lng": "102.76252636653581", + "province": "四川省" + }, + { + "area": "普格县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.38199621380657", + "lng": "102.5465967186295", + "province": "四川省" + }, + { + "area": "布拖县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.712128733800274", + "lng": "102.81847849300347", + "province": "四川省" + }, + { + "area": "金阳县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "27.702144511749296", + "lng": "103.25454895521494", + "province": "四川省" + }, + { + "area": "昭觉县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.02050626800562", + "lng": "102.84942278221764", + "province": "四川省" + }, + { + "area": "喜德县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.312709832521158", + "lng": "102.41956715684437", + "province": "四川省" + }, + { + "area": "冕宁县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.55529444536005", + "lng": "102.18357457402372", + "province": "四川省" + }, + { + "area": "越西县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.645827564326137", + "lng": "102.51447448140046", + "province": "四川省" + }, + { + "area": "甘洛县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.96482319050036", + "lng": "102.77859651312069", + "province": "四川省" + }, + { + "area": "美姑县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.33401962389037", + "lng": "103.13858579866466", + "province": "四川省" + }, + { + "area": "雷波县", + "city": "凉山彝族自治州", + "country": "中国", + "lat": "28.268950617624277", + "lng": "103.57842869486406", + "province": "四川省" + }, + { + "area": "", + "city": "贵阳市", + "country": "中国", + "lat": "26.653324822309752", + "lng": "106.63657676352776", + "province": "贵州省" + }, + { + "area": "南明区", + "city": "贵阳市", + "country": "中国", + "lat": "26.574336181539334", + "lng": "106.72052763544337", + "province": "贵州省" + }, + { + "area": "云岩区", + "city": "贵阳市", + "country": "中国", + "lat": "26.61038107642634", + "lng": "106.73053475882122", + "province": "贵州省" + }, + { + "area": "花溪区", + "city": "贵阳市", + "country": "中国", + "lat": "26.415879456429906", + "lng": "106.67644077730033", + "province": "贵州省" + }, + { + "area": "乌当区", + "city": "贵阳市", + "country": "中国", + "lat": "26.636529135598032", + "lng": "106.7575580343162", + "province": "贵州省" + }, + { + "area": "白云区", + "city": "贵阳市", + "country": "中国", + "lat": "26.68358849912381", + "lng": "106.62959683988699", + "province": "贵州省" + }, + { + "area": "观山湖区", + "city": "贵阳市", + "country": "中国", + "lat": "26.62389429689888", + "lng": "106.6095325575144", + "province": "贵州省" + }, + { + "area": "开阳县", + "city": "贵阳市", + "country": "中国", + "lat": "27.06367357395087", + "lng": "106.97155955927653", + "province": "贵州省" + }, + { + "area": "息烽县", + "city": "贵阳市", + "country": "中国", + "lat": "27.096475267062225", + "lng": "106.74756178043502", + "province": "贵州省" + }, + { + "area": "修文县", + "city": "贵阳市", + "country": "中国", + "lat": "26.844862447593908", + "lng": "106.59849220313932", + "province": "贵州省" + }, + { + "area": "清镇市", + "city": "贵阳市", + "country": "中国", + "lat": "26.56198789847887", + "lng": "106.47752261032251", + "province": "贵州省" + }, + { + "area": "", + "city": "六盘水市", + "country": "中国", + "lat": "26.598833108257494", + "lng": "104.8375546023468", + "province": "贵州省" + }, + { + "area": "钟山区", + "city": "六盘水市", + "country": "中国", + "lat": "26.580704079622272", + "lng": "104.85052981695918", + "province": "贵州省" + }, + { + "area": "六枝特区", + "city": "六盘水市", + "country": "中国", + "lat": "26.21921429063836", + "lng": "105.48342934685516", + "province": "贵州省" + }, + { + "area": "水城县", + "city": "六盘水市", + "country": "中国", + "lat": "26.553719763691845", + "lng": "104.96456610819116", + "province": "贵州省" + }, + { + "area": "盘州市", + "city": "六盘水市", + "country": "中国", + "lat": "25.715651258076416", + "lng": "104.47858183931757", + "province": "贵州省" + }, + { + "area": "", + "city": "遵义市", + "country": "中国", + "lat": "27.731700878916666", + "lng": "106.93342774801829", + "province": "贵州省" + }, + { + "area": "红花岗区", + "city": "遵义市", + "country": "中国", + "lat": "27.65087026073177", + "lng": "106.90049658667778", + "province": "贵州省" + }, + { + "area": "汇川区", + "city": "遵义市", + "country": "中国", + "lat": "27.756343380086907", + "lng": "106.94045752761485", + "province": "贵州省" + }, + { + "area": "播州区", + "city": "遵义市", + "country": "中国", + "lat": "27.542500878000244", + "lng": "106.83650354793187", + "province": "贵州省" + }, + { + "area": "桐梓县", + "city": "遵义市", + "country": "中国", + "lat": "28.139468384162452", + "lng": "106.83248902060909", + "province": "贵州省" + }, + { + "area": "绥阳县", + "city": "遵义市", + "country": "中国", + "lat": "27.953080005876046", + "lng": "107.19749228818591", + "province": "贵州省" + }, + { + "area": "正安县", + "city": "遵义市", + "country": "中国", + "lat": "28.559091728779737", + "lng": "107.46057489060091", + "province": "贵州省" + }, + { + "area": "道真仡佬族苗族自治县", + "city": "遵义市", + "country": "中国", + "lat": "28.868649814380205", + "lng": "107.61948378780525", + "province": "贵州省" + }, + { + "area": "务川仡佬族苗族自治县", + "city": "遵义市", + "country": "中国", + "lat": "28.569077110561935", + "lng": "107.90545629257353", + "province": "贵州省" + }, + { + "area": "凤冈县", + "city": "遵义市", + "country": "中国", + "lat": "27.960695338964733", + "lng": "107.72354763025206", + "province": "贵州省" + }, + { + "area": "湄潭县", + "city": "遵义市", + "country": "中国", + "lat": "27.754498364959613", + "lng": "107.47259853018687", + "province": "贵州省" + }, + { + "area": "余庆县", + "city": "遵义市", + "country": "中国", + "lat": "27.221379027996527", + "lng": "107.91146020727803", + "province": "贵州省" + }, + { + "area": "习水县", + "city": "遵义市", + "country": "中国", + "lat": "28.339117886481347", + "lng": "106.20342803998653", + "province": "贵州省" + }, + { + "area": "赤水市", + "city": "遵义市", + "country": "中国", + "lat": "28.596118908732613", + "lng": "105.70348859502005", + "province": "贵州省" + }, + { + "area": "仁怀市", + "city": "遵义市", + "country": "中国", + "lat": "27.797752158542853", + "lng": "106.4075265551776", + "province": "贵州省" + }, + { + "area": "", + "city": "安顺市", + "country": "中国", + "lat": "26.25925237871499", + "lng": "105.95441712388904", + "province": "贵州省" + }, + { + "area": "西秀区", + "city": "安顺市", + "country": "中国", + "lat": "26.251497663244066", + "lng": "105.97240632053426", + "province": "贵州省" + }, + { + "area": "平坝区", + "city": "安顺市", + "country": "中国", + "lat": "26.411186471257356", + "lng": "106.26358378708674", + "province": "贵州省" + }, + { + "area": "普定县", + "city": "安顺市", + "country": "中国", + "lat": "26.308233451347096", + "lng": "105.74848570613602", + "province": "贵州省" + }, + { + "area": "镇宁布依族苗族自治县", + "city": "安顺市", + "country": "中国", + "lat": "26.063829083031695", + "lng": "105.77658344485114", + "province": "贵州省" + }, + { + "area": "关岭布依族苗族自治县", + "city": "安顺市", + "country": "中国", + "lat": "25.949877045969167", + "lng": "105.62547597167618", + "province": "贵州省" + }, + { + "area": "紫云苗族布依族自治县", + "city": "安顺市", + "country": "中国", + "lat": "25.75740872895845", + "lng": "106.09041375093291", + "province": "贵州省" + }, + { + "area": "", + "city": "毕节市", + "country": "中国", + "lat": "27.29021508342595", + "lng": "105.2985887950112", + "province": "贵州省" + }, + { + "area": "七星关区", + "city": "毕节市", + "country": "中国", + "lat": "27.3040952234272", + "lng": "105.31158071810607", + "province": "贵州省" + }, + { + "area": "大方县", + "city": "毕节市", + "country": "中国", + "lat": "27.147060750626153", + "lng": "105.61845131242103", + "province": "贵州省" + }, + { + "area": "黔西县", + "city": "毕节市", + "country": "中国", + "lat": "27.014344747084042", + "lng": "106.03857397725803", + "province": "贵州省" + }, + { + "area": "金沙县", + "city": "毕节市", + "country": "中国", + "lat": "27.465354872613517", + "lng": "106.22644163900851", + "province": "贵州省" + }, + { + "area": "织金县", + "city": "毕节市", + "country": "中国", + "lat": "26.669221885658793", + "lng": "105.77758954702198", + "province": "贵州省" + }, + { + "area": "纳雍县", + "city": "毕节市", + "country": "中国", + "lat": "26.78371722913166", + "lng": "105.38948662275538", + "province": "贵州省" + }, + { + "area": "威宁彝族回族苗族自治县", + "city": "毕节市", + "country": "中国", + "lat": "26.879247190553315", + "lng": "104.25948063397878", + "province": "贵州省" + }, + { + "area": "赫章县", + "city": "毕节市", + "country": "中国", + "lat": "27.12905167514207", + "lng": "104.7335158226237", + "province": "贵州省" + }, + { + "area": "", + "city": "铜仁市", + "country": "中国", + "lat": "27.73778645640524", + "lng": "109.19643889817665", + "province": "贵州省" + }, + { + "area": "碧江区", + "city": "铜仁市", + "country": "中国", + "lat": "27.696773471802057", + "lng": "109.18743536171422", + "province": "贵州省" + }, + { + "area": "万山区", + "city": "铜仁市", + "country": "中国", + "lat": "27.524647851983428", + "lng": "109.22045617394458", + "province": "贵州省" + }, + { + "area": "江口县", + "city": "铜仁市", + "country": "中国", + "lat": "27.70592169504263", + "lng": "108.84540005923948", + "province": "贵州省" + }, + { + "area": "玉屏侗族自治县", + "city": "铜仁市", + "country": "中国", + "lat": "27.248557881455984", + "lng": "108.92056352699828", + "province": "贵州省" + }, + { + "area": "石阡县", + "city": "铜仁市", + "country": "中国", + "lat": "27.51972205975809", + "lng": "108.23046385479006", + "province": "贵州省" + }, + { + "area": "思南县", + "city": "铜仁市", + "country": "中国", + "lat": "27.944547877976884", + "lng": "108.25941731933368", + "province": "贵州省" + }, + { + "area": "印江土家族苗族自治县", + "city": "铜仁市", + "country": "中国", + "lat": "27.99982325199269", + "lng": "108.41659167842938", + "province": "贵州省" + }, + { + "area": "德江县", + "city": "铜仁市", + "country": "中国", + "lat": "28.27042327849442", + "lng": "108.126411061501", + "province": "贵州省" + }, + { + "area": "沿河土家族自治县", + "city": "铜仁市", + "country": "中国", + "lat": "28.570101680094822", + "lng": "108.5104775397904", + "province": "贵州省" + }, + { + "area": "松桃苗族自治县", + "city": "铜仁市", + "country": "中国", + "lat": "28.16042017901075", + "lng": "109.20940351278404", + "province": "贵州省" + }, + { + "area": "", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "27.014344747084042", + "lng": "106.03857397725803", + "province": "贵州省" + }, + { + "area": "兴义市", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.09811331029694", + "lng": "104.9024609483044", + "province": "贵州省" + }, + { + "area": "兴仁市", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.44089875357608", + "lng": "105.19256772451989", + "province": "贵州省" + }, + { + "area": "普安县", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.789951769128603", + "lng": "104.95954583801976", + "province": "贵州省" + }, + { + "area": "晴隆县", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.841047900453187", + "lng": "105.22548361466674", + "province": "贵州省" + }, + { + "area": "贞丰县", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.39212396534147", + "lng": "105.65655958807493", + "province": "贵州省" + }, + { + "area": "望谟县", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.18435492391975", + "lng": "106.10644455173647", + "province": "贵州省" + }, + { + "area": "册亨县", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "24.98963749425246", + "lng": "105.81851050705725", + "province": "贵州省" + }, + { + "area": "安龙县", + "city": "黔西南布依族苗族自治州", + "country": "中国", + "lat": "25.10399043123158", + "lng": "105.44954274777457", + "province": "贵州省" + }, + { + "area": "", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.58970296982603", + "lng": "107.9894462407788", + "province": "贵州省" + }, + { + "area": "凯里市", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.573079425675388", + "lng": "107.98746889069089", + "province": "贵州省" + }, + { + "area": "黄平县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.911288643100754", + "lng": "107.92354780621629", + "province": "贵州省" + }, + { + "area": "施秉县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "27.03982205173296", + "lng": "108.13043978205083", + "province": "贵州省" + }, + { + "area": "三穗县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.95866646524615", + "lng": "108.68154500206829", + "province": "贵州省" + }, + { + "area": "镇远县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "27.054820913900503", + "lng": "108.43658077263082", + "province": "贵州省" + }, + { + "area": "岑巩县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "27.17990241739444", + "lng": "108.82248096195714", + "province": "贵州省" + }, + { + "area": "天柱县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.915804084011683", + "lng": "109.21444570160986", + "province": "贵州省" + }, + { + "area": "锦屏县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.682631631864552", + "lng": "109.2074384694816", + "province": "贵州省" + }, + { + "area": "剑河县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.73404755888132", + "lng": "108.44751710322788", + "province": "贵州省" + }, + { + "area": "台江县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.672372539642534", + "lng": "108.32855163000316", + "province": "贵州省" + }, + { + "area": "黎平县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.236874050191798", + "lng": "109.14356697147115", + "province": "贵州省" + }, + { + "area": "榕江县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "25.937725373250203", + "lng": "108.5275536987156", + "province": "贵州省" + }, + { + "area": "从江县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "25.75988132789156", + "lng": "108.91156142782468", + "province": "贵州省" + }, + { + "area": "雷山县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.384205121689497", + "lng": "108.08452891457038", + "province": "贵州省" + }, + { + "area": "麻江县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.496807595584382", + "lng": "107.59555140190797", + "province": "贵州省" + }, + { + "area": "丹寨县", + "city": "黔东南苗族侗族自治州", + "country": "中国", + "lat": "26.20442116986921", + "lng": "107.7955134897186", + "province": "贵州省" + }, + { + "area": "", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.260616196073833", + "lng": "107.5284027057371", + "province": "贵州省" + }, + { + "area": "都匀市", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.266117957788534", + "lng": "107.52540443143744", + "province": "贵州省" + }, + { + "area": "福泉市", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.69252570078387", + "lng": "107.52643281158493", + "province": "贵州省" + }, + { + "area": "荔波县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "25.41709756627289", + "lng": "107.89340938687485", + "province": "贵州省" + }, + { + "area": "贵定县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.590659655038948", + "lng": "107.2405543594035", + "province": "贵州省" + }, + { + "area": "瓮安县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "27.084125602602416", + "lng": "107.47755223592003", + "province": "贵州省" + }, + { + "area": "独山县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "25.828287807074048", + "lng": "107.5514977810688", + "province": "贵州省" + }, + { + "area": "平塘县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "25.828201706901762", + "lng": "107.32956664388286", + "province": "贵州省" + }, + { + "area": "罗甸县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "25.4308376829725", + "lng": "106.75854805681841", + "province": "贵州省" + }, + { + "area": "长顺县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.02845454571356", + "lng": "106.45842122162574", + "province": "贵州省" + }, + { + "area": "龙里县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.459080630641683", + "lng": "106.98658596468972", + "province": "贵州省" + }, + { + "area": "惠水县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "26.138209889396155", + "lng": "106.6634526270886", + "province": "贵州省" + }, + { + "area": "三都水族自治县", + "city": "黔南布依族苗族自治州", + "country": "中国", + "lat": "25.989479499372695", + "lng": "107.87642925680865", + "province": "贵州省" + }, + { + "area": "", + "city": "昆明市", + "country": "中国", + "lat": "24.873998150044006", + "lng": "102.85244836500482", + "province": "云南省" + }, + { + "area": "五华区", + "city": "昆明市", + "country": "中国", + "lat": "25.04983496198145", + "lng": "102.71342328059617", + "province": "云南省" + }, + { + "area": "盘龙区", + "city": "昆明市", + "country": "中国", + "lat": "25.122372279829598", + "lng": "102.75852621210119", + "province": "云南省" + }, + { + "area": "官渡区", + "city": "昆明市", + "country": "中国", + "lat": "25.02119642385923", + "lng": "102.7504817066009", + "province": "云南省" + }, + { + "area": "西山区", + "city": "昆明市", + "country": "中国", + "lat": "25.043198760946844", + "lng": "102.67155712350362", + "province": "云南省" + }, + { + "area": "东川区", + "city": "昆明市", + "country": "中国", + "lat": "26.08905423762305", + "lng": "103.19445186746451", + "province": "云南省" + }, + { + "area": "呈贡区", + "city": "昆明市", + "country": "中国", + "lat": "24.89187121094651", + "lng": "102.82747259725804", + "province": "云南省" + }, + { + "area": "晋宁区", + "city": "昆明市", + "country": "中国", + "lat": "24.676098812517463", + "lng": "102.60241805181495", + "province": "云南省" + }, + { + "area": "富民县", + "city": "昆明市", + "country": "中国", + "lat": "25.228085092194785", + "lng": "102.50447319700842", + "province": "云南省" + }, + { + "area": "宜良县", + "city": "昆明市", + "country": "中国", + "lat": "24.925286989651802", + "lng": "103.14755798426482", + "province": "云南省" + }, + { + "area": "石林彝族自治县", + "city": "昆明市", + "country": "中国", + "lat": "24.77770196131961", + "lng": "103.2965081767583", + "province": "云南省" + }, + { + "area": "嵩明县", + "city": "昆明市", + "country": "中国", + "lat": "25.344409459134855", + "lng": "103.04356394015612", + "province": "云南省" + }, + { + "area": "禄劝彝族苗族自治县", + "city": "昆明市", + "country": "中国", + "lat": "25.5576718002404", + "lng": "102.47742324183979", + "province": "云南省" + }, + { + "area": "寻甸回族彝族自治县", + "city": "昆明市", + "country": "中国", + "lat": "25.563893580433085", + "lng": "103.26357387134848", + "province": "云南省" + }, + { + "area": "安宁市", + "city": "昆明市", + "country": "中国", + "lat": "24.92560172634403", + "lng": "102.48440918412749", + "province": "云南省" + }, + { + "area": "", + "city": "曲靖市", + "country": "中国", + "lat": "25.496406931543667", + "lng": "103.80243482794681", + "province": "云南省" + }, + { + "area": "麒麟区", + "city": "曲靖市", + "country": "中国", + "lat": "25.502101828436917", + "lng": "103.81143036949021", + "province": "云南省" + }, + { + "area": "沾益区", + "city": "曲靖市", + "country": "中国", + "lat": "25.606630798868494", + "lng": "103.82848532840536", + "province": "云南省" + }, + { + "area": "马龙区", + "city": "曲靖市", + "country": "中国", + "lat": "25.43396637481632", + "lng": "103.58544688631953", + "province": "云南省" + }, + { + "area": "陆良县", + "city": "曲靖市", + "country": "中国", + "lat": "25.03563947043886", + "lng": "103.67343249743186", + "province": "云南省" + }, + { + "area": "师宗县", + "city": "曲靖市", + "country": "中国", + "lat": "24.82799496950119", + "lng": "103.99155634452771", + "province": "云南省" + }, + { + "area": "罗平县", + "city": "曲靖市", + "country": "中国", + "lat": "24.89051972489473", + "lng": "104.31551019438137", + "province": "云南省" + }, + { + "area": "富源县", + "city": "曲靖市", + "country": "中国", + "lat": "25.68027950213305", + "lng": "104.2614742433964", + "province": "云南省" + }, + { + "area": "会泽县", + "city": "曲靖市", + "country": "中国", + "lat": "26.424215045560672", + "lng": "103.3034872919241", + "province": "云南省" + }, + { + "area": "宣威市", + "city": "曲靖市", + "country": "中国", + "lat": "26.225598378323756", + "lng": "104.11157606909859", + "province": "云南省" + }, + { + "area": "", + "city": "玉溪市", + "country": "中国", + "lat": "24.35771094244625", + "lng": "102.55356029311", + "province": "云南省" + }, + { + "area": "红塔区", + "city": "玉溪市", + "country": "中国", + "lat": "24.359801443672627", + "lng": "102.55156461758968", + "province": "云南省" + }, + { + "area": "江川区", + "city": "玉溪市", + "country": "中国", + "lat": "24.29343870098364", + "lng": "102.7605270079629", + "province": "云南省" + }, + { + "area": "澄江县", + "city": "玉溪市", + "country": "中国", + "lat": "24.67941490881611", + "lng": "102.91455487234985", + "province": "云南省" + }, + { + "area": "通海县", + "city": "玉溪市", + "country": "中国", + "lat": "24.117891201573585", + "lng": "102.73242289127867", + "province": "云南省" + }, + { + "area": "华宁县", + "city": "玉溪市", + "country": "中国", + "lat": "24.19858102716324", + "lng": "102.9354918585251", + "province": "云南省" + }, + { + "area": "易门县", + "city": "玉溪市", + "country": "中国", + "lat": "24.677404477592024", + "lng": "102.16953549619623", + "province": "云南省" + }, + { + "area": "峨山彝族自治县", + "city": "玉溪市", + "country": "中国", + "lat": "24.174774239092528", + "lng": "102.4125645060742", + "province": "云南省" + }, + { + "area": "新平彝族傣族自治县", + "city": "玉溪市", + "country": "中国", + "lat": "24.07626270527773", + "lng": "101.9964277126142", + "province": "云南省" + }, + { + "area": "元江哈尼族彝族傣族自治县", + "city": "玉溪市", + "country": "中国", + "lat": "23.60785384295426", + "lng": "101.99936076993387", + "province": "云南省" + }, + { + "area": "", + "city": "保山市", + "country": "中国", + "lat": "25.139038793265964", + "lng": "99.17727328581788", + "province": "云南省" + }, + { + "area": "隆阳区", + "city": "保山市", + "country": "中国", + "lat": "25.126888322190116", + "lng": "99.17207083928912", + "province": "云南省" + }, + { + "area": "施甸县", + "city": "保山市", + "country": "中国", + "lat": "24.728835000146223", + "lng": "99.19546936222197", + "province": "云南省" + }, + { + "area": "龙陵县", + "city": "保山市", + "country": "中国", + "lat": "24.592546947017", + "lng": "98.6957499122748", + "province": "云南省" + }, + { + "area": "昌宁县", + "city": "保山市", + "country": "中国", + "lat": "24.833984919852785", + "lng": "99.61161657602588", + "province": "云南省" + }, + { + "area": "腾冲市", + "city": "保山市", + "country": "中国", + "lat": "25.026616860345513", + "lng": "98.49759503548854", + "province": "云南省" + }, + { + "area": "", + "city": "昭通市", + "country": "中国", + "lat": "27.34408386024681", + "lng": "103.72351177196889", + "province": "云南省" + }, + { + "area": "昭阳区", + "city": "昭通市", + "country": "中国", + "lat": "27.32614420605265", + "lng": "103.71347042315112", + "province": "云南省" + }, + { + "area": "鲁甸县", + "city": "昭通市", + "country": "中国", + "lat": "27.193107219132514", + "lng": "103.56441216450484", + "province": "云南省" + }, + { + "area": "巧家县", + "city": "昭通市", + "country": "中国", + "lat": "26.914705038576646", + "lng": "102.93651934036706", + "province": "云南省" + }, + { + "area": "盐津县", + "city": "昭通市", + "country": "中国", + "lat": "28.114384038516498", + "lng": "104.24157884245965", + "province": "云南省" + }, + { + "area": "大关县", + "city": "昭通市", + "country": "中国", + "lat": "27.754021401911025", + "lng": "103.89751489665241", + "province": "云南省" + }, + { + "area": "永善县", + "city": "昭通市", + "country": "中国", + "lat": "28.234722481383123", + "lng": "103.6445690431003", + "province": "云南省" + }, + { + "area": "绥江县", + "city": "昭通市", + "country": "中国", + "lat": "28.604277931727403", + "lng": "103.96455238260118", + "province": "云南省" + }, + { + "area": "镇雄县", + "city": "昭通市", + "country": "中国", + "lat": "27.447794634649174", + "lng": "104.88040422431135", + "province": "云南省" + }, + { + "area": "彝良县", + "city": "昭通市", + "country": "中国", + "lat": "27.63169016554663", + "lng": "104.0544430302079", + "province": "云南省" + }, + { + "area": "威信县", + "city": "昭通市", + "country": "中国", + "lat": "27.85253746404035", + "lng": "105.05557676310737", + "province": "云南省" + }, + { + "area": "水富市", + "city": "昭通市", + "country": "中国", + "lat": "28.636106975261676", + "lng": "104.42243298394331", + "province": "云南省" + }, + { + "area": "", + "city": "丽江市", + "country": "中国", + "lat": "26.860657438064884", + "lng": "100.23246452903453", + "province": "云南省" + }, + { + "area": "古城区", + "city": "丽江市", + "country": "中国", + "lat": "26.883161684001312", + "lng": "100.2324803392115", + "province": "云南省" + }, + { + "area": "玉龙纳西族自治县", + "city": "丽江市", + "country": "中国", + "lat": "26.827391803624646", + "lng": "100.24352734104735", + "province": "云南省" + }, + { + "area": "永胜县", + "city": "丽江市", + "country": "中国", + "lat": "26.68995024541884", + "lng": "100.75758141133471", + "province": "云南省" + }, + { + "area": "华坪县", + "city": "丽江市", + "country": "中国", + "lat": "26.635223014622333", + "lng": "101.27243012267594", + "province": "云南省" + }, + { + "area": "宁蒗彝族自治县", + "city": "丽江市", + "country": "中国", + "lat": "27.287727826051697", + "lng": "100.85859038623477", + "province": "云南省" + }, + { + "area": "", + "city": "普洱市", + "country": "中国", + "lat": "22.830979186010275", + "lng": "100.97256981472799", + "province": "云南省" + }, + { + "area": "思茅区", + "city": "普洱市", + "country": "中国", + "lat": "22.79249798435956", + "lng": "100.98355510297533", + "province": "云南省" + }, + { + "area": "宁洱哈尼族彝族自治县", + "city": "普洱市", + "country": "中国", + "lat": "23.054590179481025", + "lng": "101.05244246946019", + "province": "云南省" + }, + { + "area": "墨江哈尼族自治县", + "city": "普洱市", + "country": "中国", + "lat": "23.43772577225623", + "lng": "101.6985835615522", + "province": "云南省" + }, + { + "area": "景东彝族自治县", + "city": "普洱市", + "country": "中国", + "lat": "24.451863775494918", + "lng": "100.83848864452241", + "province": "云南省" + }, + { + "area": "景谷傣族彝族自治县", + "city": "普洱市", + "country": "中国", + "lat": "23.503204071241473", + "lng": "100.70945658009512", + "province": "云南省" + }, + { + "area": "镇沅彝族哈尼族拉祜族自治县", + "city": "普洱市", + "country": "中国", + "lat": "24.010330833613203", + "lng": "101.11556882305037", + "province": "云南省" + }, + { + "area": "江城哈尼族彝族自治县", + "city": "普洱市", + "country": "中国", + "lat": "22.59168385943026", + "lng": "101.86847918429268", + "province": "云南省" + }, + { + "area": "孟连傣族拉祜族佤族自治县", + "city": "普洱市", + "country": "中国", + "lat": "22.33530761555575", + "lng": "99.59096282557785", + "province": "云南省" + }, + { + "area": "澜沧拉祜族自治县", + "city": "普洱市", + "country": "中国", + "lat": "22.561831918086543", + "lng": "99.93858828323933", + "province": "云南省" + }, + { + "area": "西盟佤族自治县", + "city": "普洱市", + "country": "中国", + "lat": "22.650656010974465", + "lng": "99.59662215028884", + "province": "云南省" + }, + { + "area": "", + "city": "临沧市", + "country": "中国", + "lat": "23.89046855627851", + "lng": "100.09544042014869", + "province": "云南省" + }, + { + "area": "临翔区", + "city": "临沧市", + "country": "中国", + "lat": "23.901401938645204", + "lng": "100.08844253039773", + "province": "云南省" + }, + { + "area": "凤庆县", + "city": "临沧市", + "country": "中国", + "lat": "24.586472458273995", + "lng": "99.93498922221478", + "province": "云南省" + }, + { + "area": "云县", + "city": "临沧市", + "country": "中国", + "lat": "24.442807275329113", + "lng": "100.12953102441054", + "province": "云南省" + }, + { + "area": "永德县", + "city": "临沧市", + "country": "中国", + "lat": "24.024871282776907", + "lng": "99.26507564260625", + "province": "云南省" + }, + { + "area": "镇康县", + "city": "临沧市", + "country": "中国", + "lat": "23.76831548009615", + "lng": "98.8318712241234", + "province": "云南省" + }, + { + "area": "双江拉祜族佤族布朗族傣族自治县", + "city": "临沧市", + "country": "中国", + "lat": "23.47983650461355", + "lng": "99.83413098297927", + "province": "云南省" + }, + { + "area": "耿马傣族佤族自治县", + "city": "临沧市", + "country": "中国", + "lat": "23.543490995100633", + "lng": "99.40394217609244", + "province": "云南省" + }, + { + "area": "沧源佤族自治县", + "city": "临沧市", + "country": "中国", + "lat": "23.152878733913262", + "lng": "99.25272169608435", + "province": "云南省" + }, + { + "area": "", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.051773565340376", + "lng": "101.53441248050268", + "province": "云南省" + }, + { + "area": "楚雄市", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.03886038832341", + "lng": "101.55247228396097", + "province": "云南省" + }, + { + "area": "双柏县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "24.694898530382282", + "lng": "101.64840700052847", + "province": "云南省" + }, + { + "area": "牟定县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.318845903713523", + "lng": "101.5534809912178", + "province": "云南省" + }, + { + "area": "南华县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.19858707115555", + "lng": "101.28042055018456", + "province": "云南省" + }, + { + "area": "姚安县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.509775443472748", + "lng": "101.2485272011994", + "province": "云南省" + }, + { + "area": "大姚县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.727600600572302", + "lng": "101.33056746712646", + "province": "云南省" + }, + { + "area": "永仁县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "26.055565754520842", + "lng": "101.67249299666791", + "province": "云南省" + }, + { + "area": "元谋县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.710895319939038", + "lng": "101.8804452424955", + "province": "云南省" + }, + { + "area": "武定县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.536089587806806", + "lng": "102.4105318203669", + "province": "云南省" + }, + { + "area": "禄丰县", + "city": "楚雄彝族自治州", + "country": "中国", + "lat": "25.155830804806403", + "lng": "102.0855313547639", + "province": "云南省" + }, + { + "area": "", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.37448873836479", + "lng": "102.42755057757", + "province": "云南省" + }, + { + "area": "个旧市", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.364941534583274", + "lng": "103.1665186084882", + "province": "云南省" + }, + { + "area": "开远市", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.71990779691196", + "lng": "103.27355323708609", + "province": "云南省" + }, + { + "area": "蒙自市", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.402079885197992", + "lng": "103.37154588174573", + "province": "云南省" + }, + { + "area": "弥勒市", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "24.41798222535674", + "lng": "103.42148906299802", + "province": "云南省" + }, + { + "area": "屏边苗族自治县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "22.989989585512753", + "lng": "103.69343183231612", + "province": "云南省" + }, + { + "area": "建水县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.640938563461493", + "lng": "102.8334395916061", + "province": "云南省" + }, + { + "area": "石屏县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.712004452448983", + "lng": "102.50244661977858", + "province": "云南省" + }, + { + "area": "泸西县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "24.53803716745029", + "lng": "103.772523140916", + "province": "云南省" + }, + { + "area": "元阳县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.22619805192609", + "lng": "102.84143280386179", + "province": "云南省" + }, + { + "area": "红河县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.37448873836479", + "lng": "102.42755057757", + "province": "云南省" + }, + { + "area": "金平苗族瑶族傣族自治县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "22.785560606183154", + "lng": "103.23246860578698", + "province": "云南省" + }, + { + "area": "绿春县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "23.000164936586465", + "lng": "102.39849398755386", + "province": "云南省" + }, + { + "area": "河口瑶族自治县", + "city": "红河哈尼族彝族自治州", + "country": "中国", + "lat": "22.535465602947458", + "lng": "103.94544362779924", + "province": "云南省" + }, + { + "area": "", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.40599429361173", + "lng": "104.22256899109433", + "province": "云南省" + }, + { + "area": "文山市", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.391944131908", + "lng": "104.23854382746465", + "province": "云南省" + }, + { + "area": "砚山县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.611486576699626", + "lng": "104.34355089069662", + "province": "云南省" + }, + { + "area": "西畴县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.443271275282765", + "lng": "104.6785254220347", + "province": "云南省" + }, + { + "area": "麻栗坡县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.13158558355966", + "lng": "104.70954948077816", + "province": "云南省" + }, + { + "area": "马关县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.01899357716598", + "lng": "104.4004149769177", + "province": "云南省" + }, + { + "area": "丘北县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "24.056993896217723", + "lng": "104.17344174073646", + "province": "云南省" + }, + { + "area": "广南县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "24.05219851092113", + "lng": "105.06158238459233", + "province": "云南省" + }, + { + "area": "富宁县", + "city": "文山壮族苗族自治州", + "country": "中国", + "lat": "23.631380409520464", + "lng": "105.63749017905431", + "province": "云南省" + }, + { + "area": "", + "city": "西双版纳傣族自治州", + "country": "中国", + "lat": "22.013601254764165", + "lng": "100.80344682455637", + "province": "云南省" + }, + { + "area": "景洪市", + "city": "西双版纳傣族自治州", + "country": "中国", + "lat": "22.01700442311881", + "lng": "100.80644312258391", + "province": "云南省" + }, + { + "area": "勐海县", + "city": "西双版纳傣族自治州", + "country": "中国", + "lat": "21.96343359668147", + "lng": "100.45944593979591", + "province": "云南省" + }, + { + "area": "勐腊县", + "city": "西双版纳傣族自治州", + "country": "中国", + "lat": "21.465280880861858", + "lng": "101.57152830822949", + "province": "云南省" + }, + { + "area": "", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.59760490545194", + "lng": "100.23651930044413", + "province": "云南省" + }, + { + "area": "大理市", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.59760490545194", + "lng": "100.23651930044413", + "province": "云南省" + }, + { + "area": "漾濞彝族自治县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.676295762972003", + "lng": "99.96441375816771", + "province": "云南省" + }, + { + "area": "祥云县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.489872506241518", + "lng": "100.55744657937458", + "province": "云南省" + }, + { + "area": "宾川县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.83524902819825", + "lng": "100.57845668761831", + "province": "云南省" + }, + { + "area": "弥渡县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.349336028746187", + "lng": "100.49758601546485", + "province": "云南省" + }, + { + "area": "南涧彝族自治县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.049426762093695", + "lng": "100.51554862226698", + "province": "云南省" + }, + { + "area": "巍山彝族回族自治县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.23343872979941", + "lng": "100.31346033514549", + "province": "云南省" + }, + { + "area": "永平县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.470206483299727", + "lng": "99.54749489993098", + "province": "云南省" + }, + { + "area": "云龙县", + "city": "大理白族自治州", + "country": "中国", + "lat": "25.891945073901653", + "lng": "99.37741602286651", + "province": "云南省" + }, + { + "area": "洱源县", + "city": "大理白族自治州", + "country": "中国", + "lat": "26.12009334188815", + "lng": "99.96920972145332", + "province": "云南省" + }, + { + "area": "剑川县", + "city": "大理白族自治州", + "country": "中国", + "lat": "26.542516534180685", + "lng": "99.91209123511192", + "province": "云南省" + }, + { + "area": "鹤庆县", + "city": "大理白族自治州", + "country": "中国", + "lat": "26.566197313344603", + "lng": "100.18249206302262", + "province": "云南省" + }, + { + "area": "", + "city": "德宏傣族景颇族自治州", + "country": "中国", + "lat": "24.438010702758117", + "lng": "98.59135935611411", + "province": "云南省" + }, + { + "area": "瑞丽市", + "city": "德宏傣族景颇族自治州", + "country": "中国", + "lat": "24.438010702758117", + "lng": "98.59135935611411", + "province": "云南省" + }, + { + "area": "芒市", + "city": "德宏傣族景颇族自治州", + "country": "中国", + "lat": "24.438010702758117", + "lng": "98.59135935611411", + "province": "云南省" + }, + { + "area": "梁河县", + "city": "德宏傣族景颇族自治州", + "country": "中国", + "lat": "24.81078445825741", + "lng": "98.3031336316359", + "province": "云南省" + }, + { + "area": "盈江县", + "city": "德宏傣族景颇族自治州", + "country": "中国", + "lat": "24.711534266142955", + "lng": "97.93842653538563", + "province": "云南省" + }, + { + "area": "陇川县", + "city": "德宏傣族景颇族自治州", + "country": "中国", + "lat": "24.189467890548563", + "lng": "97.79853036412425", + "province": "云南省" + }, + { + "area": "", + "city": "怒江傈僳族自治州", + "country": "中国", + "lat": "25.823707417657754", + "lng": "98.8632883813579", + "province": "云南省" + }, + { + "area": "泸水市", + "city": "怒江傈僳族自治州", + "country": "中国", + "lat": "25.829026769971726", + "lng": "98.86458616332774", + "province": "云南省" + }, + { + "area": "福贡县", + "city": "怒江傈僳族自治州", + "country": "中国", + "lat": "26.908055208498066", + "lng": "98.87564942449333", + "province": "云南省" + }, + { + "area": "贡山独龙族怒族自治县", + "city": "怒江傈僳族自治州", + "country": "中国", + "lat": "27.82295036965492", + "lng": "98.7355461039814", + "province": "云南省" + }, + { + "area": "兰坪白族普米族自治县", + "city": "怒江傈僳族自治州", + "country": "中国", + "lat": "26.459207904687954", + "lng": "99.42328466998799", + "province": "云南省" + }, + { + "area": "", + "city": "迪庆藏族自治州", + "country": "中国", + "lat": "27.82518468364326", + "lng": "99.70952999013957", + "province": "云南省" + }, + { + "area": "香格里拉市", + "city": "迪庆藏族自治州", + "country": "中国", + "lat": "27.835760125320558", + "lng": "99.70744457389884", + "province": "云南省" + }, + { + "area": "德钦县", + "city": "迪庆藏族自治州", + "country": "中国", + "lat": "28.470086006822044", + "lng": "98.92445265605383", + "province": "云南省" + }, + { + "area": "维西傈僳族自治县", + "city": "迪庆藏族自治州", + "country": "中国", + "lat": "27.18317020402177", + "lng": "99.29346568993421", + "province": "云南省" + }, + { + "area": "", + "city": "拉萨市", + "country": "中国", + "lat": "29.65004027476773", + "lng": "91.12082391546393", + "province": "西藏自治区" + }, + { + "area": "城关区", + "city": "拉萨市", + "country": "中国", + "lat": "29.65833125291544", + "lng": "91.14510035237143", + "province": "西藏自治区" + }, + { + "area": "堆龙德庆区", + "city": "拉萨市", + "country": "中国", + "lat": "29.651625675009356", + "lng": "91.00996313420868", + "province": "西藏自治区" + }, + { + "area": "达孜区", + "city": "拉萨市", + "country": "中国", + "lat": "29.675409063815298", + "lng": "91.3563181183878", + "province": "西藏自治区" + }, + { + "area": "林周县", + "city": "拉萨市", + "country": "中国", + "lat": "29.898733205887016", + "lng": "91.26950057392972", + "province": "西藏自治区" + }, + { + "area": "当雄县", + "city": "拉萨市", + "country": "中国", + "lat": "30.47922172694214", + "lng": "91.1074517468307", + "province": "西藏自治区" + }, + { + "area": "尼木县", + "city": "拉萨市", + "country": "中国", + "lat": "29.437518981254573", + "lng": "90.17118006624334", + "province": "西藏自治区" + }, + { + "area": "曲水县", + "city": "拉萨市", + "country": "中国", + "lat": "29.35898705833658", + "lng": "90.74995866545315", + "province": "西藏自治区" + }, + { + "area": "墨竹工卡县", + "city": "拉萨市", + "country": "中国", + "lat": "29.839752605055274", + "lng": "91.73726639859201", + "province": "西藏自治区" + }, + { + "area": "格尔木藏青工业园区", + "city": "拉萨市", + "country": "中国", + "lat": "36.41237104695386", + "lng": "94.93331021042529", + "province": "西藏自治区" + }, + { + "area": "拉萨经济技术开发区", + "city": "拉萨市", + "country": "中国", + "lat": "29.64486730338474", + "lng": "91.02793786813518", + "province": "西藏自治区" + }, + { + "area": "西藏文化旅游创意园区", + "city": "拉萨市", + "country": "中国", + "lat": "29.62091751700401", + "lng": "91.14814120635225", + "province": "西藏自治区" + }, + { + "area": "达孜工业园区", + "city": "拉萨市", + "country": "中国", + "lat": "29.673611830619592", + "lng": "91.33958304606465", + "province": "西藏自治区" + }, + { + "area": "", + "city": "日喀则市", + "country": "中国", + "lat": "29.275657822511512", + "lng": "88.89370303482552", + "province": "西藏自治区" + }, + { + "area": "桑珠孜区", + "city": "日喀则市", + "country": "中国", + "lat": "29.25558281419752", + "lng": "88.90295171886154", + "province": "西藏自治区" + }, + { + "area": "南木林县", + "city": "日喀则市", + "country": "中国", + "lat": "29.68793803655162", + "lng": "89.1057042130769", + "province": "西藏自治区" + }, + { + "area": "江孜县", + "city": "日喀则市", + "country": "中国", + "lat": "28.9176346842389", + "lng": "89.61201219495427", + "province": "西藏自治区" + }, + { + "area": "定日县", + "city": "日喀则市", + "country": "中国", + "lat": "28.66395198328889", + "lng": "87.1295977393142", + "province": "西藏自治区" + }, + { + "area": "萨迦县", + "city": "日喀则市", + "country": "中国", + "lat": "28.904931512620273", + "lng": "88.02826948815172", + "province": "西藏自治区" + }, + { + "area": "拉孜县", + "city": "日喀则市", + "country": "中国", + "lat": "29.08750967999499", + "lng": "87.64364731807402", + "province": "西藏自治区" + }, + { + "area": "昂仁县", + "city": "日喀则市", + "country": "中国", + "lat": "29.30106048401354", + "lng": "87.24242733675504", + "province": "西藏自治区" + }, + { + "area": "谢通门县", + "city": "日喀则市", + "country": "中国", + "lat": "29.438142414131967", + "lng": "88.26820679995701", + "province": "西藏自治区" + }, + { + "area": "白朗县", + "city": "日喀则市", + "country": "中国", + "lat": "29.1118589519179", + "lng": "89.26874199189538", + "province": "西藏自治区" + }, + { + "area": "仁布县", + "city": "日喀则市", + "country": "中国", + "lat": "29.236788327037022", + "lng": "89.8486249678988", + "province": "西藏自治区" + }, + { + "area": "康马县", + "city": "日喀则市", + "country": "中国", + "lat": "28.561443952501328", + "lng": "89.68824491576126", + "province": "西藏自治区" + }, + { + "area": "定结县", + "city": "日喀则市", + "country": "中国", + "lat": "28.36991076939328", + "lng": "87.7723767433751", + "province": "西藏自治区" + }, + { + "area": "仲巴县", + "city": "日喀则市", + "country": "中国", + "lat": "29.775982232026415", + "lng": "84.0381168769166", + "province": "西藏自治区" + }, + { + "area": "亚东县", + "city": "日喀则市", + "country": "中国", + "lat": "27.491108780091498", + "lng": "88.91344078314533", + "province": "西藏自治区" + }, + { + "area": "吉隆县", + "city": "日喀则市", + "country": "中国", + "lat": "28.85850166495536", + "lng": "85.30407376898663", + "province": "西藏自治区" + }, + { + "area": "聂拉木县", + "city": "日喀则市", + "country": "中国", + "lat": "28.16083936054344", + "lng": "85.98877040304578", + "province": "西藏自治区" + }, + { + "area": "萨嘎县", + "city": "日喀则市", + "country": "中国", + "lat": "29.334659688784015", + "lng": "85.23982570130651", + "province": "西藏自治区" + }, + { + "area": "岗巴县", + "city": "日喀则市", + "country": "中国", + "lat": "28.28036304225986", + "lng": "88.52652928147621", + "province": "西藏自治区" + }, + { + "area": "", + "city": "昌都市", + "country": "中国", + "lat": "31.14734654932703", + "lng": "97.17958359408598", + "province": "西藏自治区" + }, + { + "area": "卡若区", + "city": "昌都市", + "country": "中国", + "lat": "31.144248893946763", + "lng": "97.18665433641611", + "province": "西藏自治区" + }, + { + "area": "江达县", + "city": "昌都市", + "country": "中国", + "lat": "31.50520701797964", + "lng": "98.22459452096771", + "province": "西藏自治区" + }, + { + "area": "贡觉县", + "city": "昌都市", + "country": "中国", + "lat": "30.86596695841197", + "lng": "98.27733412728907", + "province": "西藏自治区" + }, + { + "area": "类乌齐县", + "city": "昌都市", + "country": "中国", + "lat": "31.217793112280912", + "lng": "96.6067171923989", + "province": "西藏自治区" + }, + { + "area": "丁青县", + "city": "昌都市", + "country": "中国", + "lat": "31.41840296461374", + "lng": "95.60264384421787", + "province": "西藏自治区" + }, + { + "area": "察雅县", + "city": "昌都市", + "country": "中国", + "lat": "30.659864699370576", + "lng": "97.57512367962845", + "province": "西藏自治区" + }, + { + "area": "八宿县", + "city": "昌都市", + "country": "中国", + "lat": "30.05902899139862", + "lng": "96.92436044615198", + "province": "西藏自治区" + }, + { + "area": "左贡县", + "city": "昌都市", + "country": "中国", + "lat": "29.676848537197444", + "lng": "97.84736683298861", + "province": "西藏自治区" + }, + { + "area": "芒康县", + "city": "昌都市", + "country": "中国", + "lat": "29.685776117713207", + "lng": "98.59968548039171", + "province": "西藏自治区" + }, + { + "area": "洛隆县", + "city": "昌都市", + "country": "中国", + "lat": "30.747126507478114", + "lng": "95.83130661347725", + "province": "西藏自治区" + }, + { + "area": "边坝县", + "city": "昌都市", + "country": "中国", + "lat": "30.939624927346678", + "lng": "94.71437114915865", + "province": "西藏自治区" + }, + { + "area": "", + "city": "林芝市", + "country": "中国", + "lat": "29.654042176951524", + "lng": "94.36805828713257", + "province": "西藏自治区" + }, + { + "area": "巴宜区", + "city": "林芝市", + "country": "中国", + "lat": "29.64164454637214", + "lng": "94.36754427671993", + "province": "西藏自治区" + }, + { + "area": "工布江达县", + "city": "林芝市", + "country": "中国", + "lat": "29.891367616240817", + "lng": "93.25241979667781", + "province": "西藏自治区" + }, + { + "area": "米林县", + "city": "林芝市", + "country": "中国", + "lat": "29.220916541197315", + "lng": "94.21993857808282", + "province": "西藏自治区" + }, + { + "area": "墨脱县", + "city": "林芝市", + "country": "中国", + "lat": "29.33093770187824", + "lng": "95.3394952975097", + "province": "西藏自治区" + }, + { + "area": "波密县", + "city": "林芝市", + "country": "中国", + "lat": "29.865060090548965", + "lng": "95.77390012164511", + "province": "西藏自治区" + }, + { + "area": "察隅县", + "city": "林芝市", + "country": "中国", + "lat": "28.667444137201056", + "lng": "97.47326974924565", + "province": "西藏自治区" + }, + { + "area": "朗县", + "city": "林芝市", + "country": "中国", + "lat": "29.05190241908559", + "lng": "93.08136823440746", + "province": "西藏自治区" + }, + { + "area": "", + "city": "山南市", + "country": "中国", + "lat": "29.243026939249226", + "lng": "91.77867513851903", + "province": "西藏自治区" + }, + { + "area": "乃东区", + "city": "山南市", + "country": "中国", + "lat": "29.234229154984693", + "lng": "91.77868196564091", + "province": "西藏自治区" + }, + { + "area": "扎囊县", + "city": "山南市", + "country": "中国", + "lat": "29.25116431579497", + "lng": "91.34362712763867", + "province": "西藏自治区" + }, + { + "area": "贡嘎县", + "city": "山南市", + "country": "中国", + "lat": "29.295585920340546", + "lng": "90.9905823724984", + "province": "西藏自治区" + }, + { + "area": "桑日县", + "city": "山南市", + "country": "中国", + "lat": "29.265175836421495", + "lng": "92.0221572536961", + "province": "西藏自治区" + }, + { + "area": "琼结县", + "city": "山南市", + "country": "中国", + "lat": "29.03086558193296", + "lng": "91.69010077797564", + "province": "西藏自治区" + }, + { + "area": "曲松县", + "city": "山南市", + "country": "中国", + "lat": "29.06842481562376", + "lng": "92.21017466297504", + "province": "西藏自治区" + }, + { + "area": "措美县", + "city": "山南市", + "country": "中国", + "lat": "28.44425799016076", + "lng": "91.43991757318803", + "province": "西藏自治区" + }, + { + "area": "洛扎县", + "city": "山南市", + "country": "中国", + "lat": "28.391634617397948", + "lng": "90.86645200191522", + "province": "西藏自治区" + }, + { + "area": "加查县", + "city": "山南市", + "country": "中国", + "lat": "29.14608747478364", + "lng": "92.6004488814891", + "province": "西藏自治区" + }, + { + "area": "隆子县", + "city": "山南市", + "country": "中国", + "lat": "28.41401899841851", + "lng": "92.46896552098697", + "province": "西藏自治区" + }, + { + "area": "错那县", + "city": "山南市", + "country": "中国", + "lat": "27.997004265923422", + "lng": "91.96375005827048", + "province": "西藏自治区" + }, + { + "area": "浪卡子县", + "city": "山南市", + "country": "中国", + "lat": "28.97399201780357", + "lng": "90.4046468834624", + "province": "西藏自治区" + }, + { + "area": "", + "city": "那曲市", + "country": "中国", + "lat": "31.482438388454657", + "lng": "92.0573384981749", + "province": "西藏自治区" + }, + { + "area": "色尼区", + "city": "那曲市", + "country": "中国", + "lat": "31.476117292678243", + "lng": "92.0598468366504", + "province": "西藏自治区" + }, + { + "area": "嘉黎县", + "city": "那曲市", + "country": "中国", + "lat": "30.64706245559664", + "lng": "93.23873151503976", + "province": "西藏自治区" + }, + { + "area": "比如县", + "city": "那曲市", + "country": "中国", + "lat": "31.48635726205027", + "lng": "93.68596593861217", + "province": "西藏自治区" + }, + { + "area": "聂荣县", + "city": "那曲市", + "country": "中国", + "lat": "32.11370748311539", + "lng": "92.30865446629325", + "province": "西藏自治区" + }, + { + "area": "安多县", + "city": "那曲市", + "country": "中国", + "lat": "32.271268023108426", + "lng": "91.6888906779995", + "province": "西藏自治区" + }, + { + "area": "申扎县", + "city": "那曲市", + "country": "中国", + "lat": "30.936393285832022", + "lng": "88.7164811082338", + "province": "西藏自治区" + }, + { + "area": "索县", + "city": "那曲市", + "country": "中国", + "lat": "31.892424309226545", + "lng": "93.79217295837906", + "province": "西藏自治区" + }, + { + "area": "班戈县", + "city": "那曲市", + "country": "中国", + "lat": "31.39872762296325", + "lng": "90.01670772711378", + "province": "西藏自治区" + }, + { + "area": "巴青县", + "city": "那曲市", + "country": "中国", + "lat": "31.924549424275728", + "lng": "94.0598815647657", + "province": "西藏自治区" + }, + { + "area": "尼玛县", + "city": "那曲市", + "country": "中国", + "lat": "31.790953326637915", + "lng": "87.24329241086829", + "province": "西藏自治区" + }, + { + "area": "双湖县", + "city": "那曲市", + "country": "中国", + "lat": "33.193503165808735", + "lng": "88.84342793612339", + "province": "西藏自治区" + }, + { + "area": "", + "city": "阿里地区", + "country": "中国", + "lat": "32.50686601763335", + "lng": "80.11277692192645", + "province": "西藏自治区" + }, + { + "area": "普兰县", + "city": "阿里地区", + "country": "中国", + "lat": "30.30016259107777", + "lng": "81.18309473197418", + "province": "西藏自治区" + }, + { + "area": "札达县", + "city": "阿里地区", + "country": "中国", + "lat": "31.48534307001444", + "lng": "79.80932321217843", + "province": "西藏自治区" + }, + { + "area": "噶尔县", + "city": "阿里地区", + "country": "中国", + "lat": "32.49715682360169", + "lng": "80.10287714605373", + "province": "西藏自治区" + }, + { + "area": "日土县", + "city": "阿里地区", + "country": "中国", + "lat": "33.3871860438718", + "lng": "79.73910913826312", + "province": "西藏自治区" + }, + { + "area": "革吉县", + "city": "阿里地区", + "country": "中国", + "lat": "32.39335602004398", + "lng": "81.15166436963831", + "province": "西藏自治区" + }, + { + "area": "改则县", + "city": "阿里地区", + "country": "中国", + "lat": "32.30835664324378", + "lng": "84.06911336253982", + "province": "西藏自治区" + }, + { + "area": "措勤县", + "city": "阿里地区", + "country": "中国", + "lat": "31.02266637927343", + "lng": "85.16595220548083", + "province": "西藏自治区" + }, + { + "area": "", + "city": "西安市", + "country": "中国", + "lat": "34.34726881662395", + "lng": "108.94646555063274", + "province": "陕西省" + }, + { + "area": "新城区", + "city": "西安市", + "country": "中国", + "lat": "34.272724469532555", + "lng": "108.96739103850439", + "province": "陕西省" + }, + { + "area": "碑林区", + "city": "西安市", + "country": "中国", + "lat": "34.236473940411834", + "lng": "108.94049774780775", + "province": "陕西省" + }, + { + "area": "莲湖区", + "city": "西安市", + "country": "中国", + "lat": "34.27101720305327", + "lng": "108.9504264491179", + "province": "陕西省" + }, + { + "area": "灞桥区", + "city": "西安市", + "country": "中国", + "lat": "34.27912767495051", + "lng": "109.07141535554312", + "province": "陕西省" + }, + { + "area": "未央区", + "city": "西安市", + "country": "中国", + "lat": "34.299148106588945", + "lng": "108.95340118781418", + "province": "陕西省" + }, + { + "area": "雁塔区", + "city": "西安市", + "country": "中国", + "lat": "34.220635239985896", + "lng": "108.95144045637755", + "province": "陕西省" + }, + { + "area": "阎良区", + "city": "西安市", + "country": "中国", + "lat": "34.66836327469908", + "lng": "109.23246311821923", + "province": "陕西省" + }, + { + "area": "临潼区", + "city": "西安市", + "country": "中国", + "lat": "34.372747432848406", + "lng": "109.22043579557668", + "province": "陕西省" + }, + { + "area": "长安区", + "city": "西安市", + "country": "中国", + "lat": "34.163290267304646", + "lng": "108.91358047235403", + "province": "陕西省" + }, + { + "area": "高陵区", + "city": "西安市", + "country": "中国", + "lat": "34.541093106058156", + "lng": "109.09438691387484", + "province": "陕西省" + }, + { + "area": "鄠邑区", + "city": "西安市", + "country": "中国", + "lat": "34.11502071159901", + "lng": "108.61142023270983", + "province": "陕西省" + }, + { + "area": "蓝田县", + "city": "西安市", + "country": "中国", + "lat": "34.157620654732256", + "lng": "109.32938812681262", + "province": "陕西省" + }, + { + "area": "周至县", + "city": "西安市", + "country": "中国", + "lat": "34.16938526961624", + "lng": "108.22842183954491", + "province": "陕西省" + }, + { + "area": "", + "city": "铜川市", + "country": "中国", + "lat": "34.902637080502906", + "lng": "108.95240424835922", + "province": "陕西省" + }, + { + "area": "王益区", + "city": "铜川市", + "country": "中国", + "lat": "35.075322096471105", + "lng": "109.08141735858288", + "province": "陕西省" + }, + { + "area": "印台区", + "city": "铜川市", + "country": "中国", + "lat": "35.120859282944565", + "lng": "109.10643408906915", + "province": "陕西省" + }, + { + "area": "耀州区", + "city": "铜川市", + "country": "中国", + "lat": "34.9159603091095", + "lng": "108.98643790006298", + "province": "陕西省" + }, + { + "area": "宜君县", + "city": "铜川市", + "country": "中国", + "lat": "35.40458219421935", + "lng": "109.12353674801253", + "province": "陕西省" + }, + { + "area": "", + "city": "宝鸡市", + "country": "中国", + "lat": "34.36891564286998", + "lng": "107.2445753670404", + "province": "陕西省" + }, + { + "area": "渭滨区", + "city": "宝鸡市", + "country": "中国", + "lat": "34.37748113268169", + "lng": "107.15641916768266", + "province": "陕西省" + }, + { + "area": "金台区", + "city": "宝鸡市", + "country": "中国", + "lat": "34.38235108469557", + "lng": "107.15342367812907", + "province": "陕西省" + }, + { + "area": "陈仓区", + "city": "宝鸡市", + "country": "中国", + "lat": "34.3607563354572", + "lng": "107.39343842394861", + "province": "陕西省" + }, + { + "area": "凤翔县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.52761627989884", + "lng": "107.40737949664961", + "province": "陕西省" + }, + { + "area": "岐山县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.44977696238733", + "lng": "107.62744727878952", + "province": "陕西省" + }, + { + "area": "扶风县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.381463351226095", + "lng": "107.90645306510017", + "province": "陕西省" + }, + { + "area": "眉县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.28037586308579", + "lng": "107.75639813644135", + "province": "陕西省" + }, + { + "area": "陇县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.8987802531072", + "lng": "106.87058365441018", + "province": "陕西省" + }, + { + "area": "千阳县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.64854460079412", + "lng": "107.13946616643724", + "province": "陕西省" + }, + { + "area": "麟游县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.683748667164004", + "lng": "107.79951410600374", + "province": "陕西省" + }, + { + "area": "凤县", + "city": "宝鸡市", + "country": "中国", + "lat": "33.916583016343495", + "lng": "106.52255782186808", + "province": "陕西省" + }, + { + "area": "太白县", + "city": "宝鸡市", + "country": "中国", + "lat": "34.0642484411527", + "lng": "107.32552913248024", + "province": "陕西省" + }, + { + "area": "", + "city": "咸阳市", + "country": "中国", + "lat": "34.335476293368586", + "lng": "108.71542245143303", + "province": "陕西省" + }, + { + "area": "秦都区", + "city": "咸阳市", + "country": "中国", + "lat": "34.33514511609957", + "lng": "108.71243199239031", + "province": "陕西省" + }, + { + "area": "杨陵区", + "city": "咸阳市", + "country": "中国", + "lat": "34.27801250765433", + "lng": "108.09151531880505", + "province": "陕西省" + }, + { + "area": "渭城区", + "city": "咸阳市", + "country": "中国", + "lat": "34.36811022936848", + "lng": "108.7434505714804", + "province": "陕西省" + }, + { + "area": "三原县", + "city": "咸阳市", + "country": "中国", + "lat": "34.623078955251955", + "lng": "108.94744650024964", + "province": "陕西省" + }, + { + "area": "泾阳县", + "city": "咸阳市", + "country": "中国", + "lat": "34.53331653276832", + "lng": "108.84937884704755", + "province": "陕西省" + }, + { + "area": "乾县", + "city": "咸阳市", + "country": "中国", + "lat": "34.53401826614159", + "lng": "108.24537762553739", + "province": "陕西省" + }, + { + "area": "礼泉县", + "city": "咸阳市", + "country": "中国", + "lat": "34.48739076850446", + "lng": "108.4316154916632", + "province": "陕西省" + }, + { + "area": "永寿县", + "city": "咸阳市", + "country": "中国", + "lat": "34.69803553561666", + "lng": "108.14846878644317", + "province": "陕西省" + }, + { + "area": "长武县", + "city": "咸阳市", + "country": "中国", + "lat": "35.21165733871549", + "lng": "107.80556078005252", + "province": "陕西省" + }, + { + "area": "旬邑县", + "city": "咸阳市", + "country": "中国", + "lat": "35.11796391971861", + "lng": "108.3404670366517", + "province": "陕西省" + }, + { + "area": "淳化县", + "city": "咸阳市", + "country": "中国", + "lat": "34.80477691129529", + "lng": "108.58744176373197", + "province": "陕西省" + }, + { + "area": "武功县", + "city": "咸阳市", + "country": "中国", + "lat": "34.26613766763324", + "lng": "108.20655106478513", + "province": "陕西省" + }, + { + "area": "兴平市", + "city": "咸阳市", + "country": "中国", + "lat": "34.30547652029205", + "lng": "108.49639400876816", + "province": "陕西省" + }, + { + "area": "彬州市", + "city": "咸阳市", + "country": "中国", + "lat": "35.04961057182844", + "lng": "108.08456557822713", + "province": "陕西省" + }, + { + "area": "", + "city": "渭南市", + "country": "中国", + "lat": "34.50571551675255", + "lng": "109.51658960525897", + "province": "陕西省" + }, + { + "area": "临渭区", + "city": "渭南市", + "country": "中国", + "lat": "34.504000470428366", + "lng": "109.49859627640245", + "province": "陕西省" + }, + { + "area": "华州区", + "city": "渭南市", + "country": "中国", + "lat": "34.51873074009985", + "lng": "109.77847737160204", + "province": "陕西省" + }, + { + "area": "潼关县", + "city": "渭南市", + "country": "中国", + "lat": "34.55032684853216", + "lng": "110.25250761972325", + "province": "陕西省" + }, + { + "area": "大荔县", + "city": "渭南市", + "country": "中国", + "lat": "34.801832760483684", + "lng": "109.94845330291125", + "province": "陕西省" + }, + { + "area": "合阳县", + "city": "渭南市", + "country": "中国", + "lat": "35.243872196865574", + "lng": "110.15539621273652", + "province": "陕西省" + }, + { + "area": "澄城县", + "city": "渭南市", + "country": "中国", + "lat": "35.19657281555104", + "lng": "109.93843360325295", + "province": "陕西省" + }, + { + "area": "蒲城县", + "city": "渭南市", + "country": "中国", + "lat": "34.96127412878287", + "lng": "109.59249651068265", + "province": "陕西省" + }, + { + "area": "白水县", + "city": "渭南市", + "country": "中国", + "lat": "35.18328751461316", + "lng": "109.59752055373886", + "province": "陕西省" + }, + { + "area": "富平县", + "city": "渭南市", + "country": "中国", + "lat": "34.75726044025601", + "lng": "109.18643744727943", + "province": "陕西省" + }, + { + "area": "韩城市", + "city": "渭南市", + "country": "中国", + "lat": "35.482086787313165", + "lng": "110.44955264011737", + "province": "陕西省" + }, + { + "area": "华阴市", + "city": "渭南市", + "country": "中国", + "lat": "34.57180015875299", + "lng": "110.09860075703762", + "province": "陕西省" + }, + { + "area": "", + "city": "延安市", + "country": "中国", + "lat": "36.59111103521779", + "lng": "109.49658191612687", + "province": "陕西省" + }, + { + "area": "宝塔区", + "city": "延安市", + "country": "中国", + "lat": "36.596890441313086", + "lng": "109.49959402433238", + "province": "陕西省" + }, + { + "area": "安塞区", + "city": "延安市", + "country": "中国", + "lat": "36.87009825930708", + "lng": "109.33541943983717", + "province": "陕西省" + }, + { + "area": "延长县", + "city": "延安市", + "country": "中国", + "lat": "36.58532880170461", + "lng": "110.01847172588649", + "province": "陕西省" + }, + { + "area": "延川县", + "city": "延安市", + "country": "中国", + "lat": "36.884136960992926", + "lng": "110.20054028664882", + "province": "陕西省" + }, + { + "area": "志丹县", + "city": "延安市", + "country": "中国", + "lat": "36.82802113586365", + "lng": "108.7755774799087", + "province": "陕西省" + }, + { + "area": "吴起县", + "city": "延安市", + "country": "中国", + "lat": "36.93257609948267", + "lng": "108.18258966361198", + "province": "陕西省" + }, + { + "area": "甘泉县", + "city": "延安市", + "country": "中国", + "lat": "36.28268861905286", + "lng": "109.35752350453788", + "province": "陕西省" + }, + { + "area": "富县", + "city": "延安市", + "country": "中国", + "lat": "35.99336797796858", + "lng": "109.38659653355447", + "province": "陕西省" + }, + { + "area": "洛川县", + "city": "延安市", + "country": "中国", + "lat": "35.768300429420684", + "lng": "109.43840396824812", + "province": "陕西省" + }, + { + "area": "宜川县", + "city": "延安市", + "country": "中国", + "lat": "36.056397437854244", + "lng": "110.17541306458482", + "province": "陕西省" + }, + { + "area": "黄龙县", + "city": "延安市", + "country": "中国", + "lat": "35.59023376806876", + "lng": "109.84654907670661", + "province": "陕西省" + }, + { + "area": "黄陵县", + "city": "延安市", + "country": "中国", + "lat": "35.58507634896885", + "lng": "109.26960598495414", + "province": "陕西省" + }, + { + "area": "子长市", + "city": "延安市", + "country": "中国", + "lat": "37.14881691836743", + "lng": "109.6813898595419", + "province": "陕西省" + }, + { + "area": "", + "city": "汉中市", + "country": "中国", + "lat": "33.073799907833795", + "lng": "107.02943020926463", + "province": "陕西省" + }, + { + "area": "汉台区", + "city": "汉中市", + "country": "中国", + "lat": "33.07419109309879", + "lng": "107.03840167622332", + "province": "陕西省" + }, + { + "area": "南郑区", + "city": "汉中市", + "country": "中国", + "lat": "33.00561459973419", + "lng": "106.94243318333695", + "province": "陕西省" + }, + { + "area": "城固县", + "city": "汉中市", + "country": "中国", + "lat": "33.162399385178446", + "lng": "107.34061258029828", + "province": "陕西省" + }, + { + "area": "洋县", + "city": "汉中市", + "country": "中国", + "lat": "33.22886258931486", + "lng": "107.55246428058284", + "province": "陕西省" + }, + { + "area": "西乡县", + "city": "汉中市", + "country": "中国", + "lat": "32.98939744189546", + "lng": "107.77339281906241", + "province": "陕西省" + }, + { + "area": "勉县", + "city": "汉中市", + "country": "中国", + "lat": "33.15980474695513", + "lng": "106.67942594866734", + "province": "陕西省" + }, + { + "area": "宁强县", + "city": "汉中市", + "country": "中国", + "lat": "32.835380199208785", + "lng": "106.26458864382062", + "province": "陕西省" + }, + { + "area": "略阳县", + "city": "汉中市", + "country": "中国", + "lat": "33.333193777733165", + "lng": "106.16354400615846", + "province": "陕西省" + }, + { + "area": "镇巴县", + "city": "汉中市", + "country": "中国", + "lat": "32.54283336566986", + "lng": "107.90144564069591", + "province": "陕西省" + }, + { + "area": "留坝县", + "city": "汉中市", + "country": "中国", + "lat": "33.6238252167372", + "lng": "106.92741441351562", + "province": "陕西省" + }, + { + "area": "佛坪县", + "city": "汉中市", + "country": "中国", + "lat": "33.530693101587694", + "lng": "107.99742428443454", + "province": "陕西省" + }, + { + "area": "", + "city": "榆林市", + "country": "中国", + "lat": "38.290883835484046", + "lng": "109.74161603381395", + "province": "陕西省" + }, + { + "area": "榆阳区", + "city": "榆林市", + "country": "中国", + "lat": "38.28241962673043", + "lng": "109.72755916953271", + "province": "陕西省" + }, + { + "area": "横山区", + "city": "榆林市", + "country": "中国", + "lat": "37.96857339416575", + "lng": "109.3004913453371", + "province": "陕西省" + }, + { + "area": "府谷县", + "city": "榆林市", + "country": "中国", + "lat": "39.033795629849784", + "lng": "111.0736281151979", + "province": "陕西省" + }, + { + "area": "靖边县", + "city": "榆林市", + "country": "中国", + "lat": "37.60506319395491", + "lng": "108.80060049853356", + "province": "陕西省" + }, + { + "area": "定边县", + "city": "榆林市", + "country": "中国", + "lat": "37.60045986534103", + "lng": "107.60756957446472", + "province": "陕西省" + }, + { + "area": "绥德县", + "city": "榆林市", + "country": "中国", + "lat": "37.50890728893263", + "lng": "110.26942648535928", + "province": "陕西省" + }, + { + "area": "米脂县", + "city": "榆林市", + "country": "中国", + "lat": "37.761397514329296", + "lng": "110.19045141746625", + "province": "陕西省" + }, + { + "area": "佳县", + "city": "榆林市", + "country": "中国", + "lat": "38.025611678571785", + "lng": "110.4974774187358", + "province": "陕西省" + }, + { + "area": "吴堡县", + "city": "榆林市", + "country": "中国", + "lat": "37.45826987407814", + "lng": "110.74645500778112", + "province": "陕西省" + }, + { + "area": "清涧县", + "city": "榆林市", + "country": "中国", + "lat": "37.09485288782833", + "lng": "110.12755916227111", + "province": "陕西省" + }, + { + "area": "子洲县", + "city": "榆林市", + "country": "中国", + "lat": "37.617025887547484", + "lng": "110.04239845246695", + "province": "陕西省" + }, + { + "area": "神木市", + "city": "榆林市", + "country": "中国", + "lat": "38.848544495220935", + "lng": "110.50542966826288", + "province": "陕西省" + }, + { + "area": "", + "city": "安康市", + "country": "中国", + "lat": "32.69051277057377", + "lng": "109.03560108265746", + "province": "陕西省" + }, + { + "area": "汉滨区", + "city": "安康市", + "country": "中国", + "lat": "32.7011961057378", + "lng": "109.03359606475921", + "province": "陕西省" + }, + { + "area": "汉阴县", + "city": "安康市", + "country": "中国", + "lat": "32.899120857292424", + "lng": "108.5155069856123", + "province": "陕西省" + }, + { + "area": "石泉县", + "city": "安康市", + "country": "中国", + "lat": "33.04460211026271", + "lng": "108.2544267959227", + "province": "陕西省" + }, + { + "area": "宁陕县", + "city": "安康市", + "country": "中国", + "lat": "33.31655548650337", + "lng": "108.32056400011153", + "province": "陕西省" + }, + { + "area": "紫阳县", + "city": "安康市", + "country": "中国", + "lat": "32.525785619364406", + "lng": "108.54159431660538", + "province": "陕西省" + }, + { + "area": "岚皋县", + "city": "安康市", + "country": "中国", + "lat": "32.312880776500705", + "lng": "108.90861535813927", + "province": "陕西省" + }, + { + "area": "平利县", + "city": "安康市", + "country": "中国", + "lat": "32.39480412318467", + "lng": "109.36854670128137", + "province": "陕西省" + }, + { + "area": "镇坪县", + "city": "安康市", + "country": "中国", + "lat": "31.889643295790933", + "lng": "109.53349679292336", + "province": "陕西省" + }, + { + "area": "旬阳县", + "city": "安康市", + "country": "中国", + "lat": "32.83986422177221", + "lng": "109.3715567433842", + "province": "陕西省" + }, + { + "area": "白河县", + "city": "安康市", + "country": "中国", + "lat": "32.814846485284406", + "lng": "110.11958688053117", + "province": "陕西省" + }, + { + "area": "", + "city": "商洛市", + "country": "中国", + "lat": "33.87863385220776", + "lng": "109.92441788136406", + "province": "陕西省" + }, + { + "area": "商州区", + "city": "商洛市", + "country": "中国", + "lat": "33.86885529307985", + "lng": "109.94747163464996", + "province": "陕西省" + }, + { + "area": "洛南县", + "city": "商洛市", + "country": "中国", + "lat": "34.097070538846296", + "lng": "110.15442748007456", + "province": "陕西省" + }, + { + "area": "丹凤县", + "city": "商洛市", + "country": "中国", + "lat": "33.701537322920714", + "lng": "110.33356028859974", + "province": "陕西省" + }, + { + "area": "商南县", + "city": "商洛市", + "country": "中国", + "lat": "33.5375334767074", + "lng": "110.88840847836768", + "province": "陕西省" + }, + { + "area": "山阳县", + "city": "商洛市", + "country": "中国", + "lat": "33.53796838276926", + "lng": "109.88854863218121", + "province": "陕西省" + }, + { + "area": "镇安县", + "city": "商洛市", + "country": "中国", + "lat": "33.42904465014651", + "lng": "109.15957460913961", + "province": "陕西省" + }, + { + "area": "柞水县", + "city": "商洛市", + "country": "中国", + "lat": "33.69202624194488", + "lng": "109.12050227199981", + "province": "陕西省" + }, + { + "area": "", + "city": "兰州市", + "country": "中国", + "lat": "36.067234693545565", + "lng": "103.84052119633628", + "province": "甘肃省" + }, + { + "area": "城关区", + "city": "兰州市", + "country": "中国", + "lat": "36.0631814753695", + "lng": "103.83147490052859", + "province": "甘肃省" + }, + { + "area": "七里河区", + "city": "兰州市", + "country": "中国", + "lat": "36.07212925843043", + "lng": "103.79241388203823", + "province": "甘肃省" + }, + { + "area": "西固区", + "city": "兰州市", + "country": "中国", + "lat": "36.094109365756935", + "lng": "103.63458007681574", + "province": "甘肃省" + }, + { + "area": "安宁区", + "city": "兰州市", + "country": "中国", + "lat": "36.10975375497273", + "lng": "103.72553503682038", + "province": "甘肃省" + }, + { + "area": "红古区", + "city": "兰州市", + "country": "中国", + "lat": "36.35186342317893", + "lng": "102.86542781272101", + "province": "甘肃省" + }, + { + "area": "永登县", + "city": "兰州市", + "country": "中国", + "lat": "36.7420952134404", + "lng": "103.26662443822926", + "province": "甘肃省" + }, + { + "area": "皋兰县", + "city": "兰州市", + "country": "中国", + "lat": "36.33814214867315", + "lng": "103.95346415996974", + "province": "甘肃省" + }, + { + "area": "榆中县", + "city": "兰州市", + "country": "中国", + "lat": "35.848851048242274", + "lng": "104.11956587927553", + "province": "甘肃省" + }, + { + "area": "兰州新区", + "city": "兰州市", + "country": "中国", + "lat": "36.66576792531683", + "lng": "103.65886828153342", + "province": "甘肃省" + }, + { + "area": "", + "city": "嘉峪关市", + "country": "中国", + "lat": "39.77796014739059", + "lng": "98.29620384300111", + "province": "甘肃省" + }, + { + "area": "嘉峪关市", + "city": "嘉峪关市", + "country": "中国", + "lat": "39.77796014739059", + "lng": "98.29620384300111", + "province": "甘肃省" + }, + { + "area": "", + "city": "金昌市", + "country": "中国", + "lat": "38.52582009209263", + "lng": "102.19460568669837", + "province": "甘肃省" + }, + { + "area": "金川区", + "city": "金昌市", + "country": "中国", + "lat": "38.52577224559433", + "lng": "102.20058588613941", + "province": "甘肃省" + }, + { + "area": "永昌县", + "city": "金昌市", + "country": "中国", + "lat": "38.252940956889034", + "lng": "101.97946358316133", + "province": "甘肃省" + }, + { + "area": "", + "city": "白银市", + "country": "中国", + "lat": "36.55082533041454", + "lng": "104.1444508283435", + "province": "甘肃省" + }, + { + "area": "白银区", + "city": "白银市", + "country": "中国", + "lat": "36.54146356806949", + "lng": "104.15541276065119", + "province": "甘肃省" + }, + { + "area": "平川区", + "city": "白银市", + "country": "中国", + "lat": "36.73349875186937", + "lng": "104.83161394006756", + "province": "甘肃省" + }, + { + "area": "靖远县", + "city": "白银市", + "country": "中国", + "lat": "36.577096288836835", + "lng": "104.682515077963", + "province": "甘肃省" + }, + { + "area": "会宁县", + "city": "白银市", + "country": "中国", + "lat": "35.69850805309429", + "lng": "105.0596069327387", + "province": "甘肃省" + }, + { + "area": "景泰县", + "city": "白银市", + "country": "中国", + "lat": "37.18740626009718", + "lng": "104.069444384363", + "province": "甘肃省" + }, + { + "area": "", + "city": "天水市", + "country": "中国", + "lat": "34.58741188165064", + "lng": "105.73141674566955", + "province": "甘肃省" + }, + { + "area": "秦州区", + "city": "天水市", + "country": "中国", + "lat": "34.587315743120705", + "lng": "105.73041549434814", + "province": "甘肃省" + }, + { + "area": "麦积区", + "city": "天水市", + "country": "中国", + "lat": "34.57633686144821", + "lng": "105.89559698948948", + "province": "甘肃省" + }, + { + "area": "清水县", + "city": "天水市", + "country": "中国", + "lat": "34.753882906362854", + "lng": "106.14359506620673", + "province": "甘肃省" + }, + { + "area": "秦安县", + "city": "天水市", + "country": "中国", + "lat": "34.86487611156845", + "lng": "105.68157480343173", + "province": "甘肃省" + }, + { + "area": "甘谷县", + "city": "天水市", + "country": "中国", + "lat": "34.738300137397694", + "lng": "105.34247534291173", + "province": "甘肃省" + }, + { + "area": "武山县", + "city": "天水市", + "country": "中国", + "lat": "34.72766910163516", + "lng": "104.89742838308665", + "province": "甘肃省" + }, + { + "area": "张家川回族自治县", + "city": "天水市", + "country": "中国", + "lat": "34.99490501301995", + "lng": "106.21139036270586", + "province": "甘肃省" + }, + { + "area": "", + "city": "武威市", + "country": "中国", + "lat": "37.93437780815811", + "lng": "102.64455434036918", + "province": "甘肃省" + }, + { + "area": "凉州区", + "city": "武威市", + "country": "中国", + "lat": "37.934121948376344", + "lng": "102.64857479650965", + "province": "甘肃省" + }, + { + "area": "民勤县", + "city": "武威市", + "country": "中国", + "lat": "38.630624826433106", + "lng": "103.10040027988245", + "province": "甘肃省" + }, + { + "area": "古浪县", + "city": "武威市", + "country": "中国", + "lat": "37.47580190660082", + "lng": "102.90362978165219", + "province": "甘肃省" + }, + { + "area": "天祝藏族自治县", + "city": "武威市", + "country": "中国", + "lat": "36.97759617654046", + "lng": "103.14862131965808", + "province": "甘肃省" + }, + { + "area": "", + "city": "张掖市", + "country": "中国", + "lat": "38.932066007004934", + "lng": "100.45641147405634", + "province": "甘肃省" + }, + { + "area": "甘州区", + "city": "张掖市", + "country": "中国", + "lat": "38.9347814717853", + "lng": "100.48455772127826", + "province": "甘肃省" + }, + { + "area": "肃南裕固族自治县", + "city": "张掖市", + "country": "中国", + "lat": "38.84310020502293", + "lng": "99.62190541800803", + "province": "甘肃省" + }, + { + "area": "民乐县", + "city": "张掖市", + "country": "中国", + "lat": "38.436842233981295", + "lng": "100.8194290374239", + "province": "甘肃省" + }, + { + "area": "临泽县", + "city": "张掖市", + "country": "中国", + "lat": "39.15851444472609", + "lng": "100.17055476077383", + "province": "甘肃省" + }, + { + "area": "高台县", + "city": "张掖市", + "country": "中国", + "lat": "39.38364604680699", + "lng": "99.82575950433726", + "province": "甘肃省" + }, + { + "area": "山丹县", + "city": "张掖市", + "country": "中国", + "lat": "38.79045266330607", + "lng": "101.09561558172206", + "province": "甘肃省" + }, + { + "area": "", + "city": "平凉市", + "country": "中国", + "lat": "35.549232050463516", + "lng": "106.67144234827796", + "province": "甘肃省" + }, + { + "area": "崆峒区", + "city": "平凉市", + "country": "中国", + "lat": "35.54881489223205", + "lng": "106.68141452757479", + "province": "甘肃省" + }, + { + "area": "泾川县", + "city": "平凉市", + "country": "中国", + "lat": "35.33866859782093", + "lng": "107.37451813363634", + "province": "甘肃省" + }, + { + "area": "灵台县", + "city": "平凉市", + "country": "中国", + "lat": "35.07158181695951", + "lng": "107.62746120252491", + "province": "甘肃省" + }, + { + "area": "崇信县", + "city": "平凉市", + "country": "中国", + "lat": "35.308615839828015", + "lng": "107.04141513188709", + "province": "甘肃省" + }, + { + "area": "庄浪县", + "city": "平凉市", + "country": "中国", + "lat": "35.20819212580443", + "lng": "106.04258582178167", + "province": "甘肃省" + }, + { + "area": "静宁县", + "city": "平凉市", + "country": "中国", + "lat": "35.52825718913639", + "lng": "105.73841580322", + "province": "甘肃省" + }, + { + "area": "华亭市", + "city": "平凉市", + "country": "中国", + "lat": "35.22355076289732", + "lng": "106.6594859917707", + "province": "甘肃省" + }, + { + "area": "", + "city": "酒泉市", + "country": "中国", + "lat": "39.73846908071564", + "lng": "98.50068521606795", + "province": "甘肃省" + }, + { + "area": "肃州区", + "city": "酒泉市", + "country": "中国", + "lat": "39.75124550996345", + "lng": "98.51432185303162", + "province": "甘肃省" + }, + { + "area": "金塔县", + "city": "酒泉市", + "country": "中国", + "lat": "39.99002925409325", + "lng": "98.9083682361721", + "province": "甘肃省" + }, + { + "area": "瓜州县", + "city": "酒泉市", + "country": "中国", + "lat": "40.526105978950454", + "lng": "95.78873636451216", + "province": "甘肃省" + }, + { + "area": "肃北蒙古族自治县", + "city": "酒泉市", + "country": "中国", + "lat": "39.518329738436066", + "lng": "94.8836923954122", + "province": "甘肃省" + }, + { + "area": "阿克塞哈萨克族自治县", + "city": "酒泉市", + "country": "中国", + "lat": "39.640045316916535", + "lng": "94.34676019039637", + "province": "甘肃省" + }, + { + "area": "玉门市", + "city": "酒泉市", + "country": "中国", + "lat": "40.29762002088378", + "lng": "97.05171169118218", + "province": "甘肃省" + }, + { + "area": "敦煌市", + "city": "酒泉市", + "country": "中国", + "lat": "40.14786748424431", + "lng": "94.66852702576244", + "province": "甘肃省" + }, + { + "area": "", + "city": "庆阳市", + "country": "中国", + "lat": "35.71521598356201", + "lng": "107.6493856959542", + "province": "甘肃省" + }, + { + "area": "西峰区", + "city": "庆阳市", + "country": "中国", + "lat": "35.73686447597771", + "lng": "107.65739112516746", + "province": "甘肃省" + }, + { + "area": "庆城县", + "city": "庆阳市", + "country": "中国", + "lat": "36.021726360644436", + "lng": "107.88840619723527", + "province": "甘肃省" + }, + { + "area": "环县", + "city": "庆阳市", + "country": "中国", + "lat": "36.57442710890686", + "lng": "107.31446964419415", + "province": "甘肃省" + }, + { + "area": "华池县", + "city": "庆阳市", + "country": "中国", + "lat": "36.46757512988424", + "lng": "107.9963895263176", + "province": "甘肃省" + }, + { + "area": "合水县", + "city": "庆阳市", + "country": "中国", + "lat": "35.825262216399665", + "lng": "108.02644718800366", + "province": "甘肃省" + }, + { + "area": "正宁县", + "city": "庆阳市", + "country": "中国", + "lat": "35.49821878089757", + "lng": "108.36637461671222", + "province": "甘肃省" + }, + { + "area": "宁县", + "city": "庆阳市", + "country": "中国", + "lat": "35.5079329745365", + "lng": "107.934570925868", + "province": "甘肃省" + }, + { + "area": "镇原县", + "city": "庆阳市", + "country": "中国", + "lat": "35.68323058631626", + "lng": "107.20757586986487", + "province": "甘肃省" + }, + { + "area": "", + "city": "定西市", + "country": "中国", + "lat": "35.586832926561875", + "lng": "104.63242008306302", + "province": "甘肃省" + }, + { + "area": "安定区", + "city": "定西市", + "country": "中国", + "lat": "35.58560001672479", + "lng": "104.61650040264573", + "province": "甘肃省" + }, + { + "area": "通渭县", + "city": "定西市", + "country": "中国", + "lat": "35.217216821266426", + "lng": "105.24840362210966", + "province": "甘肃省" + }, + { + "area": "陇西县", + "city": "定西市", + "country": "中国", + "lat": "35.01019716231762", + "lng": "104.64138059069448", + "province": "甘肃省" + }, + { + "area": "渭源县", + "city": "定西市", + "country": "中国", + "lat": "35.1423919580207", + "lng": "104.22158401061884", + "province": "甘肃省" + }, + { + "area": "临洮县", + "city": "定西市", + "country": "中国", + "lat": "35.400587040257776", + "lng": "103.8656010776999", + "province": "甘肃省" + }, + { + "area": "漳县", + "city": "定西市", + "country": "中国", + "lat": "34.85424998177814", + "lng": "104.478595325501", + "province": "甘肃省" + }, + { + "area": "岷县", + "city": "定西市", + "country": "中国", + "lat": "34.444407640650375", + "lng": "104.04339603982906", + "province": "甘肃省" + }, + { + "area": "", + "city": "陇南市", + "country": "中国", + "lat": "33.40662022995126", + "lng": "104.92857497071192", + "province": "甘肃省" + }, + { + "area": "武都区", + "city": "陇南市", + "country": "中国", + "lat": "33.39807218808857", + "lng": "104.9325933607497", + "province": "甘肃省" + }, + { + "area": "成县", + "city": "陇南市", + "country": "中国", + "lat": "33.75663518735122", + "lng": "105.74847790289836", + "province": "甘肃省" + }, + { + "area": "文县", + "city": "陇南市", + "country": "中国", + "lat": "32.94960128076792", + "lng": "104.68955842197508", + "province": "甘肃省" + }, + { + "area": "宕昌县", + "city": "陇南市", + "country": "中国", + "lat": "34.05348629135883", + "lng": "104.39938579986988", + "province": "甘肃省" + }, + { + "area": "康县", + "city": "陇南市", + "country": "中国", + "lat": "33.33537640199648", + "lng": "105.61539187549245", + "province": "甘肃省" + }, + { + "area": "西和县", + "city": "陇南市", + "country": "中国", + "lat": "34.016787358436645", + "lng": "105.30761048911957", + "province": "甘肃省" + }, + { + "area": "礼县", + "city": "陇南市", + "country": "中国", + "lat": "34.194685061207444", + "lng": "105.18359096939531", + "province": "甘肃省" + }, + { + "area": "徽县", + "city": "陇南市", + "country": "中国", + "lat": "33.77519418708969", + "lng": "106.0944178700463", + "province": "甘肃省" + }, + { + "area": "两当县", + "city": "陇南市", + "country": "中国", + "lat": "33.91512283517304", + "lng": "106.31141946598899", + "province": "甘肃省" + }, + { + "area": "", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.60989877268906", + "lng": "103.24954917760394", + "province": "甘肃省" + }, + { + "area": "临夏市", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.60989877268906", + "lng": "103.24954917760394", + "province": "甘肃省" + }, + { + "area": "临夏县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.60989877268906", + "lng": "103.24954917760394", + "province": "甘肃省" + }, + { + "area": "康乐县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.37610976070173", + "lng": "103.71547554222798", + "province": "甘肃省" + }, + { + "area": "永靖县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.963330304471256", + "lng": "103.29250749454934", + "province": "甘肃省" + }, + { + "area": "广河县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.49410136169551", + "lng": "103.58240999618769", + "province": "甘肃省" + }, + { + "area": "和政县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.43058990416631", + "lng": "103.35752370329226", + "province": "甘肃省" + }, + { + "area": "东乡族自治县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "28.25397739799852", + "lng": "116.60954171504868", + "province": "甘肃省" + }, + { + "area": "积石山保安族东乡族撒拉族自治县", + "city": "临夏回族自治州", + "country": "中国", + "lat": "35.787165663562654", + "lng": "103.05835652777675", + "province": "甘肃省" + }, + { + "area": "", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "34.98913990996821", + "lng": "102.91758468825803", + "province": "甘肃省" + }, + { + "area": "合作市", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "35.00593542819599", + "lng": "102.91757157299759", + "province": "甘肃省" + }, + { + "area": "临潭县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "34.69863941152157", + "lng": "103.36053329624235", + "province": "甘肃省" + }, + { + "area": "卓尼县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "34.59491643280379", + "lng": "103.51361578396147", + "province": "甘肃省" + }, + { + "area": "舟曲县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "33.790814973644174", + "lng": "104.37748996238638", + "province": "甘肃省" + }, + { + "area": "迭部县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "34.06202005409746", + "lng": "103.22844034557771", + "province": "甘肃省" + }, + { + "area": "玛曲县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "34.003358168342224", + "lng": "102.07860004025919", + "province": "甘肃省" + }, + { + "area": "碌曲县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "34.59708727156553", + "lng": "102.49442413370862", + "province": "甘肃省" + }, + { + "area": "夏河县", + "city": "甘南藏族自治州", + "country": "中国", + "lat": "35.20832432554126", + "lng": "102.52857708038411", + "province": "甘肃省" + }, + { + "area": "", + "city": "西宁市", + "country": "中国", + "lat": "36.62338469651661", + "lng": "101.78445017050855", + "province": "青海省" + }, + { + "area": "城东区", + "city": "西宁市", + "country": "中国", + "lat": "36.605707645661155", + "lng": "101.8095690383313", + "province": "青海省" + }, + { + "area": "城中区", + "city": "西宁市", + "country": "中国", + "lat": "36.628800570588666", + "lng": "101.79048354963578", + "province": "青海省" + }, + { + "area": "城西区", + "city": "西宁市", + "country": "中国", + "lat": "36.63449697952408", + "lng": "101.77241422413312", + "province": "青海省" + }, + { + "area": "城北区", + "city": "西宁市", + "country": "中国", + "lat": "36.656293630836586", + "lng": "101.77240488175582", + "province": "青海省" + }, + { + "area": "大通回族土族自治县", + "city": "西宁市", + "country": "中国", + "lat": "36.93266646340686", + "lng": "101.69256375752063", + "province": "青海省" + }, + { + "area": "湟中县", + "city": "西宁市", + "country": "中国", + "lat": "36.50662754628146", + "lng": "101.57861675781865", + "province": "青海省" + }, + { + "area": "湟源县", + "city": "西宁市", + "country": "中国", + "lat": "36.68858751490262", + "lng": "101.2624486115435", + "province": "青海省" + }, + { + "area": "", + "city": "海东市", + "country": "中国", + "lat": "36.508511080941304", + "lng": "102.1104440722824", + "province": "青海省" + }, + { + "area": "乐都区", + "city": "海东市", + "country": "中国", + "lat": "36.48782005152185", + "lng": "102.40856633882869", + "province": "青海省" + }, + { + "area": "平安区", + "city": "海东市", + "country": "中国", + "lat": "36.506553573162044", + "lng": "102.11442787755806", + "province": "青海省" + }, + { + "area": "民和回族土族自治县", + "city": "海东市", + "country": "中国", + "lat": "36.3255614018714", + "lng": "102.8363896379582", + "province": "青海省" + }, + { + "area": "互助土族自治县", + "city": "海东市", + "country": "中国", + "lat": "36.85002161382641", + "lng": "101.96456904899203", + "province": "青海省" + }, + { + "area": "化隆回族自治县", + "city": "海东市", + "country": "中国", + "lat": "36.10098825089297", + "lng": "102.27044827344754", + "province": "青海省" + }, + { + "area": "循化撒拉族自治县", + "city": "海东市", + "country": "中国", + "lat": "35.85666722386152", + "lng": "102.49538532060429", + "province": "青海省" + }, + { + "area": "", + "city": "海北藏族自治州", + "country": "中国", + "lat": "36.96066282412982", + "lng": "100.90743432145598", + "province": "青海省" + }, + { + "area": "门源回族自治县", + "city": "海北藏族自治州", + "country": "中国", + "lat": "37.382180626313485", + "lng": "101.62843803902976", + "province": "青海省" + }, + { + "area": "祁连县", + "city": "海北藏族自治州", + "country": "中国", + "lat": "38.18292487156922", + "lng": "100.25962157242704", + "province": "青海省" + }, + { + "area": "海晏县", + "city": "海北藏族自治州", + "country": "中国", + "lat": "36.90237602251455", + "lng": "101.00058554860196", + "province": "青海省" + }, + { + "area": "刚察县", + "city": "海北藏族自治州", + "country": "中国", + "lat": "37.3273200722536", + "lng": "100.15360607139486", + "province": "青海省" + }, + { + "area": "", + "city": "黄南藏族自治州", + "country": "中国", + "lat": "35.525804586515534", + "lng": "102.02242827807585", + "province": "青海省" + }, + { + "area": "同仁县", + "city": "黄南藏族自治州", + "country": "中国", + "lat": "35.52186515052424", + "lng": "102.02543778119538", + "province": "青海省" + }, + { + "area": "尖扎县", + "city": "黄南藏族自治州", + "country": "中国", + "lat": "35.94428445986772", + "lng": "102.0375073241969", + "province": "青海省" + }, + { + "area": "泽库县", + "city": "黄南藏族自治州", + "country": "中国", + "lat": "35.042014495100005", + "lng": "101.47359451318887", + "province": "青海省" + }, + { + "area": "河南蒙古族自治县", + "city": "黄南藏族自治州", + "country": "中国", + "lat": "34.740396071091155", + "lng": "101.62247338027404", + "province": "青海省" + }, + { + "area": "", + "city": "海南藏族自治州", + "country": "中国", + "lat": "36.2921024798988", + "lng": "100.62662114445924", + "province": "青海省" + }, + { + "area": "共和县", + "city": "海南藏族自治州", + "country": "中国", + "lat": "36.28870331786534", + "lng": "100.62662348005355", + "province": "青海省" + }, + { + "area": "同德县", + "city": "海南藏族自治州", + "country": "中国", + "lat": "35.25985777581735", + "lng": "100.58542386563559", + "province": "青海省" + }, + { + "area": "贵德县", + "city": "海南藏族自治州", + "country": "中国", + "lat": "36.046158080751304", + "lng": "101.43953310384482", + "province": "青海省" + }, + { + "area": "兴海县", + "city": "海南藏族自治州", + "country": "中国", + "lat": "35.594629879948684", + "lng": "99.994380072293", + "province": "青海省" + }, + { + "area": "贵南县", + "city": "海南藏族自治州", + "country": "中国", + "lat": "35.59241545461141", + "lng": "100.7535932147337", + "province": "青海省" + }, + { + "area": "", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "34.4771938664709", + "lng": "100.25159197879555", + "province": "青海省" + }, + { + "area": "玛沁县", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "34.48356948600165", + "lng": "100.24556434882359", + "province": "青海省" + }, + { + "area": "班玛县", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "32.93850392746955", + "lng": "100.74360459644603", + "province": "青海省" + }, + { + "area": "甘德县", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "33.975003677602174", + "lng": "99.90751069557831", + "province": "青海省" + }, + { + "area": "达日县", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "33.754937373991375", + "lng": "99.65801011306507", + "province": "青海省" + }, + { + "area": "久治县", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "33.43477349940803", + "lng": "101.4885322558532", + "province": "青海省" + }, + { + "area": "玛多县", + "city": "果洛藏族自治州", + "country": "中国", + "lat": "34.92074864618621", + "lng": "98.21588383209857", + "province": "青海省" + }, + { + "area": "", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "33.01097958514274", + "lng": "97.01318076277326", + "province": "青海省" + }, + { + "area": "玉树市", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "32.99955565088557", + "lng": "97.01537640110074", + "province": "青海省" + }, + { + "area": "杂多县", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "32.89924067586018", + "lng": "95.30696487882817", + "province": "青海省" + }, + { + "area": "称多县", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "33.37422569894356", + "lng": "97.11500000927667", + "province": "青海省" + }, + { + "area": "治多县", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "33.85795326771854", + "lng": "95.61979357436996", + "province": "青海省" + }, + { + "area": "囊谦县", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "32.209194368698284", + "lng": "96.48691827128273", + "province": "青海省" + }, + { + "area": "曲麻莱县", + "city": "玉树藏族自治州", + "country": "中国", + "lat": "34.13229866699674", + "lng": "95.80375001399207", + "province": "青海省" + }, + { + "area": "", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "37.38275046252745", + "lng": "97.37629911601906", + "province": "青海省" + }, + { + "area": "格尔木市", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "36.41237104695386", + "lng": "94.93331021042529", + "province": "青海省" + }, + { + "area": "德令哈市", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "37.37534590746335", + "lng": "97.36747029997534", + "province": "青海省" + }, + { + "area": "茫崖市", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "38.261902814972395", + "lng": "90.87951750333991", + "province": "青海省" + }, + { + "area": "乌兰县", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "36.9357478590324", + "lng": "98.48673569929515", + "province": "青海省" + }, + { + "area": "都兰县", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "36.307611028682054", + "lng": "98.10270479377708", + "province": "青海省" + }, + { + "area": "天峻县", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "37.306903395111", + "lng": "99.02924296796702", + "province": "青海省" + }, + { + "area": "大柴旦行政委员会", + "city": "海西蒙古族藏族自治州", + "country": "中国", + "lat": "37.85858431029558", + "lng": "95.3719837824876", + "province": "青海省" + }, + { + "area": "", + "city": "银川市", + "country": "中国", + "lat": "38.492460055509596", + "lng": "106.23849358740017", + "province": "宁夏回族自治区" + }, + { + "area": "兴庆区", + "city": "银川市", + "country": "中国", + "lat": "38.47957892945585", + "lng": "106.2954937669248", + "province": "宁夏回族自治区" + }, + { + "area": "西夏区", + "city": "银川市", + "country": "中国", + "lat": "38.496817469603855", + "lng": "106.15658124015063", + "province": "宁夏回族自治区" + }, + { + "area": "金凤区", + "city": "银川市", + "country": "中国", + "lat": "38.47869523872185", + "lng": "106.24956089094421", + "province": "宁夏回族自治区" + }, + { + "area": "永宁县", + "city": "银川市", + "country": "中国", + "lat": "38.28300154152117", + "lng": "106.2596045753596", + "province": "宁夏回族自治区" + }, + { + "area": "贺兰县", + "city": "银川市", + "country": "中国", + "lat": "38.56040668957878", + "lng": "106.35651826530358", + "province": "宁夏回族自治区" + }, + { + "area": "灵武市", + "city": "银川市", + "country": "中国", + "lat": "38.108658666793254", + "lng": "106.34644035544825", + "province": "宁夏回族自治区" + }, + { + "area": "", + "city": "石嘴山市", + "country": "中国", + "lat": "38.98968283991508", + "lng": "106.3906004255049", + "province": "宁夏回族自治区" + }, + { + "area": "大武口区", + "city": "石嘴山市", + "country": "中国", + "lat": "39.02484775662651", + "lng": "106.37461049759675", + "province": "宁夏回族自治区" + }, + { + "area": "惠农区", + "city": "石嘴山市", + "country": "中国", + "lat": "39.24538810836003", + "lng": "106.78843002230066", + "province": "宁夏回族自治区" + }, + { + "area": "平罗县", + "city": "石嘴山市", + "country": "中国", + "lat": "38.91960682591035", + "lng": "106.53651847762919", + "province": "宁夏回族自治区" + }, + { + "area": "", + "city": "吴忠市", + "country": "中国", + "lat": "38.00371291345338", + "lng": "106.20537126663626", + "province": "宁夏回族自治区" + }, + { + "area": "利通区", + "city": "吴忠市", + "country": "中国", + "lat": "37.99074608085695", + "lng": "106.21940702073802", + "province": "宁夏回族自治区" + }, + { + "area": "红寺堡区", + "city": "吴忠市", + "country": "中国", + "lat": "37.43188245444605", + "lng": "106.06842117807918", + "province": "宁夏回族自治区" + }, + { + "area": "盐池县", + "city": "吴忠市", + "country": "中国", + "lat": "37.78929564990927", + "lng": "107.4133795486424", + "province": "宁夏回族自治区" + }, + { + "area": "同心县", + "city": "吴忠市", + "country": "中国", + "lat": "36.98626962916477", + "lng": "105.92059907759594", + "province": "宁夏回族自治区" + }, + { + "area": "青铜峡市", + "city": "吴忠市", + "country": "中国", + "lat": "38.027412223967175", + "lng": "106.0853703166109", + "province": "宁夏回族自治区" + }, + { + "area": "", + "city": "固原市", + "country": "中国", + "lat": "36.02161725801098", + "lng": "106.24857742607188", + "province": "宁夏回族自治区" + }, + { + "area": "原州区", + "city": "固原市", + "country": "中国", + "lat": "36.009367675762505", + "lng": "106.29451461391893", + "province": "宁夏回族自治区" + }, + { + "area": "西吉县", + "city": "固原市", + "country": "中国", + "lat": "35.97007642089009", + "lng": "105.73538590856539", + "province": "宁夏回族自治区" + }, + { + "area": "隆德县", + "city": "固原市", + "country": "中国", + "lat": "35.63176231509369", + "lng": "106.11849829669953", + "province": "宁夏回族自治区" + }, + { + "area": "泾源县", + "city": "固原市", + "country": "中国", + "lat": "35.50436163767883", + "lng": "106.3373934308267", + "province": "宁夏回族自治区" + }, + { + "area": "彭阳县", + "city": "固原市", + "country": "中国", + "lat": "35.85540546348971", + "lng": "106.64454429656213", + "province": "宁夏回族自治区" + }, + { + "area": "", + "city": "中卫市", + "country": "中国", + "lat": "37.50570141870293", + "lng": "105.20357090088713", + "province": "宁夏回族自治区" + }, + { + "area": "沙坡头区", + "city": "中卫市", + "country": "中国", + "lat": "37.50570141870293", + "lng": "105.20357090088713", + "province": "宁夏回族自治区" + }, + { + "area": "中宁县", + "city": "中卫市", + "country": "中国", + "lat": "37.497420805578884", + "lng": "105.69153719119848", + "province": "宁夏回族自治区" + }, + { + "area": "海原县", + "city": "中卫市", + "country": "中国", + "lat": "36.570781489719", + "lng": "105.65055514637504", + "province": "宁夏回族自治区" + }, + { + "area": "", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.830763204290484", + "lng": "87.62443993536046", + "province": "新疆维吾尔自治区" + }, + { + "area": "天山区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.80027135831345", + "lng": "87.63840777756565", + "province": "新疆维吾尔自治区" + }, + { + "area": "沙依巴克区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.807262352761235", + "lng": "87.60467002769686", + "province": "新疆维吾尔自治区" + }, + { + "area": "新市区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.86139400274798", + "lng": "87.57590844120058", + "province": "新疆维吾尔自治区" + }, + { + "area": "水磨沟区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.838251163831174", + "lng": "87.64889666219182", + "province": "新疆维吾尔自治区" + }, + { + "area": "头屯河区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.882653022601524", + "lng": "87.43450670985825", + "province": "新疆维吾尔自治区" + }, + { + "area": "达坂城区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.36994274633969", + "lng": "88.31739765660721", + "province": "新疆维吾尔自治区" + }, + { + "area": "米东区", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.97924742639792", + "lng": "87.66213427184795", + "province": "新疆维吾尔自治区" + }, + { + "area": "乌鲁木齐县", + "city": "乌鲁木齐市", + "country": "中国", + "lat": "43.47708606579323", + "lng": "87.41602874517912", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "克拉玛依市", + "country": "中国", + "lat": "45.58567523781376", + "lng": "84.89590053887504", + "province": "新疆维吾尔自治区" + }, + { + "area": "独山子区", + "city": "克拉玛依市", + "country": "中国", + "lat": "44.33440739236509", + "lng": "84.89361328334303", + "province": "新疆维吾尔自治区" + }, + { + "area": "克拉玛依区", + "city": "克拉玛依市", + "country": "中国", + "lat": "45.596624206980934", + "lng": "84.866221962114", + "province": "新疆维吾尔自治区" + }, + { + "area": "白碱滩区", + "city": "克拉玛依市", + "country": "中国", + "lat": "45.69395162976408", + "lng": "85.13951012368591", + "province": "新疆维吾尔自治区" + }, + { + "area": "乌尔禾区", + "city": "克拉玛依市", + "country": "中国", + "lat": "46.095295184689334", + "lng": "85.70030482644177", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "吐鲁番市", + "country": "中国", + "lat": "42.95698484877124", + "lng": "89.1972972460079", + "province": "新疆维吾尔自治区" + }, + { + "area": "高昌区", + "city": "吐鲁番市", + "country": "中国", + "lat": "42.94854869168373", + "lng": "89.19245888270062", + "province": "新疆维吾尔自治区" + }, + { + "area": "鄯善县", + "city": "吐鲁番市", + "country": "中国", + "lat": "42.874759228479064", + "lng": "90.22009388610284", + "province": "新疆维吾尔自治区" + }, + { + "area": "托克逊县", + "city": "吐鲁番市", + "country": "中国", + "lat": "42.79854583102295", + "lng": "88.66016435954114", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "哈密市", + "country": "中国", + "lat": "42.82582436811265", + "lng": "93.52121554028504", + "province": "新疆维吾尔自治区" + }, + { + "area": "伊州区", + "city": "哈密市", + "country": "中国", + "lat": "42.832824924720725", + "lng": "93.52132046236862", + "province": "新疆维吾尔自治区" + }, + { + "area": "巴里坤哈萨克自治县", + "city": "哈密市", + "country": "中国", + "lat": "43.78822869765155", + "lng": "87.64994363726368", + "province": "新疆维吾尔自治区" + }, + { + "area": "伊吾县", + "city": "哈密市", + "country": "中国", + "lat": "43.260676527466494", + "lng": "94.70382567128537", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.01685415991987", + "lng": "87.3150016244744", + "province": "新疆维吾尔自治区" + }, + { + "area": "昌吉市", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.020126845938606", + "lng": "87.27386462195048", + "province": "新疆维吾尔自治区" + }, + { + "area": "阜康市", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.16313732134573", + "lng": "87.99367790506243", + "province": "新疆维吾尔自治区" + }, + { + "area": "呼图壁县", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.1976545961318", + "lng": "86.90514380673059", + "province": "新疆维吾尔自治区" + }, + { + "area": "玛纳斯县", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.31006285879989", + "lng": "86.2206434521992", + "province": "新疆维吾尔自治区" + }, + { + "area": "奇台县", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.026897819017556", + "lng": "89.6010808117238", + "province": "新疆维吾尔自治区" + }, + { + "area": "吉木萨尔县", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "44.005717795203225", + "lng": "89.1871228581408", + "province": "新疆维吾尔自治区" + }, + { + "area": "木垒哈萨克自治县", + "city": "昌吉回族自治州", + "country": "中国", + "lat": "43.840308302806726", + "lng": "90.29251473733397", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "博尔塔拉蒙古自治州", + "country": "中国", + "lat": "44.9121964134647", + "lng": "82.07291475827434", + "province": "新疆维吾尔自治区" + }, + { + "area": "博乐市", + "city": "博尔塔拉蒙古自治州", + "country": "中国", + "lat": "44.86000978463866", + "lng": "82.05797225459081", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿拉山口市", + "city": "博尔塔拉蒙古自治州", + "country": "中国", + "lat": "45.01109186720768", + "lng": "83.00750363609747", + "province": "新疆维吾尔自治区" + }, + { + "area": "精河县", + "city": "博尔塔拉蒙古自治州", + "country": "中国", + "lat": "44.60664594349165", + "lng": "82.90065531620479", + "province": "新疆维吾尔自治区" + }, + { + "area": "温泉县", + "city": "博尔塔拉蒙古自治州", + "country": "中国", + "lat": "44.97485663870472", + "lng": "81.03114554648644", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "41.7702873304504", + "lng": "86.1517138653326", + "province": "新疆维吾尔自治区" + }, + { + "area": "库尔勒市", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "41.7323732214122", + "lng": "86.18149430993829", + "province": "新疆维吾尔自治区" + }, + { + "area": "轮台县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "41.7838130005149", + "lng": "84.25821215205379", + "province": "新疆维吾尔自治区" + }, + { + "area": "尉犁县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "41.350122782053845", + "lng": "86.26603653639884", + "province": "新疆维吾尔自治区" + }, + { + "area": "若羌县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "39.028991037175174", + "lng": "88.17532444189617", + "province": "新疆维吾尔自治区" + }, + { + "area": "且末县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "38.15138769412976", + "lng": "85.53599038573108", + "province": "新疆维吾尔自治区" + }, + { + "area": "焉耆回族自治县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "42.06485085872785", + "lng": "86.58122202627663", + "province": "新疆维吾尔自治区" + }, + { + "area": "和静县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "42.32936503587904", + "lng": "86.39039822069184", + "province": "新疆维吾尔自治区" + }, + { + "area": "和硕县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "42.28806506242823", + "lng": "86.88368903725248", + "province": "新疆维吾尔自治区" + }, + { + "area": "博湖县", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "41.98643035682914", + "lng": "86.63846914998597", + "province": "新疆维吾尔自治区" + }, + { + "area": "库尔勒经济技术开发区", + "city": "巴音郭楞蒙古自治州", + "country": "中国", + "lat": "41.7323732214122", + "lng": "86.18149430993829", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.17502986007749", + "lng": "80.26694348473501", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿克苏市", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.17385992695259", + "lng": "80.26992675733364", + "province": "新疆维吾尔自治区" + }, + { + "area": "温宿县", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.28256724988662", + "lng": "80.24556435258084", + "province": "新疆维吾尔自治区" + }, + { + "area": "库车县", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.723447514832976", + "lng": "82.96845878728406", + "province": "新疆维吾尔自治区" + }, + { + "area": "沙雅县", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.227749329027176", + "lng": "82.78882373614826", + "province": "新疆维吾尔自治区" + }, + { + "area": "新和县", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.55399962847732", + "lng": "82.61582303052585", + "province": "新疆维吾尔自治区" + }, + { + "area": "拜城县", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.80070660198409", + "lng": "81.85851627203844", + "province": "新疆维吾尔自治区" + }, + { + "area": "乌什县", + "city": "阿克苏地区", + "country": "中国", + "lat": "41.22087110699948", + "lng": "79.23086899089708", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿瓦提县", + "city": "阿克苏地区", + "country": "中国", + "lat": "40.64935880291086", + "lng": "80.38184924590777", + "province": "新疆维吾尔自治区" + }, + { + "area": "柯坪县", + "city": "阿克苏地区", + "country": "中国", + "lat": "40.51405552096561", + "lng": "79.05321353561362", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "克孜勒苏柯尔克孜自治州", + "country": "中国", + "lat": "39.72047120487073", + "lng": "76.17430867621205", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿图什市", + "city": "克孜勒苏柯尔克孜自治州", + "country": "中国", + "lat": "39.72207912858917", + "lng": "76.17490640869839", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿克陶县", + "city": "克孜勒苏柯尔克孜自治州", + "country": "中国", + "lat": "39.15388851764215", + "lng": "75.95372526670941", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿合奇县", + "city": "克孜勒苏柯尔克孜自治州", + "country": "中国", + "lat": "40.94295822422187", + "lng": "78.4525392783902", + "province": "新疆维吾尔自治区" + }, + { + "area": "乌恰县", + "city": "克孜勒苏柯尔克孜自治州", + "country": "中国", + "lat": "39.72512359095323", + "lng": "75.26533363236989", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "喀什地区", + "country": "中国", + "lat": "39.47609674864479", + "lng": "75.99639055639747", + "province": "新疆维吾尔自治区" + }, + { + "area": "喀什市", + "city": "喀什地区", + "country": "中国", + "lat": "39.47364953291228", + "lng": "76.00031273791514", + "province": "新疆维吾尔自治区" + }, + { + "area": "疏附县", + "city": "喀什地区", + "country": "中国", + "lat": "39.381291555212066", + "lng": "75.8691686673607", + "province": "新疆维吾尔自治区" + }, + { + "area": "疏勒县", + "city": "喀什地区", + "country": "中国", + "lat": "39.40670910873236", + "lng": "76.05661439507521", + "province": "新疆维吾尔自治区" + }, + { + "area": "英吉沙县", + "city": "喀什地区", + "country": "中国", + "lat": "38.93567086352142", + "lng": "76.1820754256513", + "province": "新疆维吾尔自治区" + }, + { + "area": "泽普县", + "city": "喀什地区", + "country": "中国", + "lat": "38.19072551633278", + "lng": "77.26655942376085", + "province": "新疆维吾尔自治区" + }, + { + "area": "莎车县", + "city": "喀什地区", + "country": "中国", + "lat": "38.42015675241895", + "lng": "77.25243671368574", + "province": "新疆维吾尔自治区" + }, + { + "area": "叶城县", + "city": "喀什地区", + "country": "中国", + "lat": "37.88916684442745", + "lng": "77.42009762186518", + "province": "新疆维吾尔自治区" + }, + { + "area": "麦盖提县", + "city": "喀什地区", + "country": "中国", + "lat": "38.9111943155527", + "lng": "77.65882428741395", + "province": "新疆维吾尔自治区" + }, + { + "area": "岳普湖县", + "city": "喀什地区", + "country": "中国", + "lat": "39.23938733394502", + "lng": "76.7841477157399", + "province": "新疆维吾尔自治区" + }, + { + "area": "伽师县", + "city": "喀什地区", + "country": "中国", + "lat": "39.49385160586808", + "lng": "76.73038556825654", + "province": "新疆维吾尔自治区" + }, + { + "area": "巴楚县", + "city": "喀什地区", + "country": "中国", + "lat": "39.79078837708006", + "lng": "78.55570140180049", + "province": "新疆维吾尔自治区" + }, + { + "area": "塔什库尔干塔吉克自治县", + "city": "喀什地区", + "country": "中国", + "lat": "37.77904564076277", + "lng": "75.23080474483845", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "和田地区", + "country": "中国", + "lat": "37.12044646304192", + "lng": "79.9285070635119", + "province": "新疆维吾尔自治区" + }, + { + "area": "和田市", + "city": "和田地区", + "country": "中国", + "lat": "37.11833554446567", + "lng": "79.92021246975499", + "province": "新疆维吾尔自治区" + }, + { + "area": "和田县", + "city": "和田地区", + "country": "中国", + "lat": "37.11833554446567", + "lng": "79.92021246975499", + "province": "新疆维吾尔自治区" + }, + { + "area": "墨玉县", + "city": "和田地区", + "country": "中国", + "lat": "37.28299344690681", + "lng": "79.73547926535839", + "province": "新疆维吾尔自治区" + }, + { + "area": "皮山县", + "city": "和田地区", + "country": "中国", + "lat": "37.62724871437495", + "lng": "78.28987106240467", + "province": "新疆维吾尔自治区" + }, + { + "area": "洛浦县", + "city": "和田地区", + "country": "中国", + "lat": "37.079611030987515", + "lng": "80.19538761187944", + "province": "新疆维吾尔自治区" + }, + { + "area": "策勒县", + "city": "和田地区", + "country": "中国", + "lat": "37.00412235937149", + "lng": "80.81320126874158", + "province": "新疆维吾尔自治区" + }, + { + "area": "于田县", + "city": "和田地区", + "country": "中国", + "lat": "36.862954136110474", + "lng": "81.68378291474839", + "province": "新疆维吾尔自治区" + }, + { + "area": "民丰县", + "city": "和田地区", + "country": "中国", + "lat": "37.07025696823114", + "lng": "82.70271342758947", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.92272313749215", + "lng": "81.3305377475322", + "province": "新疆维吾尔自治区" + }, + { + "area": "伊宁市", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.915299436243146", + "lng": "81.28424240527833", + "province": "新疆维吾尔自治区" + }, + { + "area": "奎屯市", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "44.43205721000423", + "lng": "84.90944924168677", + "province": "新疆维吾尔自治区" + }, + { + "area": "霍尔果斯市", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "44.235308556092576", + "lng": "80.42712977242704", + "province": "新疆维吾尔自治区" + }, + { + "area": "伊宁县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.915299436243146", + "lng": "81.28424240527833", + "province": "新疆维吾尔自治区" + }, + { + "area": "察布查尔锡伯自治县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.846690330451665", + "lng": "81.1579245709068", + "province": "新疆维吾尔自治区" + }, + { + "area": "霍城县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "44.062249507398526", + "lng": "80.8852811232011", + "province": "新疆维吾尔自治区" + }, + { + "area": "巩留县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.48848555953649", + "lng": "82.23822560940913", + "province": "新疆维吾尔自治区" + }, + { + "area": "新源县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.43592700218544", + "lng": "83.26702230149687", + "province": "新疆维吾尔自治区" + }, + { + "area": "昭苏县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.163496741508915", + "lng": "81.13737753914653", + "province": "新疆维吾尔自治区" + }, + { + "area": "特克斯县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.224248213467376", + "lng": "81.84258724924386", + "province": "新疆维吾尔自治区" + }, + { + "area": "尼勒克县", + "city": "伊犁哈萨克自治州", + "country": "中国", + "lat": "43.80459483623821", + "lng": "82.51800753168041", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "塔城地区", + "country": "中国", + "lat": "46.750948254373434", + "lng": "82.9872355184064", + "province": "新疆维吾尔自治区" + }, + { + "area": "塔城市", + "city": "塔城地区", + "country": "中国", + "lat": "46.75434690418796", + "lng": "82.98553242099001", + "province": "新疆维吾尔自治区" + }, + { + "area": "乌苏市", + "city": "塔城地区", + "country": "中国", + "lat": "44.42404803445163", + "lng": "84.72008814696387", + "province": "新疆维吾尔自治区" + }, + { + "area": "额敏县", + "city": "塔城地区", + "country": "中国", + "lat": "46.53188486130856", + "lng": "83.63337445478265", + "province": "新疆维吾尔自治区" + }, + { + "area": "沙湾县", + "city": "塔城地区", + "country": "中国", + "lat": "44.33194946174084", + "lng": "85.62614468603468", + "province": "新疆维吾尔自治区" + }, + { + "area": "托里县", + "city": "塔城地区", + "country": "中国", + "lat": "45.94274280504971", + "lng": "83.6129094383153", + "province": "新疆维吾尔自治区" + }, + { + "area": "裕民县", + "city": "塔城地区", + "country": "中国", + "lat": "46.20745354692848", + "lng": "82.98943870250018", + "province": "新疆维吾尔自治区" + }, + { + "area": "和布克赛尔蒙古自治县", + "city": "塔城地区", + "country": "中国", + "lat": "46.79868511263733", + "lng": "85.73500888354788", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "阿勒泰地区", + "country": "中国", + "lat": "47.85072787010195", + "lng": "88.14792620373527", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿勒泰市", + "city": "阿勒泰地区", + "country": "中国", + "lat": "47.83275264847511", + "lng": "88.13922656402383", + "province": "新疆维吾尔自治区" + }, + { + "area": "布尔津县", + "city": "阿勒泰地区", + "country": "中国", + "lat": "47.70795172388758", + "lng": "86.88136017027281", + "province": "新疆维吾尔自治区" + }, + { + "area": "富蕴县", + "city": "阿勒泰地区", + "country": "中国", + "lat": "46.99995105305454", + "lng": "89.53195340805546", + "province": "新疆维吾尔自治区" + }, + { + "area": "福海县", + "city": "阿勒泰地区", + "country": "中国", + "lat": "47.118140737535164", + "lng": "87.4931572463246", + "province": "新疆维吾尔自治区" + }, + { + "area": "哈巴河县", + "city": "阿勒泰地区", + "country": "中国", + "lat": "48.066148902457634", + "lng": "86.42481768466426", + "province": "新疆维吾尔自治区" + }, + { + "area": "青河县", + "city": "阿勒泰地区", + "country": "中国", + "lat": "46.680193967050094", + "lng": "90.38944440719293", + "province": "新疆维吾尔自治区" + }, + { + "area": "吉木乃县", + "city": "阿勒泰地区", + "country": "中国", + "lat": "47.44901841325684", + "lng": "85.88081824070636", + "province": "新疆维吾尔自治区" + }, + { + "area": "", + "city": "自治区直辖县级行政区划", + "country": "中国", + "lat": "", + "lng": "", + "province": "新疆维吾尔自治区" + }, + { + "area": "石河子市", + "city": "自治区直辖县级行政区划", + "country": "中国", + "lat": "", + "lng": "", + "province": "新疆维吾尔自治区" + }, + { + "area": "阿拉尔市", + "city": "自治区直辖县级行政区划", + "country": "中国", + "lat": "", + "lng": "", + "province": "新疆维吾尔自治区" + }, + { + "area": "图木舒克市", + "city": "自治区直辖县级行政区划", + "country": "中国", + "lat": "", + "lng": "", + "province": "新疆维吾尔自治区" + }, + { + "area": "五家渠市", + "city": "自治区直辖县级行政区划", + "country": "中国", + "lat": "", + "lng": "", + "province": "新疆维吾尔自治区" + }, + { + "area": "铁门关市", + "city": "自治区直辖县级行政区划", + "country": "中国", + "lat": "29.55658239110198", + "lng": "106.58121087123573", + "province": "新疆维吾尔自治区" + } +] \ No newline at end of file diff --git a/plugins/ztools-weather/tools/inspect-lmdb.py b/plugins/ztools-weather/tools/inspect-lmdb.py new file mode 100644 index 000000000..75a60775f --- /dev/null +++ b/plugins/ztools-weather/tools/inspect-lmdb.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +"""从 ZTools 的 LMDB 文件里读出开发插件注册表,诊断插件为何被当成「无界面插件」。 + +用法:python3 tools/inspect-lmdb.py +""" +import json +import os +import re +import sys + +MDB = os.path.expanduser("~/.ztools/lmdb/device/data.mdb") + + +def find_value(raw, doc_id): + """LMDB 里是 {_id, data} 结构,data 后面紧跟 JSON。""" + key = ('"_id":"%s"' % doc_id).encode("utf-8") + i = raw.find(key) + if i < 0: + return None + seg = raw[i:i + 40000] + j = seg.find(b'"data":') + if j < 0: + return None + s = seg[j + 7:].decode("utf-8", "replace") + depth = 0 + end = None + instr = False + esc = False + for k, ch in enumerate(s): + if instr: + if esc: + esc = False + elif ch == "\\": + esc = True + elif ch == '"': + instr = False + continue + if ch == '"': + instr = True + elif ch in "[{": + depth += 1 + elif ch in "]}": + depth -= 1 + if depth == 0: + end = k + 1 + break + if end is None: + return None + try: + return json.loads(s[:end]) + except Exception as e: + print(" [warn] 解析失败:", e) + return s[:end] + + +def main(): + if not os.path.exists(MDB): + print("找不到", MDB) + return + raw = open(MDB, "rb").read() + data = find_value(raw, "ZTOOLS/dev-plugin-registry") + if data is None: + print("没找到 dev-plugin-registry") + return + if isinstance(data, str): + print("原始片段:", data[:2000]) + return + if isinstance(data, dict): + # 注册表可能是 {项目名: 配置} 的映射,也可能是数组 + items = [dict(v, _key=k) if isinstance(v, dict) else {"_key": k, "_raw": v} + for k, v in data.items()] + elif isinstance(data, list): + items = data + else: + print("未知结构:", str(data)[:500]) + return + print("注册了 %d 个开发项目" % len(items)) + for p in items: + if not isinstance(p, dict): + continue + if "weather" not in json.dumps(p, ensure_ascii=False).lower(): + continue + print("=" * 60) + print(json.dumps(p, ensure_ascii=False, indent=1)) + + +if __name__ == "__main__": + main() diff --git a/plugins/ztools-weather/tools/make-logo.py b/plugins/ztools-weather/tools/make-logo.py new file mode 100644 index 000000000..b299c3b15 --- /dev/null +++ b/plugins/ztools-weather/tools/make-logo.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +"""生成插件 logo.png(256×256):蓝青渐变圆角底 + 太阳与云。 + +纯本地生成,不依赖网络。需要 Pillow: + python3 tools/make-logo.py +""" +import math +import os + +from PIL import Image, ImageDraw + +S = 256 +OUT = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "logo.png")) + +img = Image.new("RGBA", (S, S), (0, 0, 0, 0)) + +# 圆角底 + 竖向渐变(晴空蓝 → 青) +grad = Image.new("RGBA", (S, S)) +gd = ImageDraw.Draw(grad) +for y in range(S): + t = y / (S - 1) + r = int(2 + 20 * t) + g = int(132 + 40 * t) + b = int(199 + 36 * t) + gd.line([(0, y), (S, y)], fill=(r, g, b, 255)) +mask = Image.new("L", (S, S), 0) +ImageDraw.Draw(mask).rounded_rectangle([0, 0, S - 1, S - 1], radius=58, fill=255) +img.paste(grad, (0, 0), mask) + +d = ImageDraw.Draw(img) + +# 太阳(右上,带柔光) +cx, cy, R = 168, 84, 34 +for i in range(10, 0, -1): + alpha = int(26 * (1 - i / 10.0)) + d.ellipse([cx - R - i, cy - R - i, cx + R + i, cy + R + i], fill=(255, 236, 160, alpha)) +d.ellipse([cx - R, cy - R, cx + R, cy + R], fill=(255, 224, 130, 255)) +for i in range(12): + ang = math.pi * 2 * i / 12.0 + r0, r1 = R + 12, R + 22 + d.line( + [ + (cx + r0 * math.cos(ang), cy + r0 * math.sin(ang)), + (cx + r1 * math.cos(ang), cy + r1 * math.sin(ang)), + ], + fill=(255, 240, 190, 210), + width=5, + ) + +# 云(下方,白色三圆 + 底座) +cloud = [(96, 168, 34), (140, 154, 42), (182, 170, 30)] +for (x, y, r) in cloud: + d.ellipse([x - r, y - r, x + r, y + r], fill=(255, 255, 255, 255)) +d.rounded_rectangle([62, 166, 212, 202], radius=18, fill=(255, 255, 255, 255)) + +# 两滴雨 +for (x, y) in ((110, 220), (152, 228), (190, 216)): + d.ellipse([x - 7, y - 11, x + 7, y + 11], fill=(180, 235, 255, 235)) + +img.save(OUT) +print("logo written:", OUT, img.size) diff --git a/plugins/ztools-weather/tools/ui-harness.html b/plugins/ztools-weather/tools/ui-harness.html new file mode 100644 index 000000000..43d4e4483 --- /dev/null +++ b/plugins/ztools-weather/tools/ui-harness.html @@ -0,0 +1,104 @@ + + + + + + 天气助手 + + + +
+
+ logo +
+ 天气助手 + Open-Meteo · 免密钥 +
+
+
+ + + + +
+
+ + + + + +
+
+
+
--°C
+
--
+
正在载入…
+
+
+
+
🌡️
+
+
+ + +
+
+
+ +
+
+
空气质量--
+
--
+
+
+
+
今日概况
+
+
+
+ +
+
未来 24 小时实心=温度 · 柱高=降水概率
+
+ +
+ +
+
未来 7 天
+
+ +
+
+ + + + + + + + + + +