1. 程式人生 > >java+city-picker自定義省市區選擇

java+city-picker自定義省市區選擇

運用city-picker建立省市區選擇。

方法

匯入js檔案

<script src="/jquery.js"></script><!-- jQuery is required -->
<script src="/city-picker.data.js"></script>
<script src="/city-picker.js"></script>
加上標籤 data-toggle="city-picker"
<div data-toggle="city-picker">
   <input readonly type="text" data-toggle="city-picker" >
</div>
這樣一個全國省份的省市區選擇demo就做好了

原理是通過js調取city-picker.data.js裡面的json資料。然後展示輸入,json格式如圖

<span style="white-space:pre">	</span>86: {
                'A-G': [
                    {code: '340000', address: '安徽省'},
                    {code: '110000', address: '北京市'},
                    {code: '500000', address: '重慶市'},
                    {code: '350000', address: '福建省'},
                    {code: '620000', address: '甘肅省'},
                    {code: '440000', address: '廣東省'},
                    {code: '450000', address: '廣西壯族自治區'},
                    {code: '520000', address: '貴州省'}],
                'H-K': [
                    {code: '460000', address: '海南省'},
                    {code: '130000', address: '河北省'},
                    {code: '230000', address: '黑龍江省'},
                    {code: '410000', address: '河南省'},
                    {code: '420000', address: '湖北省'},
                    {code: '430000', address: '湖南省'},
                    {code: '320000', address: '江蘇省'},
                    {code: '360000', address: '江西省'},
                    {code: '220000', address: '吉林省'}],
                'L-S': [
                    {code: '210000', address: '遼寧省'},
                    {code: '150000', address: '內蒙古自治區'},
                    {code: '640000', address: '寧夏回族自治區'},
                    {code: '630000', address: '青海省'},
                    {code: '370000', address: '山東省'},
                    {code: '310000', address: '上海市'},
                    {code: '140000', address: '山西省'},
                    {code: '610000', address: '陝西省'},
                    {code: '510000', address: '四川省'}],
                'T-Z': [
                    {code: '120000', address: '天津市'},
                    {code: '650000', address: '新疆維吾爾自治區'},
                    {code: '540000', address: '西藏自治區'},
                    {code: '530000', address: '雲南省'},
                    {code: '330000', address: '浙江省'}]
            },
            110000: {
                110100: '北京市',
            },
            110100: {
                110101: '東城區',
                110102: '西城區',
                110105: '朝陽區',
                110106: '豐臺區',
                110107: '石景山區',
                110108: '海淀區',
                110109: '門頭溝區',
                110111: '房山區',
                110112: '通州區',
                110113: '順義區',
                110114: '昌平區',
                110115: '大興區',
                110116: '懷柔區',
                110117: '平谷區',
                110228: '密雲縣',
                110229: '延慶縣'
            },
            120000: {
                120100: '天津市'
            },
            120100: {
                120101: '和平區',
                120102: '河東區',
                120103: '河西區',
                120104: '南開區',
                120105: '河北區',
                120106: '紅橋區',
                120110: '東麗區',
                120111: '西青區',
                120112: '津南區',
                120113: '北辰區',
                120114: '武清區',
                120115: '寶坻區',
                120116: '濱海新區',
                120221: '寧河縣',
                120223: '靜海縣',
                120225: '薊縣'
            },
            130000: {
                130100: '石家莊市',
                130200: '唐山市',
                130300: '秦皇島市',
                130400: '邯鄲市',
                130500: '邢臺市',
                130600: '保定市',
                130700: '張家口市',
                130800: '承德市',
                130900: '滄州市',
                131000: '廊坊市',
                131100: '衡水市'
            },
還有很多很多。這是全國的,但是如何從自己資料庫自定義資料給前端呢。
觀察js結構可以得到這裡面都是一些樹形結構

86:{}裡面第一層是選擇第二層是省份程式碼

跟86同層的都是省市的樹形結構和市區的樹形結構。

這樣我們可以從資料庫中找出我們需要顯示的省市區資料給city-picker

先附上程式碼:

<span style="white-space:pre">			</span>// 增加省份
			PageData tempPd = new PageData();
			List<PageData> provinces = ordersService.listAllProvince(pd);//獲取所有的省份
			tempPd.put("中國", provinces);
			data.put("86", tempPd);
			// 增加城市
			List<PageData> citys = ordersService.listAllCity(pd);//獲取所有的城市和省份
			Map<String, Object> provinceMap = new HashMap<>();
			for (PageData index : citys) {
				if (provinceMap.get(index.getString("province_Code")) == null) {
					Map<String, Object> cityMap = new HashMap<>();
					cityMap.put(index.getString("city_Code"), index.getString("city_Name"));
					provinceMap.put(index.getString("province_Code"), cityMap);
				} else {
					((HashMap<String, Object>) provinceMap.get(index.getString("province_Code")))
							.put(index.getString("city_Code"), index.getString("city_Name"));
				}
			}
			data.putAll(provinceMap);
			// 增加中心
			List<PageData> centers = centerService.listAll(pd);//獲取所有中心
			Map<String, Object> centerMap = new HashMap<>();
			for (PageData index : centers) {
				if (index.get("center_City") == null) {
					continue;
				}
				if (centerMap.get(index.getString("center_City")) == null) {
					Map<String, Object> center = new HashMap<>();
					center.put(String.valueOf(index.get("CENTER_ID")), index.getString("CENTER_MC"));
					centerMap.put(index.getString("center_City"), center);
				} else {
					((HashMap<String, Object>) centerMap.get(index.get("center_City"))).put(String.valueOf(index.get("CENTER_ID")), index.getString("CENTER_MC"));
				}
			}
			data.putAll(centerMap);

這裡面的PageData是繼承的hashMap。獲取所有城市的時候連表查詢,查處城市所在省,欄位分別是province_Code,province_Name,city_Code,city_Name;

查詢中心(也就是區)的時候查詢中心所在城市,欄位分別是city_Code,city_Name,center_Name,center_Code.

把查出來的資料封裝成city-picker.data.js一樣格式資料後,轉成json輸出到前端,然後前端用給出的json資料顯示city-pick就能自定義省市區三級聯動了