前端开发

工作记录–中国省市3级联动json2015.10.16

吴阳 No Comments

转自:http://blog.sina.com.cn/s/blog_95153c710102viow.html 网上的json中国省市区好像都不全,不然就是格式不对,自己费了好大功夫,终于弄好了,分享给大家,有钓鱼岛的哦

var parts=[

{ “name”: “北京”, “city”:[{“name”:”北京”, “area”:[“东城区”,”西城区”,”崇文区”,”宣武区”,”朝阳区”,”丰台区”,”石景山区”,”海淀区”,”门头沟区”,”房山区”,”通州区”,”顺义区”,”昌平区”,”大兴区”,”平谷区”,”怀柔区”,”密云县”,”延庆县”]}]},

{ “name”: “天津”, “city”:[{“name”:”天津”, “area”:[“和平区”,”河东区”,”河西区”,”南开区”,”河北区”,”红桥区”,”塘沽区”,”汉沽区”,”大港区”,”东丽区”,”西青区”,”津南区”,”北辰区”,”武清区”,”宝坻区”,”宁河县”,”静海县”,”蓟 县”]}]},

{ “name”: “河北”, “city”:[

{“name”:”石家庄”, “area”:[“长安区”,”桥东区”,”桥西区”,”新华区”,”郊 区”,”井陉矿区”,”井陉县”,”正定县”,”栾城县”,”行唐县”,”灵寿县”,”高邑县”,”深泽县”,”赞皇县”,”无极县”,”平山县”,”元氏县”,”赵 县”,”辛集市”,”藁”,”晋州市”,”新乐市”,”鹿泉市”]},

{“name”:”唐山”, “area”:[“路南区”,”路北区”,”古冶区”,”开平区”,”新 区”,”丰润县”,”滦 县”,”滦南县”,”乐亭县”,”迁西县”,”玉田县”,”唐海县”,”遵化市”,”丰南市”,”迁安市”]},

{“name”:”秦皇岛”, “area”:[“海港区”,”山海关区”,”北戴河区”,”青龙满族自治县”,”昌黎县”,”抚宁县”,”卢龙县”]},

{“name”:”邯郸”, “area”:[“邯山区”,”丛台区”,”复兴区”,”峰峰矿区”,”邯郸县”,”临漳县”,”成安县”,”大名县”,”涉 县”,”磁 县”,”肥乡县”,”永年县”,”邱 县”,”鸡泽县”,”广平县”,”馆陶县”,”魏 县”,”曲周县”,”武安市”]},

{“name”:”邢台”, “area”:[“桥东区”,”桥西区”,”邢台县”,”临城县”,”内丘县”,”柏乡县”,”隆尧县”,”任 县”,”南和县”,”宁晋县”,”巨鹿县”,”新河县”,”广宗县”,”平乡县”,”威 县”,”清河县”,”临西县”,”南宫市”,”沙河市”]},

{“name”:”保定”, “area”:[“新市区”,”北市区”,”南市区”,”满城县”,”清苑县”,”涞水县”,”阜平县”,”徐水县”,”定兴县”,”唐 县”,”高阳县”,”容城县”,”涞源县”,”望都县”,”安新县”,”易 县”,”曲阳县”,”蠡 县”,”顺平县”,”博野”,”雄县”,”涿州市”,”定州市”,”安国市”,”高碑店市”]},

{“name”:”张家口”, “area”:[“桥东区”,”桥西区”,”宣化区”,”下花园区”,”宣化县”,”张北县”,”康保县”,”沽源县”,”尚义县”,”蔚 县”,”阳原县”,”怀安县”,”万全县”,”怀来县”,”涿鹿县”,”赤城县”,”崇礼县”]},

{“name”:”承德”, “area”:[“双桥区”,”双滦区”,”鹰手营子矿区”,”承德县”,”兴隆县”,”平泉县”,”滦平县”,”隆化县”,”丰宁满族自治县”,”宽城满族自治县”,”围场满族蒙古族自治县”]},

{“name”:”沧州”, “area”:[“新华区”,”运河区”,”沧 县”,”青 县”,”东光县”,”海兴县”,”盐山县”,”肃宁县”,”南皮县”,”吴桥县”,”献 县”,”孟村回族自治县”,”泊头市”,”任丘市”,”黄骅市”,”河间市”]},

{“name”:”廊坊”, “area”:[“安次区”,”固安县”,”永清县”,”香河县”,”大城县”,”文安县”,”大厂回族自治县”,”霸州市”,”三河市”]},

{“name”:”衡水”, “area”:[“桃城区”,”枣强县”,”武邑县”,”武强县”,”饶阳县”,”安平县”,”故城县”,”景 县”,”阜城县”,”冀州市”,”深州市”]}

]},

{ “name”: “山西”, “city”:[

{“name”:”太原”, “area”:[“小店区”,”迎泽区”,”杏花岭区”,”尖草坪区”,”万柏林区”,”晋源区”,”清徐县”,”阳曲县”,”娄烦县”,”古交市”]},

{“name”:”大同”, “area”:[“城 区”,”矿 区”,”南郊区”,”新荣区”,”阳高县”,”天镇县”,”广灵县”,”灵丘县”,”浑源县”,”左云县”,”大同县”]},

{“name”:”阳泉”, “area”:[“城 区”,”矿 区”,”郊 区”,”平定县”,”盂 县”]},

{“name”:”长治”, “area”:[“城 区”,”郊 区”,”长治县”,”襄垣县”,”屯留县”,”平顺县”,”黎城县”,”壶关县”,”长子县”,”武乡县”,”沁 县”,”沁源县”,”潞城市”]},

{“name”:”晋城”, “area”:[“城 区”,”沁水县”,”阳城县”,”陵川县”,”泽州县”,”高平市”]},

{“name”:”朔州”, “area”:[“朔城区”,”平鲁区”,”山阴县”,”应 县”,”右玉县”,”怀仁县”]},

{“name”:”忻州”, “area”:[“忻府区”,”原平市”,”定襄县”,”五台县”,”代 县”,”繁峙县”,”宁武县”,”静乐县”,”神池县”,”五寨县”,”岢岚县”,”河曲县”,”保德县”,”偏关县”]},

{“name”:”吕梁”, “area”:[“离石区”,”孝义市”,”汾阳市”,”文水县”,”交城县”,”兴 县”,”临 县”,”柳林县”,”石楼县”,”岚 县”,”方山县”,”中阳县”,”交口县”]},

{“name”:”晋中”, “area”:[“榆次市”,”介休市”,”榆社县”,”左权县”,”和顺县”,”昔阳县”,”寿阳县”,”太谷县”,”祁 县”,”平遥县”,”灵石县”]},

{“name”:”临汾”, “area”:[“临汾市”,”侯马市”,”霍州市”,”曲沃县”,”翼城县”,”襄汾县”,”洪洞县”,”古 县”,”安泽县”,”浮山县”,”吉 县”,”乡宁县”,”蒲 县”,”大宁县”,”永和县”,”隰 县”,”汾西县”]},

{“name”:”运城”, “area”:[“运城市”,”永济市”,”河津市”,”芮城县”,”临猗县”,”万荣县”,”新绛县”,”稷山县”,”闻喜县”,”夏 县”,”绛 县”,”平陆县”,”垣曲县”]}

]},

{ “name”: “内蒙古”, “city”:[

{“name”:”呼和浩特”, “area”:[“新城区”,”回民区”,”玉泉区”,”郊 区”,”土默特左旗”,”托克托县”,”和林格尔县”,”清水河县”,”武川县”]},

{“name”:”包头”, “area”:[“东河区”,”昆都伦区”,”青山区”,”石拐矿区”,”白云矿区”,”郊 区”,”土默特右旗”,”固阳县”,”达尔罕茂明安联合旗”]},

{“name”:”乌海”, “area”:[“海勃湾区”,”海南区”,”乌达区”]},

{“name”:”赤峰”, “area”:[“红山区”,”元宝山区”,”松山区”,”阿鲁科尔沁旗”,”巴林左旗”,”巴林右旗”,”林西县”,”克什克腾旗”,”翁牛特旗”,”喀喇沁旗”,”宁城县”,”敖汉旗”]},

{“name”:”呼伦贝尔”, “area”:[“海拉尔市”,”满洲里市”,”扎兰屯市”,”牙克石市”,”根河市”,”额尔古纳市”,”阿荣旗”,”莫力达瓦达斡尔族自治旗”,”鄂伦春自治旗”,”鄂温克族自治旗”,”新巴尔虎右旗”,”新巴尔虎左旗”,”陈巴尔虎旗”]},

{“name”:”兴安盟”, “area”:[“乌兰浩特市”,”阿尔山市”,”科尔沁右翼前旗”,”科尔沁右翼中旗”,”扎赉特旗”,”突泉县”]},

{“name”:”通辽”, “area”:[“科尔沁区”,”霍林郭勒市”,”科尔沁左翼中旗”,”科尔沁左翼后旗”,”开鲁县”,”库伦旗”,”奈曼旗”,”扎鲁特旗”]},

{“name”:”锡林郭勒盟”, “area”:[“二连浩特市”,”锡林浩特市”,”阿巴嘎旗”,”苏尼特左旗”,”苏尼特右旗”,”东乌珠穆沁旗”,”西乌珠穆沁旗”,”太仆寺旗”,”镶黄旗”,”正镶白旗”,”正蓝旗”,”多伦县”]},

{“name”:”乌兰察布盟”, “area”:[“集宁市”,”丰镇市”,”卓资县”,”化德县”,”商都县”,”兴和县”,”凉城县”,”察哈尔右翼前旗”,”察哈尔右翼中旗”,”察哈尔右翼后旗”,”四子王旗”]},

{“name”:”伊克昭盟”, “area”:[“东胜市”,”达拉特旗”,”准格尔旗”,”鄂托克前旗”,”鄂托克旗”,”杭锦旗”,”乌审旗”,”伊金霍洛旗”]},

{“name”:”巴彦淖尔盟”, “area”:[“临河市”,”五原县”,”磴口县”,”乌拉特前旗”,”乌拉特中旗”,”乌拉特后旗”,”杭锦后旗”]},

{“name”:”阿拉善盟”, “area”:[“阿拉善左旗”,”阿拉善右旗”,”额济纳旗”]}

]},

{ “name”: “辽宁”, “city”:[

{“name”:”沈阳”, “area”:[“沈河区”,”皇姑区”,”和平区”,”大东区”,”铁西区”,”苏家屯区”,”东陵区”,”于洪区”,”新民市”,”法库县”,”辽中县”,”康平县”,”新城子区”,”其他”]},

{“name”:”大连”, “area”:[“西岗区”,”中山区”,”沙河口区”,”甘井子区”,”旅顺口区”,”金州区”,”瓦房店市”,”普兰店市”,”庄河市”,”长海县”,”其他”]},

{“name”:”鞍山”, “area”:[“铁东区”,”铁西区”,”立山区”,”千山区”,”海城市”,”台安县”,”岫岩满族自治县”,”其他”]},

{“name”:”抚顺”, “area”:[“顺城区”,”新抚区”,”东洲区”,”望花区”,”抚顺县”,”清原满族自治县”,”新宾满族自治县”,”其他”]},

{“name”:”本溪”, “area”:[“平山区”,”明山区”,”溪湖区”,”南芬区”,”本溪满族自治县”,”桓仁满族自治县”,”其他”]},

{“name”:”丹东”, “area”:[“振兴区”,”元宝区”,”振安区”,”东港市”,”凤城市”,”宽甸满族自治县”,”其他”]},

{“name”:”锦州”, “area”:[“太和区”,”古塔区”,”凌河区”,”凌海市”,”黑山县”,”义县”,”北宁市”,”其他”]},

{“name”:”营口”, “area”:[“站前区”,”西市区”,”鲅鱼圈区”,”老边区”,”大石桥市”,”盖州市”,”其他”]},

{“name”:”阜新”, “area”:[“海州区”,”新邱区”,”太平区”,”清河门区”,”细河区”,”彰武县”,”阜新蒙古族自治县”,”其他”]},

{“name”:”辽阳”, “area”:[“白塔区”,”文圣区”,”宏伟区”,”太子河区”,”弓长岭区”,”灯塔市”,”辽阳县”,”其他”]},

{“name”:”盘锦”, “area”:[“双台子区”,”兴隆台区”,”盘山县”,”大洼县”,”其他”]},

{“name”:”铁岭”, “area”:[“银州区”,”清河区”,”调兵山市”,”开原市”,”铁岭县”,”昌图县”,”西丰县”,”其他”]},

{“name”:”朝阳”, “area”:[“双塔区”,”龙城区”,”凌源市”,”北票市”,”朝阳县”,”建平县”,”喀喇沁左翼蒙古族自治县”,”其他”]},

{“name”:”葫芦岛”, “area”:[“龙港区”,”南票区”,”连山区”,”兴城市”,”绥中县”,”建昌县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “吉林”, “city”:[

{“name”:”长春”, “area”:[“朝阳区”,”宽城区”,”二道区”,”南关区”,”绿园区”,”双阳区”,”九台市”,”榆树市”,”德惠市”,”农安县”,”其他”]},

{“name”:”吉林”, “area”:[“船营区”,”昌邑区”,”龙潭区”,”丰满区”,”舒兰市”,”桦甸市”,”蛟河市”,”磐石市”,”永吉县”,”其他”]},

{“name”:”四平”, “area”:[“铁西区”,”铁东区”,”公主岭市”,”双辽市”,”梨树县”,”伊通满族自治县”,”其他”]},

{“name”:”辽源”, “area”:[“龙山区”,”西安区”,”东辽县”,”东丰县”,”其他”]},

{“name”:”通化”, “area”:[“东昌区”,”二道江区”,”梅河口市”,”集安市”,”通化县”,”辉南县”,”柳河县”,”其他”]},

{“name”:”白山”, “area”:[“八道江区”,”江源区”,”临江市”,”靖宇县”,”抚松县”,”长白朝鲜族自治县”,”其他”]},

{“name”:”松原”, “area”:[“宁江区”,”乾安县”,”长岭县”,”扶余县”,”前郭尔罗斯蒙古族自治县”,”其他”]},

{“name”:”白城”, “area”:[“洮北区”,”大安市”,”洮南市”,”镇赉县”,”通榆县”,”其他”]},

{“name”:”延边朝鲜族自治州”, “area”:[“延吉市”,”图们市”,”敦化市”,”龙井市”,”珲春市”,”和龙市”,”安图县”,”汪清县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “黑龙江”, “city”:[

{“name”:”哈尔滨”, “area”:[“松北区”,”道里区”,”南岗区”,”平房区”,”香坊区”,”道外区”,”呼兰区”,”阿城区”,”双城市”,”尚志市”,”五常市”,”宾县”,”方正县”,”通河县”,”巴彦县”,”延寿县”,”木兰县”,”依兰县”,”其他”]},

{“name”:”齐齐哈尔”, “area”:[“龙沙区”,”昂昂溪区”,”铁锋区”,”建华区”,”富拉尔基区”,”碾子山区”,”梅里斯达斡尔族区”,”讷河市”,”富裕县”,”拜泉县”,”甘南县”,”依安县”,”克山县”,”泰来县”,”克东县”,”龙江县”,”其他”]},

{“name”:”鹤岗”, “area”:[“兴山区”,”工农区”,”南山区”,”兴安区”,”向阳区”,”东山区”,”萝北县”,”绥滨县”,”其他”]},

{“name”:”双鸭山”, “area”:[“尖山区”,”岭东区”,”四方台区”,”宝山区”,”集贤县”,”宝清县”,”友谊县”,”饶河县”,”其他”]},

{“name”:”鸡西”, “area”:[“鸡冠区”,”恒山区”,”城子河区”,”滴道区”,”梨树区”,”麻山区”,”密山市”,”虎林市”,”鸡东县”,”其他”]},

{“name”:”大庆”, “area”:[“萨尔图区”,”红岗区”,”龙凤区”,”让胡路区”,”大同区”,”林甸县”,”肇州县”,”肇源县”,”杜尔伯特蒙古族自治县”,”其他”]},

{“name”:”伊春”, “area”:[“伊春区”,”带岭区”,”南岔区”,”金山屯区”,”西林区”,”美溪区”,”乌马河区”,”翠峦区”,”友好区”,”上甘岭区”,”五营区”,”红星区”,”新青区”,”汤旺河区”,”乌伊岭区”,”铁力市”,”嘉荫县”,”其他”]},

{“name”:”牡丹江”, “area”:[“爱民区”,”东安区”,”阳明区”,”西安区”,”绥芬河市”,”宁安市”,”海林市”,”穆棱市”,”林口县”,”东宁县”,”其他”]},

{“name”:”佳木斯”, “area”:[“向阳区”,”前进区”,”东风区”,”郊区”,”同江市”,”富锦市”,”桦川县”,”抚远县”,”桦南县”,”汤原县”,”其他”]},

{“name”:”七台河”, “area”:[“桃山区”,”新兴区”,”茄子河区”,”勃利县”,”其他”]},

{“name”:”黑河”, “area”:[“爱辉区”,”北安市”,”五大连池市”,”逊克县”,”嫩江县”,”孙吴县”,”其他”]},

{“name”:”绥化”, “area”:[“北林区”,”安达市”,”肇东市”,”海伦市”,”绥棱县”,”兰西县”,”明水县”,”青冈县”,”庆安县”,”望奎县”,”其他”]},

{“name”:”大兴安岭地区”, “area”:[“呼玛县”,”塔河县”,”漠河县”,”大兴安岭辖区”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “上海”, “city”:[

{“name”:”上海”, “area”:[“黄浦区”,”卢湾区”,”徐汇区”,”长宁区”,”静安区”,”普陀区”,”闸北区”,”虹口区”,”杨浦区”,”宝山区”,”闵行区”,”嘉定区”,”松江区”,”金山区”,”青浦区”,”南汇区”,”奉贤区”,”浦东新区”,”崇明县”,”其他”]}

]},

{ “name”: “江苏”, “city”:[

{“name”:”南京”, “area”:[“玄武区”,”白下区”,”秦淮区”,”建邺区”,”鼓楼区”,”下关区”,”栖霞区”,”雨花台区”,”浦口区”,”江宁区”,”六合区”,”溧水县”,”高淳县”,”其他”]},

{“name”:”苏州”, “area”:[“金阊区”,”平江区”,”沧浪区”,”虎丘区”,”吴中区”,”相城区”,”常熟市”,”张家港市”,”昆山市”,”吴江市”,”太仓市”,”其他”]},

{“name”:”无锡”, “area”:[“崇安区”,”南长区”,”北塘区”,”滨湖区”,”锡山区”,”惠山区”,”江阴市”,”宜兴市”,”其他”]},

{“name”:”常州”, “area”:[“钟楼区”,”天宁区”,”戚墅堰区”,”新北区”,”武进区”,”金坛市”,”溧阳市”,”其他”]},

{“name”:”镇江”, “area”:[“京口区”,”润州区”,”丹徒区”,”丹阳市”,”扬中市”,”句容市”,”其他”]},

{“name”:”南通”, “area”:[“崇川区”,”港闸区”,”通州市”,”如皋市”,”海门市”,”启东市”,”海安县”,”如东县”,”其他”]},

{“name”:”泰州”, “area”:[“海陵区”,”高港区”,”姜堰市”,”泰兴市”,”靖江市”,”兴化市”,”其他”]},

{“name”:”扬州”, “area”:[“广陵区”,”维扬区”,”邗江区”,”江都市”,”仪征市”,”高邮市”,”宝应县”,”其他”]},

{“name”:”盐城”, “area”:[“亭湖区”,”盐都区”,”大丰市”,”东台市”,”建湖县”,”射阳县”,”阜宁县”,”滨海县”,”响水县”,”其他”]},

{“name”:”连云港”, “area”:[“新浦区”,”海州区”,”连云区”,”东海县”,”灌云县”,”赣榆县”,”灌南县”,”其他”]},

{“name”:”徐州”, “area”:[“云龙区”,”鼓楼区”,”九里区”,”泉山区”,”贾汪区”,”邳州市”,”新沂市”,”铜山县”,”睢宁县”,”沛县”,”丰县”,”其他”]},

{“name”:”淮安”, “area”:[“清河区”,”清浦区”,”楚州区”,”淮阴区”,”涟水县”,”洪泽县”,”金湖县”,”盱眙县”,”其他”]},

{“name”:”宿迁”, “area”:[“宿城区”,”宿豫区”,”沭阳县”,”泗阳县”,”泗洪县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “浙江”, “city”:[

{“name”:”杭州”, “area”:[“拱墅区”,”西湖区”,”上城区”,”下城区”,”江干区”,”滨江区”,”余杭区”,”萧山区”,”建德市”,”富阳市”,”临安市”,”桐庐县”,”淳安县”,”其他”]},

{“name”:”宁波”, “area”:[“海曙区”,”江东区”,”江北区”,”镇海区”,”北仑区”,”鄞州区”,”余姚市”,”慈溪市”,”奉化市”,”宁海县”,”象山县”,”其他”]},

{“name”:”温州”, “area”:[“鹿城区”,”龙湾区”,”瓯海区”,”瑞安市”,”乐清市”,”永嘉县”,”洞头县”,”平阳县”,”苍南县”,”文成县”,”泰顺县”,”其他”]},

{“name”:”嘉兴”, “area”:[“秀城区”,”秀洲区”,”海宁市”,”平湖市”,”桐乡市”,”嘉善县”,”海盐县”,”其他”]},

{“name”:”湖州”, “area”:[“吴兴区”,”南浔区”,”长兴县”,”德清县”,”安吉县”,”其他”]},

{“name”:”绍兴”, “area”:[“越城区”,”诸暨市”,”上虞市”,”嵊州市”,”绍兴县”,”新昌县”,”其他”]},

{“name”:”金华”, “area”:[“婺城区”,”金东区”,”兰溪市”,”义乌市”,”东阳市”,”永康市”,”武义县”,”浦江县”,”磐安县”,”其他”]},

{“name”:”衢州”, “area”:[“柯城区”,”衢江区”,”江山市”,”龙游县”,”常山县”,”开化县”,”其他”]},

{“name”:”舟山”, “area”:[“定海区”,”普陀区”,”岱山县”,”嵊泗县”,”其他”]},

{“name”:”台州”, “area”:[“椒江区”,”黄岩区”,”路桥区”,”临海市”,”温岭市”,”玉环县”,”天台县”,”仙居县”,”三门县”,”其他”]},

{“name”:”丽水”, “area”:[“莲都区”,”龙泉市”,”缙云县”,”青田县”,”云和县”,”遂昌县”,”松阳县”,”庆元县”,”景宁畲族自治县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “安徽”, “city”:[

{“name”:”合肥”, “area”:[“庐阳区”,”瑶海区”,”蜀山区”,”包河区”,”长丰县”,”肥东县”,”肥西县”,”其他”]},

{“name”:”芜湖”, “area”:[“镜湖区”,”弋江区”,”鸠江区”,”三山区”,”芜湖县”,”南陵县”,”繁昌县”,”其他”]},

{“name”:”蚌埠”, “area”:[“蚌山区”,”龙子湖区”,”禹会区”,”淮上区”,”怀远县”,”固镇县”,”五河县”,”其他”]},

{“name”:”淮南”, “area”:[“田家庵区”,”大通区”,”谢家集区”,”八公山区”,”潘集区”,”凤台县”,”其他”]},

{“name”:”马鞍山”, “area”:[“雨山区”,”花山区”,”金家庄区”,”当涂县”,”其他”]},

{“name”:”淮北”, “area”:[“相山区”,”杜集区”,”烈山区”,”濉溪县”,”其他”]},

{“name”:”铜陵”, “area”:[“铜官山区”,”狮子山区”,”郊区”,”铜陵县”,”其他”]},

{“name”:”安庆”, “area”:[“迎江区”,”大观区”,”宜秀区”,”桐城市”,”宿松县”,”枞阳县”,”太湖县”,”怀宁县”,”岳西县”,”望江县”,”潜山县”,”其他”]},

{“name”:”黄山”, “area”:[“屯溪区”,”黄山区”,”徽州区”,”休宁县”,”歙县”,”祁门县”,”黟县”,”其他”]},

{“name”:”滁州”, “area”:[“琅琊区”,”南谯区”,”天长市”,”明光市”,”全椒县”,”来安县”,”定远县”,”凤阳县”,”其他”]},

{“name”:”阜阳”, “area”:[“颍州区”,”颍东区”,”颍泉区”,”界首市”,”临泉县”,”颍上县”,”阜南县”,”太和县”,”其他”]},

{“name”:”宿州”, “area”:[“埇桥区”,”萧县”,”泗县”,”砀山县”,”灵璧县”,”其他”]},

{“name”:”巢湖”, “area”:[“居巢区”,”含山县”,”无为县”,”庐江县”,”和县”,”其他”]},

{“name”:”六安”, “area”:[“金安区”,”裕安区”,”寿县”,”霍山县”,”霍邱县”,”舒城县”,”金寨县”,”其他”]},

{“name”:”亳州”, “area”:[“谯城区”,”利辛县”,”涡阳县”,”蒙城县”,”其他”]},

{“name”:”池州”, “area”:[“贵池区”,”东至县”,”石台县”,”青阳县”,”其他”]},

{“name”:”宣城”, “area”:[“宣州区”,”宁国市”,”广德县”,”郎溪县”,”泾县”,”旌德县”,”绩溪县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “福建”, “city”:[

{“name”:”福州”, “area”:[“鼓楼区”,”台江区”,”仓山区”,”马尾区”,”晋安区”,”福清市”,”长乐市”,”闽侯县”,”闽清县”,”永泰县”,”连江县”,”罗源县”,”平潭县”,”其他”]},

{“name”:”厦门”, “area”:[“思明区”,”海沧区”,”湖里区”,”集美区”,”同安区”,”翔安区”,”其他”]},

{“name”:”莆田”, “area”:[“城厢区”,”涵江区”,”荔城区”,”秀屿区”,”仙游县”,”其他”]},

{“name”:”三明”, “area”:[“梅列区”,”三元区”,”永安市”,”明溪县”,”将乐县”,”大田县”,”宁化县”,”建宁县”,”沙县”,”尤溪县”,”清流县”,”泰宁县”,”其他”]},

{“name”:”泉州”, “area”:[“鲤城区”,”丰泽区”,”洛江区”,”泉港区”,”石狮市”,”晋江市”,”南安市”,”惠安县”,”永春县”,”安溪县”,”德化县”,”金门县”,”其他”]},

{“name”:”漳州”, “area”:[“芗城区”,”龙文区”,”龙海市”,”平和县”,”南靖县”,”诏安县”,”漳浦县”,”华安县”,”东山县”,”长泰县”,”云霄县”,”其他”]},

{“name”:”南平”, “area”:[“延平区”,”建瓯市”,”邵武市”,”武夷山市”,”建阳市”,”松溪县”,”光泽县”,”顺昌县”,”浦城县”,”政和县”,”其他”]},

{“name”:”龙岩”, “area”:[“新罗区”,”漳平市”,”长汀县”,”武平县”,”上杭县”,”永定县”,”连城县”,”其他”]},

{“name”:”宁德”, “area”:[“蕉城区”,”福安市”,”福鼎市”,”寿宁县”,”霞浦县”,”柘荣县”,”屏南县”,”古田县”,”周宁县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “江西”, “city”:[

{“name”:”南昌”, “area”:[“东湖区”,”西湖区”,”青云谱区”,”湾里区”,”青山湖区”,”新建县”,”南昌县”,”进贤县”,”安义县”,”其他”]},

{“name”:”景德镇”, “area”:[“珠山区”,”昌江区”,”乐平市”,”浮梁县”,”其他”]},

{“name”:”萍乡”, “area”:[“安源区”,”湘东区”,”莲花县”,”上栗县”,”芦溪县”,”其他”]},

{“name”:”九江”, “area”:[“浔阳区”,”庐山区”,”瑞昌市”,”九江县”,”星子县”,”武宁县”,”彭泽县”,”永修县”,”修水县”,”湖口县”,”德安县”,”都昌县”,”其他”]},

{“name”:”新余”, “area”:[“渝水区”,”分宜县”,”其他”]},

{“name”:”鹰潭”, “area”:[“月湖区”,”贵溪市”,”余江县”,”其他”]},

{“name”:”赣州”, “area”:[“章贡区”,”瑞金市”,”南康市”,”石城县”,”安远县”,”赣县”,”宁都县”,”寻乌县”,”兴国县”,”定南县”,”上犹县”,”于都县”,”龙南县”,”崇义县”,”信丰县”,”全南县”,”大余县”,”会昌县”,”其他”]},

{“name”:”吉安”, “area”:[“吉州区”,”青原区”,”井冈山市”,”吉安县”,”永丰县”,”永新县”,”新干县”,”泰和县”,”峡江县”,”遂川县”,”安福县”,”吉水县”,”万安县”,”其他”]},

{“name”:”宜春”, “area”:[“袁州区”,”丰城市”,”樟树市”,”高安市”,”铜鼓县”,”靖安县”,”宜丰县”,”奉新县”,”万载县”,”上高县”,”其他”]},

{“name”:”抚州”, “area”:[“临川区”,”南丰县”,”乐安县”,”金溪县”,”南城县”,”东乡县”,”资溪县”,”宜黄县”,”广昌县”,”黎川县”,”崇仁县”,”其他”]},

{“name”:”上饶”, “area”:[“信州区”,”德兴市”,”上饶县”,”广丰县”,”鄱阳县”,”婺源县”,”铅山县”,”余干县”,”横峰县”,”弋阳县”,”玉山县”,”万年县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “山东”, “city”:[

{“name”:”济南”, “area”:[“市中区”,”历下区”,”天桥区”,”槐荫区”,”历城区”,”长清区”,”章丘市”,”平阴县”,”济阳县”,”商河县”,”其他”]},

{“name”:”青岛”, “area”:[“市南区”,”市北区”,”城阳区”,”四方区”,”李沧区”,”黄岛区”,”崂山区”,”胶南市”,”胶州市”,”平度市”,”莱西市”,”即墨市”,”其他”]},

{“name”:”淄博”, “area”:[“张店区”,”临淄区”,”淄川区”,”博山区”,”周村区”,”桓台县”,”高青县”,”沂源县”,”其他”]},

{“name”:”枣庄”, “area”:[“市中区”,”山亭区”,”峄城区”,”台儿庄区”,”薛城区”,”滕州市”,”其他”]},

{“name”:”东营”, “area”:[“东营区”,”河口区”,”垦利县”,”广饶县”,”利津县”,”其他”]},

{“name”:”烟台”, “area”:[“芝罘区”,”福山区”,”牟平区”,”莱山区”,”龙口市”,”莱阳市”,”莱州市”,”招远市”,”蓬莱市”,”栖霞市”,”海阳市”,”长岛县”,”其他”]},

{“name”:”潍坊”, “area”:[“潍城区”,”寒亭区”,”坊子区”,”奎文区”,”青州市”,”诸城市”,”寿光市”,”安丘市”,”高密市”,”昌邑市”,”昌乐县”,”临朐县”,”其他”]},

{“name”:”济宁”, “area”:[“市中区”,”任城区”,”曲阜市”,”兖州市”,”邹城市”,”鱼台县”,”金乡县”,”嘉祥县”,”微山县”,”汶上县”,”泗水县”,”梁山县”,”其他”]},

{“name”:”泰安”, “area”:[“泰山区”,”岱岳区”,”新泰市”,”肥城市”,”宁阳县”,”东平县”,”其他”]},

{“name”:”威海”, “area”:[“环翠区”,”乳山市”,”文登市”,”荣成市”,”其他”]},

{“name”:”日照”, “area”:[“东港区”,”岚山区”,”五莲县”,”莒县”,”其他”]},

{“name”:”莱芜”, “area”:[“莱城区”,”钢城区”,”其他”]},

{“name”:”临沂”, “area”:[“兰山区”,”罗庄区”,”河东区”,”沂南县”,”郯城县”,”沂水县”,”苍山县”,”费县”,”平邑县”,”莒南县”,”蒙阴县”,”临沭县”,”其他”]},

{“name”:”德州”, “area”:[“德城区”,”乐陵市”,”禹城市”,”陵县”,”宁津县”,”齐河县”,”武城县”,”庆云县”,”平原县”,”夏津县”,”临邑县”,”其他”]},

{“name”:”聊城”, “area”:[“东昌府区”,”临清市”,”高唐县”,”阳谷县”,”茌平县”,”莘县”,”东阿县”,”冠县”,”其他”]},

{“name”:”滨州”, “area”:[“滨城区”,”邹平县”,”沾化县”,”惠民县”,”博兴县”,”阳信县”,”无棣县”,”其他”]},

{“name”:”菏泽”, “area”:[“牡丹区”,”鄄城县”,”单县”,”郓城县”,”曹县”,”定陶县”,”巨野县”,”东明县”,”成武县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “河南”, “city”:[

{“name”:”郑州”, “area”:[“中原区”,”金水区”,”二七区”,”管城回族区”,”上街区”,”惠济区”,”巩义市”,”新郑市”,”新密市”,”登封市”,”荥阳市”,”中牟县”,”其他”]},

{“name”:”开封”, “area”:[“鼓楼区”,”龙亭区”,”顺河回族区”,”禹王台区”,”金明区”,”开封县”,”尉氏县”,”兰考县”,”杞县”,”通许县”,”其他”]},

{“name”:”洛阳”, “area”:[“西工区”,”老城区”,”涧西区”,”瀍河回族区”,”洛龙区”,”吉利区”,”偃师市”,”孟津县”,”汝阳县”,”伊川县”,”洛宁县”,”嵩县”,”宜阳县”,”新安县”,”栾川县”,”其他”]},

{“name”:”平顶山”, “area”:[“新华区”,”卫东区”,”湛河区”,”石龙区”,”汝州市”,”舞钢市”,”宝丰县”,”叶县”,”郏县”,”鲁山县”,”其他”]},

{“name”:”安阳”, “area”:[“北关区”,”文峰区”,”殷都区”,”龙安区”,”林州市”,”安阳县”,”滑县”,”内黄县”,”汤阴县”,”其他”]},

{“name”:”鹤壁”, “area”:[“淇滨区”,”山城区”,”鹤山区”,”浚县”,”淇县”,”其他”]},

{“name”:”新乡”, “area”:[“卫滨区”,”红旗区”,”凤泉区”,”牧野区”,”卫辉市”,”辉县市”,”新乡县”,”获嘉县”,”原阳县”,”长垣县”,”封丘县”,”延津县”,”其他”]},

{“name”:”焦作”, “area”:[“解放区”,”中站区”,”马村区”,”山阳区”,”沁阳市”,”孟州市”,”修武县”,”温县”,”武陟县”,”博爱县”,”其他”]},

{“name”:”濮阳”, “area”:[“华龙区”,”濮阳县”,”南乐县”,”台前县”,”清丰县”,”范县”,”其他”]},

{“name”:”许昌”, “area”:[“魏都区”,”禹州市”,”长葛市”,”许昌县”,”鄢陵县”,”襄城县”,”其他”]},

{“name”:”漯河”, “area”:[“源汇区”,”郾城区”,”召陵区”,”临颍县”,”舞阳县”,”其他”]},

{“name”:”三门峡”, “area”:[“湖滨区”,”义马市”,”灵宝市”,”渑池县”,”卢氏县”,”陕县”,”其他”]},

{“name”:”南阳”, “area”:[“卧龙区”,”宛城区”,”邓州市”,”桐柏县”,”方城县”,”淅川县”,”镇平县”,”唐河县”,”南召县”,”内乡县”,”新野县”,”社旗县”,”西峡县”,”其他”]},

{“name”:”商丘”, “area”:[“梁园区”,”睢阳区”,”永城市”,”宁陵县”,”虞城县”,”民权县”,”夏邑县”,”柘城县”,”睢县”,”其他”]},

{“name”:”信阳”, “area”:[“浉河区”,”平桥区”,”潢川县”,”淮滨县”,”息县”,”新县”,”商城县”,”固始县”,”罗山县”,”光山县”,”其他”]},

{“name”:”周口”, “area”:[“川汇区”,”项城市”,”商水县”,”淮阳县”,”太康县”,”鹿邑县”,”西华县”,”扶沟县”,”沈丘县”,”郸城县”,”其他”]},

{“name”:”驻马店”, “area”:[“驿城区”,”确山县”,”新蔡县”,”上蔡县”,”西平县”,”泌阳县”,”平舆县”,”汝南县”,”遂平县”,”正阳县”,”其他”]},

{“name”:”焦作”, “area”:[“济源市”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “湖北”, “city”:[

{“name”:”武汉”, “area”:[“江岸区”,”武昌区”,”江汉区”,”硚口区”,”汉阳区”,”青山区”,”洪山区”,”东西湖区”,”汉南区”,”蔡甸区”,”江夏区”,”黄陂区”,”新洲区”,”其他”]},

{“name”:”黄石”, “area”:[“黄石港区”,”西塞山区”,”下陆区”,”铁山区”,”大冶市”,”阳新县”,”其他”]},

{“name”:”十堰”, “area”:[“张湾区”,”茅箭区”,”丹江口市”,”郧县”,”竹山县”,”房县”,”郧西县”,”竹溪县”,”其他”]},

{“name”:”荆州”, “area”:[“沙市区”,”荆州区”,”洪湖市”,”石首市”,”松滋市”,”监利县”,”公安县”,”江陵县”,”其他”]},

{“name”:”宜昌”, “area”:[“西陵区”,”伍家岗区”,”点军区”,”猇亭区”,”夷陵区”,”宜都市”,”当阳市”,”枝江市”,”秭归县”,”远安县”,”兴山县”,”五峰土家族自治县”,”长阳土家族自治县”,”其他”]},

{“name”:”襄樊”, “area”:[“襄城区”,”樊城区”,”襄阳区”,”老河口市”,”枣阳市”,”宜城市”,”南漳县”,”谷城县”,”保康县”,”其他”]},

{“name”:”鄂州”, “area”:[“鄂城区”,”华容区”,”梁子湖区”,”其他”]},

{“name”:”荆门”, “area”:[“东宝区”,”掇刀区”,”钟祥市”,”京山县”,”沙洋县”,”其他”]},

{“name”:”孝感”, “area”:[“孝南区”,”应城市”,”安陆市”,”汉川市”,”云梦县”,”大悟县”,”孝昌县”,”其他”]},

{“name”:”黄冈”, “area”:[“黄州区”,”麻城市”,”武穴市”,”红安县”,”罗田县”,”浠水县”,”蕲春县”,”黄梅县”,”英山县”,”团风县”,”其他”]},

{“name”:”咸宁”, “area”:[“咸安区”,”赤壁市”,”嘉鱼县”,”通山县”,”崇阳县”,”通城县”,”其他”]},

{“name”:”随州”, “area”:[“曾都区”,”广水市”,”其他”]},

{“name”:”恩施土家族苗族自治州”, “area”:[“恩施市”,”利川市”,”建始县”,”来凤县”,”巴东县”,”鹤峰县”,”宣恩县”,”咸丰县”,”其他”]},

{“name”:”仙桃”, “area”:[“仙桃”]},

{“name”:”天门”, “area”:[“天门”]},

{“name”:”潜江”, “area”:[“潜江”]},

{“name”:”神农架林区”, “area”:[“神农架林区”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “湖南”, “city”:[

{“name”:”长沙”, “area”:[“岳麓区”,”芙蓉区”,”天心区”,”开福区”,”雨花区”,”浏阳市”,”长沙县”,”望城县”,”宁乡县”,”其他”]},

{“name”:”株洲”, “area”:[“天元区”,”荷塘区”,”芦淞区”,”石峰区”,”醴陵市”,”株洲县”,”炎陵县”,”茶陵县”,”攸县”,”其他”]},

{“name”:”湘潭”, “area”:[“岳塘区”,”雨湖区”,”湘乡市”,”韶山市”,”湘潭县”,”其他”]},

{“name”:”衡阳”, “area”:[“雁峰区”,”珠晖区”,”石鼓区”,”蒸湘区”,”南岳区”,”耒阳市”,”常宁市”,”衡阳县”,”衡东县”,”衡山县”,”衡南县”,”祁东县”,”其他”]},

{“name”:”邵阳”, “area”:[“双清区”,”大祥区”,”北塔区”,”武冈市”,”邵东县”,”洞口县”,”新邵县”,”绥宁县”,”新宁县”,”邵阳县”,”隆回县”,”城步苗族自治县”,”其他”]},

{“name”:”岳阳”, “area”:[“岳阳楼区”,”云溪区”,”君山区”,”临湘市”,”汨罗市”,”岳阳县”,”湘阴县”,”平江县”,”华容县”,”其他”]},

{“name”:”常德”, “area”:[“武陵区”,”鼎城区”,”津市市”,”澧县”,”临澧县”,”桃源县”,”汉寿县”,”安乡县”,”石门县”,”其他”]},

{“name”:”张家界”, “area”:[“永定区”,”武陵源区”,”慈利县”,”桑植县”,”其他”]},

{“name”:”益阳”, “area”:[“赫山区”,”资阳区”,”沅江市”,”桃江县”,”南县”,”安化县”,”其他”]},

{“name”:”郴州”, “area”:[“北湖区”,”苏仙区”,”资兴市”,”宜章县”,”汝城县”,”安仁县”,”嘉禾县”,”临武县”,”桂东县”,”永兴县”,”桂阳县”,”其他”]},

{“name”:”永州”, “area”:[“冷水滩区”,”零陵区”,”祁阳县”,”蓝山县”,”宁远县”,”新田县”,”东安县”,”江永县”,”道县”,”双牌县”,”江华瑶族自治县”,”其他”]},

{“name”:”怀化”, “area”:[“鹤城区”,”洪江市”,”会同县”,”沅陵县”,”辰溪县”,”溆浦县”,”中方县”,”新晃侗族自治县”,”芷江侗族自治县”,”通道侗族自治县”,”靖州苗族侗族自治县”,”麻阳苗族自治县”,”其他”]},

{“name”:”娄底”, “area”:[“娄星区”,”冷水江市”,”涟源市”,”新化县”,”双峰县”,”其他”]},

{“name”:”湘西土家族苗族自治州”, “area”:[“吉首市”,”古丈县”,”龙山县”,”永顺县”,”凤凰县”,”泸溪县”,”保靖县”,”花垣县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “广东”, “city”:[

{“name”:”广州”, “area”:[“越秀区”,”荔湾区”,”海珠区”,”天河区”,”白云区”,”黄埔区”,”番禺区”,”花都区”,”南沙区”,”萝岗区”,”增城市”,”从化市”,”其他”]},

{“name”:”深圳”, “area”:[“福田区”,”罗湖区”,”南山区”,”宝安区”,”龙岗区”,”盐田区”,”其他”]},

{“name”:”东莞”, “area”:[“莞城”,”常平”,”塘厦”,”塘厦”,”塘厦”,”其他”]},

{“name”:”中山”, “area”:[“中山”]},

{“name”:”潮州”, “area”:[“湘桥区”,”潮安县”,”饶平县”,”其他”]},

{“name”:”揭阳”, “area”:[“榕城区”,”揭东县”,”揭西县”,”惠来县”,”普宁市”,”其他”]},

{“name”:”云浮”, “area”:[“云城区”,”新兴县”,”郁南县”,”云安县”,”罗定市”,”其他”]},

{“name”:”珠海”, “area”:[“香洲区”,”斗门区”,”金湾区”,”其他”]},

{“name”:”汕头”, “area”:[“金平区”,”濠江区”,”龙湖区”,”潮阳区”,”潮南区”,”澄海区”,”南澳县”,”其他”]},

{“name”:”韶关”, “area”:[“浈江区”,”武江区”,”曲江区”,”乐昌市”,”南雄市”,”始兴县”,”仁化县”,”翁源县”,”新丰县”,”乳源瑶族自治县”,”其他”]},

{“name”:”佛山”, “area”:[“禅城区”,”南海区”,”顺德区”,”三水区”,”高明区”,”其他”]},

{“name”:”江门”, “area”:[“蓬江区”,”江海区”,”新会区”,”恩平市”,”台山市”,”开平市”,”鹤山市”,”其他”]},

{“name”:”湛江”, “area”:[“赤坎区”,”霞山区”,”坡头区”,”麻章区”,”吴川市”,”廉江市”,”雷州市”,”遂溪县”,”徐闻县”,”其他”]},

{“name”:”茂名”, “area”:[“茂南区”,”茂港区”,”化州市”,”信宜市”,”高州市”,”电白县”,”其他”]},

{“name”:”肇庆”, “area”:[“端州区”,”鼎湖区”,”高要市”,”四会市”,”广宁县”,”怀集县”,”封开县”,”德庆县”,”其他”]},

{“name”:”惠州”, “area”:[“惠城区”,”惠阳区”,”博罗县”,”惠东县”,”龙门县”,”其他”]},

{“name”:”梅州”, “area”:[“梅江区”,”兴宁市”,”梅县”,”大埔县”,”丰顺县”,”五华县”,”平远县”,”蕉岭县”,”其他”]},

{“name”:”汕尾”, “area”:[“城区”,”陆丰市”,”海丰县”,”陆河县”,”其他”]},

{“name”:”河源”, “area”:[“源城区”,”紫金县”,”龙川县”,”连平县”,”和平县”,”东源县”,”其他”]},

{“name”:”阳江”, “area”:[“江城区”,”阳春市”,”阳西县”,”阳东县”,”其他”]},

{“name”:”清远”, “area”:[“清城区”,”英德市”,”连州市”,”佛冈县”,”阳山县”,”清新县”,”连山壮族瑶族自治县”,”连南瑶族自治县”,”其他”]}

]},

{ “name”: “广西”, “city”:[

{“name”:”南宁”, “area”:[“青秀区”,”兴宁区”,”西乡塘区”,”良庆区”,”江南区”,”邕宁区”,”武鸣县”,”隆安县”,”马山县”,”上林县”,”宾阳县”,”横县”,”其他”]},

{“name”:”柳州”, “area”:[“城中区”,”鱼峰区”,”柳北区”,”柳南区”,”柳江县”,”柳城县”,”鹿寨县”,”融安县”,”融水苗族自治县”,”三江侗族自治县”,”其他”]},

{“name”:”桂林”, “area”:[“象山区”,”秀峰区”,”叠彩区”,”七星区”,”雁山区”,”阳朔县”,”临桂县”,”灵川县”,”全州县”,”平乐县”,”兴安县”,”灌阳县”,”荔浦县”,”资源县”,”永福县”,”龙胜各族自治县”,”恭城瑶族自治县”,”其他”]},

{“name”:”梧州”, “area”:[“万秀区”,”蝶山区”,”长洲区”,”岑溪市”,”苍梧县”,”藤县”,”蒙山县”,”其他”]},

{“name”:”北海”, “area”:[“海城区”,”银海区”,”铁山港区”,”合浦县”,”其他”]},

{“name”:”防城港”, “area”:[“港口区”,”防城区”,”东兴市”,”上思县”,”其他”]},

{“name”:”钦州”, “area”:[“钦南区”,”钦北区”,”灵山县”,”浦北县”,”其他”]},

{“name”:”贵港”, “area”:[“港北区”,”港南区”,”覃塘区”,”桂平市”,”平南县”,”其他”]},

{“name”:”玉林”, “area”:[“玉州区”,”北流市”,”容县”,”陆川县”,”博白县”,”兴业县”,”其他”]},

{“name”:”百色”, “area”:[“右江区”,”凌云县”,”平果县”,”西林县”,”乐业县”,”德保县”,”田林县”,”田阳县”,”靖西县”,”田东县”,”那坡县”,”隆林各族自治县”,”其他”]},

{“name”:”贺州”, “area”:[“八步区”,”钟山县”,”昭平县”,”富川瑶族自治县”,”其他”]},

{“name”:”河池”, “area”:[“金城江区”,”宜州市”,”天峨县”,”凤山县”,”南丹县”,”东兰县”,”都安瑶族自治县”,”罗城仫佬族自治县”,”巴马瑶族自治县”,”环江毛南族自治县”,”大化瑶族自治县”,”其他”]},

{“name”:”来宾”, “area”:[“兴宾区”,”合山市”,”象州县”,”武宣县”,”忻城县”,”金秀瑶族自治县”,”其他”]},

{“name”:”崇左”, “area”:[“江州区”,”凭祥市”,”宁明县”,”扶绥县”,”龙州县”,”大新县”,”天等县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “海南”, “city”:[

{“name”:”海口”, “area”:[“龙华区”,”秀英区”,”琼山区”,”美兰区”,”其他”]},

{“name”:”三亚”, “area”:[“三亚市”,”其他”]},

{“name”:”五指山”, “area”:[“五指山”]},

{“name”:”琼海”, “area”:[“琼海”]},

{“name”:”儋州”, “area”:[“儋州”]},

{“name”:”文昌”, “area”:[“文昌”]},

{“name”:”万宁”, “area”:[“万宁”]},

{“name”:”东方”, “area”:[“东方”]},

{“name”:”澄迈县”, “area”:[“澄迈县”]},

{“name”:”定安县”, “area”:[“定安县”]},

{“name”:”屯昌县”, “area”:[“屯昌县”]},

{“name”:”临高县”, “area”:[“临高县”]},

{“name”:”白沙黎族自治县”, “area”:[“白沙黎族自治县”]},

{“name”:”昌江黎族自治县”, “area”:[“昌江黎族自治县”]},

{“name”:”乐东黎族自治县”, “area”:[“乐东黎族自治县”]},

{“name”:”陵水黎族自治县”, “area”:[“陵水黎族自治县”]},

{“name”:”保亭黎族苗族自治县”, “area”:[“保亭黎族苗族自治县”]},

{“name”:”琼中黎族苗族自治县”, “area”:[“琼中黎族苗族自治县”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “重庆”, “city”:[

{“name”:”重庆”, “area”:[“渝中区”,”大渡口区”,”江北区”,”南岸区”,”北碚区”,”渝北区”,”巴南区”,”长寿区”,”双桥区”,”沙坪坝区”,”万盛区”,”万州区”,”涪陵区”,”黔江区”,”永川区”,”合川区”,”江津区”,”九龙坡区”,”南川区”,”綦江县”,”潼南县”,”荣昌县”,”璧山县”,”大足县”,”铜梁县”,”梁平县”,”开县”,”忠县”,”城口县”,”垫江县”,”武隆县”,”丰都县”,”奉节县”,”云阳县”,”巫溪县”,”巫山县”,”石柱土家族自治县”,”秀山土家族苗族自治县”,”酉阳土家族苗族自治县”,”彭水苗族土家族自治县”,”其他”]}

]},

{ “name”: “四川”, “city”:[

{“name”:”成都”, “area”:[“青羊区”,”锦江区”,”金牛区”,”武侯区”,”成华区”,”龙泉驿区”,”青白江区”,”新都区”,”温江区”,”都江堰市”,”彭州市”,”邛崃市”,”崇州市”,”金堂县”,”郫县”,”新津县”,”双流县”,”蒲江县”,”大邑县”,”其他”]},

{“name”:”自贡”, “area”:[“大安区”,”自流井区”,”贡井区”,”沿滩区”,”荣县”,”富顺县”,”其他”]},

{“name”:”攀枝花”, “area”:[“仁和区”,”米易县”,”盐边县”,”东区”,”西区”,”其他”]},

{“name”:”泸州”, “area”:[“江阳区”,”纳溪区”,”龙马潭区”,”泸县”,”合江县”,”叙永县”,”古蔺县”,”其他”]},

{“name”:”德阳”, “area”:[“旌阳区”,”广汉市”,”什邡市”,”绵竹市”,”罗江县”,”中江县”,”其他”]},

{“name”:”绵阳”, “area”:[“涪城区”,”游仙区”,”江油市”,”盐亭县”,”三台县”,”平武县”,”安县”,”梓潼县”,”北川羌族自治县”,”其他”]},

{“name”:”广元”, “area”:[“元坝区”,”朝天区”,”青川县”,”旺苍县”,”剑阁县”,”苍溪县”,”市中区”,”其他”]},

{“name”:”遂宁”, “area”:[“船山区”,”安居区”,”射洪县”,”蓬溪县”,”大英县”,”其他”]},

{“name”:”内江”, “area”:[“市中区”,”东兴区”,”资中县”,”隆昌县”,”威远县”,”其他”]},

{“name”:”乐山”, “area”:[“市中区”,”五通桥区”,”沙湾区”,”金口河区”,”峨眉山市”,”夹江县”,”井研县”,”犍为县”,”沐川县”,”马边彝族自治县”,”峨边彝族自治县”,”其他”]},

{“name”:”南充”, “area”:[“顺庆区”,”高坪区”,”嘉陵区”,”阆中市”,”营山县”,”蓬安县”,”仪陇县”,”南部县”,”西充县”,”其他”]},

{“name”:”眉山”, “area”:[“东坡区”,”仁寿县”,”彭山县”,”洪雅县”,”丹棱县”,”青神县”,”其他”]},

{“name”:”宜宾”, “area”:[“翠屏区”,”宜宾县”,”兴文县”,”南溪县”,”珙县”,”长宁县”,”高县”,”江安县”,”筠连县”,”屏山县”,”其他”]},

{“name”:”广安”, “area”:[“广安区”,”华蓥市”,”岳池县”,”邻水县”,”武胜县”,”其他”]},

{“name”:”达州”, “area”:[“通川区”,”万源市”,”达县”,”渠县”,”宣汉县”,”开江县”,”大竹县”,”其他”]},

{“name”:”雅安”, “area”:[“雨城区”,”芦山县”,”石棉县”,”名山县”,”天全县”,”荥经县”,”宝兴县”,”汉源县”,”其他”]},

{“name”:”巴中”, “area”:[“巴州区”,”南江县”,”平昌县”,”通江县”,”其他”]},

{“name”:”资阳”, “area”:[“雁江区”,”简阳市”,”安岳县”,”乐至县”,”其他”]},

{“name”:”阿坝藏族羌族自治州”, “area”:[“马尔康县”,”九寨沟县”,”红原县”,”汶川县”,”阿坝县”,”理县”,”若尔盖县”,”小金县”,”黑水县”,”金川县”,”松潘县”,”壤塘县”,”茂县”,”其他”]},

{“name”:”甘孜藏族自治州”, “area”:[“康定县”,”丹巴县”,”炉霍县”,”九龙县”,”甘孜县”,”雅江县”,”新龙县”,”道孚县”,”白玉县”,”理塘县”,”德格县”,”乡城县”,”石渠县”,”稻城县”,”色达县”,”巴塘县”,”泸定县”,”得荣县”,”其他”]},

{“name”:”凉山彝族自治州”, “area”:[“西昌市”,”美姑县”,”昭觉县”,”金阳县”,”甘洛县”,”布拖县”,”雷波县”,”普格县”,”宁南县”,”喜德县”,”会东县”,”越西县”,”会理县”,”盐源县”,”德昌县”,”冕宁县”,”木里藏族自治县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “贵州”, “city”:[

{“name”:”贵阳”, “area”:[“南明区”,”云岩区”,”花溪区”,”乌当区”,”白云区”,”小河区”,”清镇市”,”开阳县”,”修文县”,”息烽县”,”其他”]},

{“name”:”六盘水”, “area”:[“钟山区”,”水城县”,”盘县”,”六枝特区”,”其他”]},

{“name”:”遵义”, “area”:[“红花岗区”,”汇川区”,”赤水市”,”仁怀市”,”遵义县”,”绥阳县”,”桐梓县”,”习水县”,”凤冈县”,”正安县”,”余庆县”,”湄潭县”,”道真仡佬族苗族自治县”,”务川仡佬族苗族自治县”,”其他”]},

{“name”:”安顺”, “area”:[“西秀区”,”普定县”,”平坝县”,”镇宁布依族苗族自治县”,”紫云苗族布依族自治县”,”关岭布依族苗族自治县”,”其他”]},

{“name”:”铜仁地区”, “area”:[“铜仁市”,”德江县”,”江口县”,”思南县”,”石阡县”,”玉屏侗族自治县”,”松桃苗族自治县”,”印江土家族苗族自治县”,”沿河土家族自治县”,”万山特区”,”其他”]},

{“name”:”毕节地区”, “area”:[“毕节市”,”黔西县”,”大方县”,”织金县”,”金沙县”,”赫章县”,”纳雍县”,”威宁彝族回族苗族自治县”,”其他”]},

{“name”:”黔西南布依族苗族自治州”, “area”:[“兴义市”,”望谟县”,”兴仁县”,”普安县”,”册亨县”,”晴隆县”,”贞丰县”,”安龙县”,”其他”]},

{“name”:”黔东南苗族侗族自治州”, “area”:[“凯里市”,”施秉县”,”从江县”,”锦屏县”,”镇远县”,”麻江县”,”台江县”,”天柱县”,”黄平县”,”榕江县”,”剑河县”,”三穗县”,”雷山县”,”黎平县”,”岑巩县”,”丹寨县”,”其他”]},

{“name”:”黔南布依族苗族自治州”, “area”:[“都匀市”,”福泉市”,”贵定县”,”惠水县”,”罗甸县”,”瓮安县”,”荔波县”,”龙里县”,”平塘县”,”长顺县”,”独山县”,”三都水族自治县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “云南”, “city”:[

{“name”:”昆明”, “area”:[“盘龙区”,”五华区”,”官渡区”,”西山区”,”东川区”,”安宁市”,”呈贡县”,”晋宁县”,”富民县”,”宜良县”,”嵩明县”,”石林彝族自治县”,”禄劝彝族苗族自治县”,”寻甸回族彝族自治县”,”其他”]},

{“name”:”曲靖”, “area”:[“麒麟区”,”宣威市”,”马龙县”,”沾益县”,”富源县”,”罗平县”,”师宗县”,”陆良县”,”会泽县”,”其他”]},

{“name”:”玉溪”, “area”:[“红塔区”,”江川县”,”澄江县”,”通海县”,”华宁县”,”易门县”,”峨山彝族自治县”,”新平彝族傣族自治县”,”元江哈尼族彝族傣族自治县”,”其他”]},

{“name”:”保山”, “area”:[“隆阳区”,”施甸县”,”腾冲县”,”龙陵县”,”昌宁县”,”其他”]},

{“name”:”昭通”, “area”:[“昭阳区”,”鲁甸县”,”巧家县”,”盐津县”,”大关县”,”永善县”,”绥江县”,”镇雄县”,”彝良县”,”威信县”,”水富县”,”其他”]},

{“name”:”丽江”, “area”:[“古城区”,”永胜县”,”华坪县”,”玉龙纳西族自治县”,”宁蒗彝族自治县”,”其他”]},

{“name”:”普洱”, “area”:[“思茅区”,”普洱哈尼族彝族自治县”,”墨江哈尼族自治县”,”景东彝族自治县”,”景谷傣族彝族自治县”,”镇沅彝族哈尼族拉祜族自治县”,”江城哈尼族彝族自治县”,”孟连傣族拉祜族佤族自治县”,”澜沧拉祜族自治县”,”西盟佤族自治县”,”其他”]},

{“name”:”临沧”, “area”:[“临翔区”,”凤庆县”,”云县”,”永德县”,”镇康县”,”双江拉祜族佤族布朗族傣族自治县”,”耿马傣族佤族自治县”,”沧源佤族自治县”,”其他”]},

{“name”:”德宏傣族景颇族自治州”, “area”:[“潞西市”,”瑞丽市”,”梁河县”,”盈江县”,”陇川县”,”其他”]},

{“name”:”怒江傈僳族自治州”, “area”:[“泸水县”,”福贡县”,”贡山独龙族怒族自治县”,”兰坪白族普米族自治县”,”其他”]},

{“name”:”迪庆藏族自治州”, “area”:[“香格里拉县”,”德钦县”,”维西傈僳族自治县”,”其他”]},

{“name”:”大理白族自治州”, “area”:[“大理市”,”祥云县”,”宾川县”,”弥渡县”,”永平县”,”云龙县”,”洱源县”,”剑川县”,”鹤庆县”,”漾濞彝族自治县”,”南涧彝族自治县”,”巍山彝族回族自治县”,”其他”]},

{“name”:”楚雄彝族自治州”, “area”:[“楚雄市”,”双柏县”,”牟定县”,”南华县”,”姚安县”,”大姚县”,”永仁县”,”元谋县”,”武定县”,”禄丰县”,”其他”]},

{“name”:”红河哈尼族彝族自治州”, “area”:[“蒙自县”,”个旧市”,”开远市”,”绿春县”,”建水县”,”石屏县”,”弥勒县”,”泸西县”,”元阳县”,”红河县”,”金平苗族瑶族傣族自治县”,”河口瑶族自治县”,”屏边苗族自治县”,”其他”]},

{“name”:”文山壮族苗族自治州”, “area”:[“文山县”,”砚山县”,”西畴县”,”麻栗坡县”,”马关县”,”丘北县”,”广南县”,”富宁县”,”其他”]},

{“name”:”西双版纳傣族自治州”, “area”:[“景洪市”,”勐海县”,”勐腊县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “西藏”, “city”:[

{“name”:”拉萨”, “area”:[“城关区”,”林周县”,”当雄县”,”尼木县”,”曲水县”,”堆龙德庆县”,”达孜县”,”墨竹工卡县”,”其他”]},

{“name”:”那曲地区”, “area”:[“那曲县”,”嘉黎县”,”比如县”,”聂荣县”,”安多县”,”申扎县”,”索县”,”班戈县”,”巴青县”,”尼玛县”,”其他”]},

{“name”:”昌都地区”, “area”:[“昌都县”,”江达县”,”贡觉县”,”类乌齐县”,”丁青县”,”察雅县”,”八宿县”,”左贡县”,”芒康县”,”洛隆县”,”边坝县”,”其他”]},

{“name”:”林芝地区”, “area”:[“林芝县”,”工布江达县”,”米林县”,”墨脱县”,”波密县”,”察隅县”,”朗县”,”其他”]},

{“name”:”山南地区”, “area”:[“乃东县”,”扎囊县”,”贡嘎县”,”桑日县”,”琼结县”,”曲松县”,”措美县”,”洛扎县”,”加查县”,”隆子县”,”错那县”,”浪卡子县”,”其他”]},

{“name”:”日喀则地区”, “area”:[“日喀则市”,”南木林县”,”江孜县”,”定日县”,”萨迦县”,”拉孜县”,”昂仁县”,”谢通门县”,”白朗县”,”仁布县”,”康马县”,”定结县”,”仲巴县”,”亚东县”,”吉隆县”,”聂拉木县”,”萨嘎县”,”岗巴县”,”其他”]},

{“name”:”阿里地区”, “area”:[“噶尔县”,”普兰县”,”札达县”,”日土县”,”革吉县”,”改则县”,”措勤县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “陕西”, “city”:[

{“name”:”西安”, “area”:[“莲湖区”,”新城区”,”碑林区”,”雁塔区”,”灞桥区”,”未央区”,”阎良区”,”临潼区”,”长安区”,”高陵县”,”蓝田县”,”户县”,”周至县”,”其他”]},

{“name”:”铜川”, “area”:[“耀州区”,”王益区”,”印台区”,”宜君县”,”其他”]},

{“name”:”宝鸡”, “area”:[“渭滨区”,”金台区”,”陈仓区”,”岐山县”,”凤翔县”,”陇县”,”太白县”,”麟游县”,”扶风县”,”千阳县”,”眉县”,”凤县”,”其他”]},

{“name”:”咸阳”, “area”:[“秦都区”,”渭城区”,”杨陵区”,”兴平市”,”礼泉县”,”泾阳县”,”永寿县”,”三原县”,”彬县”,”旬邑县”,”长武县”,”乾县”,”武功县”,”淳化县”,”其他”]},

{“name”:”渭南”, “area”:[“临渭区”,”韩城市”,”华阴市”,”蒲城县”,”潼关县”,”白水县”,”澄城县”,”华县”,”合阳县”,”富平县”,”大荔县”,”其他”]},

{“name”:”延安”, “area”:[“宝塔区”,”安塞县”,”洛川县”,”子长县”,”黄陵县”,”延川县”,”富县”,”延长县”,”甘泉县”,”宜川县”,”志丹县”,”黄龙县”,”吴起县”,”其他”]},

{“name”:”汉中”, “area”:[“汉台区”,”留坝县”,”镇巴县”,”城固县”,”南郑县”,”洋县”,”宁强县”,”佛坪县”,”勉县”,”西乡县”,”略阳县”,”其他”]},

{“name”:”榆林”, “area”:[“榆阳区”,”清涧县”,”绥德县”,”神木县”,”佳县”,”府谷县”,”子洲县”,”靖边县”,”横山县”,”米脂县”,”吴堡县”,”定边县”,”其他”]},

{“name”:”安康”, “area”:[“汉滨区”,”紫阳县”,”岚皋县”,”旬阳县”,”镇坪县”,”平利县”,”石泉县”,”宁陕县”,”白河县”,”汉阴县”,”其他”]},

{“name”:”商洛”, “area”:[“商州区”,”镇安县”,”山阳县”,”洛南县”,”商南县”,”丹凤县”,”柞水县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “甘肃”, “city”:[

{“name”:”兰州”, “area”:[“城关区”,”七里河区”,”西固区”,”安宁区”,”红古区”,”永登县”,”皋兰县”,”榆中县”,”其他”]},

{“name”:”嘉峪关”, “area”:[“嘉峪关市”,”其他”]},

{“name”:”金昌”, “area”:[“金川区”,”永昌县”,”其他”]},

{“name”:”白银”, “area”:[“白银区”,”平川区”,”靖远县”,”会宁县”,”景泰县”,”其他”]},

{“name”:”天水”, “area”:[“清水县”,”秦安县”,”甘谷县”,”武山县”,”张家川回族自治县”,”北道区”,”秦城区”,”其他”]},

{“name”:”武威”, “area”:[“凉州区”,”民勤县”,”古浪县”,”天祝藏族自治县”,”其他”]},

{“name”:”酒泉”, “area”:[“肃州区”,”玉门市”,”敦煌市”,”金塔县”,”肃北蒙古族自治县”,”阿克塞哈萨克族自治县”,”安西县”,”其他”]},

{“name”:”张掖”, “area”:[“甘州区”,”民乐县”,”临泽县”,”高台县”,”山丹县”,”肃南裕固族自治县”,”其他”]},

{“name”:”庆阳”, “area”:[“西峰区”,”庆城县”,”环县”,”华池县”,”合水县”,”正宁县”,”宁县”,”镇原县”,”其他”]},

{“name”:”平凉”, “area”:[“崆峒区”,”泾川县”,”灵台县”,”崇信县”,”华亭县”,”庄浪县”,”静宁县”,”其他”]},

{“name”:”定西”, “area”:[“安定区”,”通渭县”,”临洮县”,”漳县”,”岷县”,”渭源县”,”陇西县”,”其他”]},

{“name”:”陇南”, “area”:[“武都区”,”成县”,”宕昌县”,”康县”,”文县”,”西和县”,”礼县”,”两当县”,”徽县”,”其他”]},

{“name”:”临夏回族自治州”, “area”:[“临夏市”,”临夏县”,”康乐县”,”永靖县”,”广河县”,”和政县”,”东乡族自治县”,”积石山保安族东乡族撒拉族自治县”,”其他”]},

{“name”:”甘南藏族自治州”, “area”:[“合作市”,”临潭县”,”卓尼县”,”舟曲县”,”迭部县”,”玛曲县”,”碌曲县”,”夏河县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “青海”, “city”:[

{“name”:”西宁”, “area”:[“城中区”,”城东区”,”城西区”,”城北区”,”湟源县”,”湟中县”,”大通回族土族自治县”,”其他”]},

{“name”:”海东地区”, “area”:[“平安县”,”乐都县”,”民和回族土族自治县”,”互助土族自治县”,”化隆回族自治县”,”循化撒拉族自治县”,”其他”]},

{“name”:”海北藏族自治州”, “area”:[“海晏县”,”祁连县”,”刚察县”,”门源回族自治县”,”其他”]},

{“name”:”海南藏族自治州”, “area”:[“共和县”,”同德县”,”贵德县”,”兴海县”,”贵南县”,”其他”]},

{“name”:”黄南藏族自治州”, “area”:[“同仁县”,”尖扎县”,”泽库县”,”河南蒙古族自治县”,”其他”]},

{“name”:”果洛藏族自治州”, “area”:[“玛沁县”,”班玛县”,”甘德县”,”达日县”,”久治县”,”玛多县”,”其他”]},

{“name”:”玉树藏族自治州”, “area”:[“玉树县”,”杂多县”,”称多县”,”治多县”,”囊谦县”,”曲麻莱县”,”其他”]},

{“name”:”海西蒙古族藏族自治州”, “area”:[“德令哈市”,”格尔木市”,”乌兰县”,”都兰县”,”天峻县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “宁夏”, “city”:[

{“name”:”银川”, “area”:[“兴庆区”,”西夏区”,”金凤区”,”灵武市”,”永宁县”,”贺兰县”,”其他”]},

{“name”:”石嘴山”, “area”:[“大武口区”,”惠农区”,”平罗县”,”其他”]},

{“name”:”吴忠”, “area”:[“利通区”,”青铜峡市”,”盐池县”,”同心县”,”其他”]},

{“name”:”固原”, “area”:[“原州区”,”西吉县”,”隆德县”,”泾源县”,”彭阳县”,”其他”]},

{“name”:”中卫”, “area”:[“沙坡头区”,”中宁县”,”海原县”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “新疆”, “city”:[

{“name”:”乌鲁木齐”, “area”:[“天山区”,”沙依巴克区”,”新市区”,”水磨沟区”,”头屯河区”,”达坂城区”,”东山区”,”乌鲁木齐县”,”其他”]},

{“name”:”克拉玛依”, “area”:[“克拉玛依区”,”独山子区”,”白碱滩区”,”乌尔禾区”,”其他”]},

{“name”:”吐鲁番地区”, “area”:[“吐鲁番市”,”托克逊县”,”鄯善县”,”其他”]},

{“name”:”哈密地区”, “area”:[“哈密市”,”伊吾县”,”巴里坤哈萨克自治县”,”其他”]},

{“name”:”和田地区”, “area”:[“和田市”,”和田县”,”洛浦县”,”民丰县”,”皮山县”,”策勒县”,”于田县”,”墨玉县”,”其他”]},

{“name”:”阿克苏地区”, “area”:[“阿克苏市”,”温宿县”,”沙雅县”,”拜城县”,”阿瓦提县”,”库车县”,”柯坪县”,”新和县”,”乌什县”,”其他”]},

{“name”:”喀什地区”, “area”:[“喀什市”,”巴楚县”,”泽普县”,”伽师县”,”叶城县”,”岳普湖县”,”疏勒县”,”麦盖提县”,”英吉沙县”,”莎车县”,”疏附县”,”塔什库尔干塔吉克自治县”,”其他”]},

{“name”:”克孜勒苏柯尔克孜自治州”, “area”:[“阿图什市”,”阿合奇县”,”乌恰县”,”阿克陶县”,”其他”]},

{“name”:”巴音郭楞蒙古自治州”, “area”:[“库尔勒市”,”和静县”,”尉犁县”,”和硕县”,”且末县”,”博湖县”,”轮台县”,”若羌县”,”焉耆回族自治县”,”其他”]},

{“name”:”昌吉回族自治州”, “area”:[“昌吉市”,”阜康市”,”奇台县”,”玛纳斯县”,”吉木萨尔县”,”呼图壁县”,”木垒哈萨克自治县”,”米泉市”,”其他”]},

{“name”:”博尔塔拉蒙古自治州”, “area”:[“博乐市”,”精河县”,”温泉县”,”其他”]},

{“name”:”石河子”, “area”:[“石河子”]},

{“name”:”阿拉尔”, “area”:[“阿拉尔”]},

{“name”:”图木舒克”, “area”:[“图木舒克”]},

{“name”:”五家渠”, “area”:[“五家渠”]},

{“name”:”伊犁哈萨克自治州”, “area”:[“伊宁市”,”奎屯市”,”伊宁县”,”特克斯县”,”尼勒克县”,”昭苏县”,”新源县”,”霍城县”,”巩留县”,”察布查尔锡伯自治县”,”塔城地区”,”阿勒泰地区”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “台湾”, “city”:[

{“name”:”台湾”, “area”:[“台北市”,”高雄市”,”台北县”,”桃园县”,”新竹县”,”苗栗县”,”台中县”,”彰化县”,”南投县”,”云林县”,”嘉义县”,”台南县”,”高雄县”,”屏东县”,”宜兰县”,”花莲县”,”台东县”,”澎湖县”,”基隆市”,”新竹市”,”台中市”,”嘉义市”,”台南市”,”其他”]},

{“name”:”其他”, “area”:[“其他”]}

]},

{ “name”: “澳门”, “city”:[

{“name”:”澳门”, “area”:[“花地玛堂区”,”圣安多尼堂区”,”大堂区”,”望德堂区”,”风顺堂区”,”嘉模堂区”,”圣方济各堂区”,”路凼”,”其他”]}

]},

{ “name”: “香港”, “city”:[

{“name”:”香港”, “area”:[“中西区”,”湾仔区”,”东区”,”南区”,”深水埗区”,”油尖旺区”,”九龙城区”,”黄大仙区”,”观塘区”,”北区”,”大埔区”,”沙田区”,”西贡区”,”元朗区”,”屯门区”,”荃湾区”,”葵青区”,”离岛区”,”其他”]}

]},

{ “name”: “钓鱼岛”, “city”:[

{“name”:”钓鱼岛”, “area”:[“钓鱼岛”]}

]}

]

移动端高清、多屏适配方案–转

吴阳 No Comments

http://div.io/topic/1092

转:说说JSON和JSONP,也许你会豁然开朗

吴阳 One comment

原文地址:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

前言:

由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。

当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备必须支持WebSocket,因此都不能算是ST2的原生解决方案,原生的只有AJAX。

说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。

但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。

JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。

既然随便聊聊,那我们就不再采用教条的方式来讲述,而是把关注重心放在帮助开发人员理解是否应当选择使用以及如何使用上。

什么是JSON?

前面简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式,你是否该选用他首先肯定要关注它所拥有的优点。

JSON的优点:

1、基于纯文本,跨平台传递极其简单;

2、Javascript原生支持,后台语言几乎全部支持;

3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;

4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;

5、容易编写和解析,当然前提是你要知道数据结构;

JSON的缺点当然也有,但在作者看来实在是无关紧要的东西,所以不再单独说明。

JSON的格式或者叫规则:

JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。

1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号””是定义符。

2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。

3、上述两种集合中若有多个子项,则通过英文逗号,进行分隔。

4、键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号””,以便于不同语言的解析。

5、JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null 这么几个,字符串必须用双引号引起来,其余的都不用,日期类型比较特殊,这里就不展开讲述了,只是建议如果客户端没有按日期排序功能需求的话,那么把日期时间直接作为字符串传递就好,可以省去很多麻烦。

JSON实例:

// 描述一个人
var person = {
 "Name": "Bob",
 "Age": 32,
 "Company": "IBM",
 "Engineer": true
 }
// 获取这个人的信息
var personAge = person.Age;
// 描述几个人
var members = [
 {
 "Name": "Bob",
 "Age": 32,
 "Company": "IBM",
 "Engineer": true
 },
 {
 "Name": "John",
 "Age": 20,
 "Company": "Oracle",
 "Engineer": false
 },
 {
 "Name": "Henry",
 "Age": 45,
 "Company": "Microsoft",
 "Engineer": false
 }
 ]
// 读取其中John的公司名称
var johnsCompany = members[1].Company;
// 描述一次会议
var conference = {
 "Conference": "Future Marketing",
 "Date": "2012-6-1",
 "Address": "Beijing",
 "Members":
 [
 {
 "Name": "Bob",
 "Age": 32,
 "Company": "IBM",
 "Engineer": true
 },
 {
 "Name": "John",
 "Age": 20,
 "Company": "Oracle",
 "Engineer": false
 },
 {
 "Name": "Henry",
 "Age": 45,
 "Company": "Microsoft",
 "Engineer": false
 }
 ]
 }
// 读取参会者Henry是否工程师
var henryIsAnEngineer = conference.Members[2].Engineer;

 

什么是JSONP?

先说说JSONP是怎么产生的:

其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题,看看是否有帮助。

1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;

2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有”src”这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>);

3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理;

4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据;

5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。

6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。

7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

如果对于callback参数如何使用还有些模糊的话,我们后面会有具体的实例来讲解。

JSONP的客户端具体实现:

不管jQuery也好,extjs也罢,又或者是其他支持jsonp的框架,他们幕后所做的工作都是一样的,下面我来循序渐进的说明一下jsonp在客户端的实现:

1、我们知道,哪怕跨域js文件中的代码(当然指符合web脚本安全策略的),web页面也是可以无条件执行的。

远程服务器remoteserver.com根目录下有个remote.js文件代码如下:
alert(‘我是远程文件’);
本地服务器localserver.com下有个jsonp.html页面代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title></title>
 <script type="text/javascript" src="http://remoteserver.com/remote.js"></script>
</head>
<body>
</body>
</html>

毫无疑问,页面将会弹出一个提示窗体,显示跨域调用成功。
2、现在我们在jsonp.html页面定义一个函数,然后在远程remote.js中传入数据进行调用。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title></title>
 <script type="text/javascript">
 var localHandler = function(data){
 alert('我是本地函数,可以被跨域的remote.js文件调用,远程js带来的数据是:' + data.result);
 };
 </script>
 <script type="text/javascript" src="http://remoteserver.com/remote.js"></script>
</head>
<body>
</body>
</html>
remote.js文件代码如下:
localHandler({"result":"我是远程js带来的数据"});

运行之后查看结果,页面成功弹出提示窗口,显示本地函数被跨域的远程js调用成功,并且还接收到了远程js带来的数据。很欣喜,跨域远程获取数据的目的基本实现了,但是又一个问题出现了,我怎么让远程js知道它应该调用的本地函数叫什么名字呢?毕竟是jsonp的服务者都要面对很多服务对象,而这些服务对象各自的本地函数都不相同啊?我们接着往下看。

3、聪明的开发者很容易想到,只要服务端提供的js脚本是动态生成的就行了呗,这样调用者可以传一个参数过去告诉服务端“我想要一段调用XXX函数的js代码,请你返回给我”,于是服务器就可以按照客户端的需求来生成js脚本并响应了。

看jsonp.html页面的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
// 得到航班信息查询结果后的回调函数
var flightHandler = function(data){
alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
};
// 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码)
var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";
// 创建script标签,设置其属性
var script = document.createElement('script');
script.setAttribute('src', url);
// 把script标签加入head,此时调用开始
document.getElementsByTagName('head')[0].appendChild(script);
</script>
</head>
<body>

</body>
</html>

这次的代码变化比较大,不再直接把远程js文件写死,而是编码实现动态查询,而这也正是jsonp客户端实现的核心部分,本例中的重点也就在于如何完成jsonp调用的全过程。

我们看到调用的url中传递了一个code参数,告诉服务器我要查的是CA1998次航班的信息,而callback参数则告诉服务器,我的本地回调函数叫做flightHandler,所以请把查询结果传入这个函数中进行调用。

OK,服务器很聪明,这个叫做flightResult.aspx的页面生成了一段这样的代码提供给jsonp.html(服务端的实现这里就不演示了,与你选用的语言无关,说到底就是拼接字符串):

flightHandler({
    "code": "CA1998",
    "price": 1780,
    "tickets": 5
});

我们看到,传递给flightHandler函数的是一个json,它描述了航班的基本信息。运行一下页面,成功弹出提示窗口,jsonp的执行全过程顺利完成!

4、到这里为止的话,相信你已经能够理解jsonp的客户端实现原理了吧?剩下的就是如何把代码封装一下,以便于与用户界面交互,从而实现多次和重复调用。

什么?你用的是jQuery,想知道jQuery如何实现jsonp调用?好吧,那我就好人做到底,再给你一段jQuery使用jsonp的代码(我们依然沿用上面那个航班信息查询的例子,假定返回jsonp结果不变):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<script type="text/javascript" src=jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
$.ajax({
type: "get",
async: false,
url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998",
dataType: "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function(json){
alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。');
},
error: function(){
alert('fail');
}
});
});
</script>
</head>
<body>
</body>
</html>

是不是有点奇怪?为什么我这次没有写flightHandler这个函数呢?而且竟然也运行成功了!哈哈,这就是jQuery的功劳了,jquery在处理jsonp类型的ajax时(还是忍不住吐槽,虽然jquery也把jsonp归入了ajax,但其实它们真的不是一回事儿),自动帮你生成回调函数并把数据取出来供success属性方法来调用,是不是很爽呀?

补充:

1、ajax和jsonp这两种技术在调用方式上“看起来”很像,目的也一样,都是请求一个url,然后把服务器返回的数据进行处理,因此jquery和ext等框架都把jsonp作为ajax的一种形式进行了封装;

2、但ajax和jsonp其实本质上是不同的东西。ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。

3、所以说,其实ajax与jsonp的区别不在于是否跨域,ajax通过服务端代理一样可以实现跨域,jsonp本身也不排斥同域的数据的获取。

4、还有就是,jsonp是一种方式或者说非强制性协议,如同ajax一样,它也不一定非要用json格式来传递数据,如果你愿意,字符串都行,只不过这样不利于用jsonp提供公开服务。

总而言之,jsonp不是ajax的一个特例,哪怕jquery等巨头把jsonp封装进了ajax,也不能改变着一点!

rem的用法

吴阳 No Comments

原文地址:http://www.w3cfuns.com/blog-5471969-5407429.html

1、简单暴力的办法

<meta name="viewport" content="width=320,maximum-scale=1.3,user-scalable=no">

以320宽度为基准,进行缩放,最大缩放为320*1.3 = 416,基本缩放到426都就可以兼容iphone6 plus的屏幕了,这个方法简单粗暴,又高效。

2、使用rem

<!DOCTYPE html>
<html lang="zh">
<head>
 <meta charset="UTF-8">
 <title>rem phone test</title>
 <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <style>
 html {
 height: 100%;
 width: 100%;
 font-family: 'Heiti SC', 'Microsoft YaHei';
 font-size: 5px;
 overflow: hidden;
 outline: 0;
 -webkit-text-size-adjust:none;
 }
 body {
 height: 100%;
 margin: 0;
 overflow: hidden;
 -webkit-user-select: none;
 position: relative;
 }
 header,
 footer {
 width: 100%;
 line-height: 1.5rem;
 font-size: 1rem;
 color: #000;
 border: 1px solid #ccc;
 text-align: center;
 background-color: #ccc;
 }
 .bd {
 margin-top: 1rem;
 margin-bottom: .5rem;
 margin-right: -.5rem;
 font-size: 0;
 }
 .box {
 width: 5rem;
 height: 5rem;
 display: inline-block;
 margin-right:.5rem;
 margin-bottom: .5rem;
 }
 .blue-box {
 background-color: #06c;
 }
 .org-box {
 background-color: #1fc195;
 }
 </style>
 
</head>
<body>
<header>我是头部</header>
 <div class="bd">
 <div class="box blue-box"></div>
 <div class="box org-box"></div>
 <div class="box blue-box"></div>
 <div class="box org-box"></div>
 <div class="box blue-box"></div>
 <div class="box org-box"></div>
 </div>
 <footer>我是页脚</footer>
 <script>
 (function (doc, win) {
 var docEl = doc.documentElement,
 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
 recalc = function () {
 var clientWidth = docEl.clientWidth;
 if (!clientWidth) return;
 docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
 };
if (!doc.addEventListener) return;
 win.addEventListener(resizeEvt, recalc, false);
 doc.addEventListener('DOMContentLoaded', recalc, false);
 })(document, window);
 </script>
</body>
</html>

以上是原文作者根据不同分辨率设定根元素字体大小的JS,实现了,在不同分辨率下大小/布局等比例显示的效果。

关系:rem是以根元素作为参照。

比如

html{font-size:10px;}     1rem=10px;

html{font-size:20px;}    1rem=20px;

………..

所以只要根据不同设备设定不同根元素的字体大小,那么就可以适应不同的设备了。

那么怎么计算出不同分辨率下font-size的值?

1418903956

上面的表格蓝色一列是demo的尺寸,页面是以640的宽度去切的,怎么计算不同宽度下font-size的值,大家看表格上面的数值变化应该能明白。举个例子:384/640 = 0.6,384是640的0.6倍,所以384页面宽度下的font-size也等于它的0.6倍,这时384的font-size就等于12px。在不同设备的宽度计算方式以此类推。

既然可以用JS实现,也可以用CSS实现。下面用到的是media。

html {
 font-size : 20px;
}
@media only screen and (min-width: 401px){
 html {
 font-size: 25px !important;
 }
}
@media only screen and (min-width: 428px){
 html {
 font-size: 26.75px !important;
 }
}
@media only screen and (min-width: 481px){
 html {
 font-size: 30px !important; 
 }
}
@media only screen and (min-width: 569px){
 html {
 font-size: 35px !important; 
 }
}
@media only screen and (min-width: 641px){
 html {
 font-size: 40px !important; 
 }
}

上面的做的设置当然是不能所有设备全适配,但是用JS是可以实现全适配。具体用哪个就要根据自己的实际工作场景去定了。

 

关于适配你需要知道的—MobileWeb适配总结

吴阳 No Comments

原文地址:http://mobile.51cto.com/ahot-481934.htm

开门见山,本篇将总结一下MobileWeb的适配方法,即我们常说的H5页面、手机页面、WAP页、webview页面等等。

本篇讨论的页面指专门针对手机设备设计的页面,并非兼容全设备的响应式布局。 文中提到的 device-width 指 viewport meta 标签中 width 的值,即由浏览器指定的值,常用机型对应值可参照Screen Sizes。

适配达到的效果是什么?

在不同尺寸的手机设备上,页面“相对性的达到合理的展示(自适应)”或者“保持统一效果的等比缩放(看起来差不多)”。

适配应关注哪些要素?

一般来说,我们需要关注的是:字体、高宽间距、图像(图标、图片)。

其中,图像相对要复杂一些,针对流量、清晰度等问题网上也有比较成熟的解决方案,比如:矢量化、字体化、image-set 等等,在此不做深入。在满足快速开发的需求下,我们使用较为偷懒的方式:利用 css 将图像限定在元素内( img 图片使用 [max-]width: 100% ,背景图像使用 background-size ),布局只针对元素进行。

另外要考虑到,设计师设计视觉稿时使用什么样的宽度,才能既满足设计自身的需求又能让前端开发方便的切图适配。

举个例子

围绕这三要素,我们用一个小例子来说明接下来要介绍的三种方案的实现方式,按 640px 标准需实现的效果如图:

app.jpg

固定高度,宽度自适应

这是目前最通用的一种做法,属于自适应布局,viewport width 设置为 device-width,以较小宽度(如 320px)的视觉稿作为参照进行布局。垂直方向的高度和间距使用定值,水平方向混合使用定值和百分比或者利用弹性布局,最终达到“当手机屏幕变化时,横向拉伸或者填充空白的效果”。图像元素根据容器情况,使用定值或者 background-size 缩放。

粗略浏览了下一些大厂的首页,像百度、腾讯、Facebook、Twitter 都是采用的这种方案。

要点:

以小宽度作为参照是因为如果布局满足了小宽度的摆放,当屏幕变宽时,简单的填充空白就可以了;而如果反过来就可能造成“挤坏了”,考虑 header 区域,左测 logo 右测横向 nav 的情况。

需要小宽度的布局,又需要大宽度的图像,这是一个矛盾点。

320px 过于窄小,不利于页面的设计;只能设计横向拉伸的元素布局,存在很多局限性。

兼容性较好。

实现比较简单,样式中的尺寸都按照视觉稿二分之一大小设置,查看效果和代码。

固定宽度,viewport 缩放

视觉稿、页面宽度、viewport width 使用统一宽度,利用浏览器自身缩放完成适配。页面样式(包括图像元素)完全按照视觉稿的尺寸,使用定值单位 (px、em)即可完成。

优点:

开发简单:缩放交给浏览器,完全按视觉稿切图。

还原精准:绝对等比例缩放,可以精准还原视觉稿(不考虑清晰度的情况下)。

测试方便:在PC端即可完成大部分测试,手机端只需酌情调整一些细节(比如图标、字体混合排列时,因为字体不同造成的对齐问题)。

存在的问题:

像素丢失:对于一些分辨率较低的手机,可能设备像素还未达到指定的 viewport 宽度,此时屏幕的渲染可能就不准确了。比较常见的是边框“消失”了,不过随着手机硬件的更新,这个问题会越来越少的。

缩放失效:某些安卓机不能正常的根据 meta 标签中 width 的值来缩放 viewport,需要配合 initial-scale 。

文本折行:存在于缩放失效的机型中,某些手机为了便于文本的阅读,在文本到达 viewport 边缘(非元素容器的边缘)时即进行折行,而当 viewport 宽度被修正后,浏览器并没有正确的重绘,所以就发现文本没有占满整行。一些常用的段落性文本标签会存在该问题。

缩放失效问题需通过 js 动态设定 initial-scale

1

  1. var fixScreen = function() {
  2. var metaEl = doc.querySelector(‘meta[name=”viewport”]’),
  3. metaCtt = metaEl ? metaEl.content : ,
  4. matchScale = metaCtt.match(/initial\-scale=([\d\.]+)/),
  5. matchWidth = metaCtt.match(/width=([^,\s]+)/);
  6. if ( metaEl && !matchScale && ( matchWidth && matchWidth[1] != ‘device-width’) ) {
  7. var width = parseInt(matchWidth[1]),
  8. iw = win.innerWidth || width,
  9. ow = win.outerWidth || iw,
  10. sw = win.screen.width || iw,
  11. saw = win.screen.availWidth || iw,
  12. ih = win.innerHeight || width,
  13. oh = win.outerHeight || ih,
  14. ish = win.screen.height || ih,
  15. sah = win.screen.availHeight || ih,
  16. w = Math.min(iw,ow,sw,saw,ih,oh,ish,sah),
  17. scale = w / width;
  18. if ( ratio < 1) {
  19. metaEl.content += ‘,initial-scale=’ + ratio + ‘,maximum-scale=’ + ratio + ‘, minimum-scale=’ + scale + ‘,user-scalable=no’;
  20. }
  21. }
  22. }

文本折行问题可以通过 css

文本折行问题可以通过 css 样式解决。

既然该方案使用固定宽度值,那么这个值是多少合适呢?首要考虑的是主流分辨率,可参考Screen Sizes和友盟指数的数据;其次要考虑设计部门常用的设计尺寸,综合协调,最终确定一个合适的值。

该处使用640px来实现例子,查看效果和代码。

利用 rem 布局

依照某特定宽度设定 rem 值(即 html 的 font-size),页面任何需要弹性适配的元素,尺寸均换算为 rem 进行布局;当页面渲染时,根据页面有效宽度进行计算,调整 rem 的大小,动态缩放以达到适配的效果。利用该方案,还可以根据 devicePixelRatio 设定 initial-scale 来放大 viewport,使页面按照物理像素渲染,提升清晰度。

优点:

清晰度高,能达到物理像素的清晰度。

能解决 DPR 引起的“1像素”问题。

向后兼容较好,即便屏幕宽度增加、PPI 增加该方案依旧适用。

缺点:

适配 js 需尽可能早进入,减少(避免)viewport 变化引起的重绘。

某些Android机会丢掉 rem 小数部分。

需要预编译库进行单位转换。

开发时,css 及 js 都以 16px 作为基数换算 rem,借助预编译库(以 scss 为例),我们设定一个动态尺寸单位 $ppr: 750px/16px/1rem ,即 pixel per rem,任何使用弹性尺寸的地方写作:width: 100px/$ppr。

动态调整 rem 的方法如下:

02

  1. var fixScreen = function() {
  2. var metaEl = doc.querySelector(‘meta[name=”viewport”]’),
  3. metaCtt = metaEl ? metaEl.content : ,
  4. matchScale = metaCtt.match(/initial\-scale=([\d\.]+)/),
  5. matchWidth = metaCtt.match(/width=([^,\s]+)/);
  6. if ( !metaEl ) { // REM
  7. var docEl = doc.documentElement,
  8. maxwidth = docEl.dataset.mw || 750// 每 dpr 最大页面宽度
  9. dpr = isIos ? Math.min(win.devicePixelRatio, 3) : 1,
  10. scale = 1 / dpr,
  11. tid;
  12. docEl.removeAttribute(‘data-mw’);
  13. docEl.dataset.dpr = dpr;
  14. metaEl = doc.createElement(‘meta’);
  15. metaEl.name = ‘viewport’;
  16. metaEl.content = fillScale(scale);
  17. docEl.firstElementChild.appendChild(metaEl);
  18. var refreshRem = function() {
  19. var width = docEl.getBoundingClientRect().width;
  20. if (width / dpr > maxwidth) {
  21. width = maxwidth * dpr;
  22. }
  23. var rem = width / 16;
  24. docEl.style.fontSize = rem + ‘px’;
  25. };
  26. //…
  27. refreshRem();
  28. }
  29. }

代码实现主要参考淘宝网触屏版的适配方法,查看效果和代码,其中 scss 的写法可以参见这里。

注意,较小的背景图(比如一些 icon)的 background-size 不要使用具体 rem 数值,裁剪后会出现边缘丢失。应使用与元素等尺寸切图,设定 background-size: cover|contain 来缩放。

总结

总的来看,目前还没有完美的解决方案,这些也只是尽可能的满足快速开发、简单适配需求的通用方案。其中对于一些较为细节的问题(比如字体的点阵尺寸、非弹性的定值需求)未做讨论。实际开发过程中,更应该综合考虑项目类型、资源成本、人员配合等多方面的因素,选择合适的方案。

代码实现中使用到的 mobile-util.js 对定宽和 rem 适配进行了整合,源码在此。

【责任编辑:chenqingxiang TEL:(010)68476606】

移动端meta

吴阳 No Comments

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> //文本为UTF-8
<meta charset="utf-8"> //编码为UTF-8
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"> 
//width - viewport的宽度 height - viewport的高度 initial-scale - 初始的缩放比例 minimum-scale - 允许用户缩放到的最小比例 maximum-scale - 允许用户缩放到的最大比例 user-scalable - 用户是否可以手动缩放
<meta content="yes" name="apple-mobile-web-app-capable"> 
//网站开启对web app程序的支持
<meta content="black" name="apple-mobile-web-app-status-bar-style"> 
//在 web app 应用下状态条(屏幕顶部条)的颜色;默认值为 default(白色),可以定为 black(黑色)和 black-translucent(灰色半透明)
<meta content="telephone=no" name="format-detection">
//使设备浏览网页时对数字不启用电话功能(不同设备解释不同,iTouch 点击数字为存入联系人,iPhone 为拨打电话),忽略将页面中的数字识别为电话号码。若需要启用电话功能将 telephone=yes 即可,若在页面上面有 Google Maps, iTunes 和 YouTube 的链接会在ios设备上打开相应的程序组件。

http-equiv
属性为名称/值对提供了名称。并指示服务器在发送实际的文档之前先在要传送给浏览器的 MIME 文档头部包含名称/值对。
当服务器向浏览器发送文档时,会先发送许多名称/值对。虽然有些服务器会发送许多这种名称/值对,但是所有服务器都至少要发送一个:content-type:text/html。这将告诉浏览器准备接受一个 HTML 文档。
使用带有 http-equiv 属性的标签时,服务器将把名称/值对添加到发送给浏览器的内容头部.
重定向
<meta http-equiv=”Refresh” content=”5;url=http://www.w3school.com.cn” />
释义:您将在 5 秒内被重定向到新的地址。