2019-10-10 19:09:26
围观(3921)
之前项目需要使用百度地图的 API 接口,所以无意间发现了百度地图有提供行政区划的 adcode 数据。
https://lbsyun.baidu.com/index.php?title=open/dev-res
下载之后打开数据是这样的:
然后就萌生了利用这个数据进行开发地区三级联动功能。
如果还不知道三级联动是什么功能?看这个:
其实就是先选择省份,然后根据选择的省份把第二个下拉框的数据设置为该省份的市级。共有三层选择,所以叫三级联动。
回到正题,现在有了百度提供的数据,可以将 xlsx 文件的数据导入到数据库。最简单的方法就是将文件转为 csv 格式,然后使用类似 phpmyadmin 的工具进行导入到数据库。
开发思路
现在选择北京昌平区为例。
先把省级的数据去重,得到所有省份,显示到下拉框中。下拉框的 value 设置为 省代码。
TP 框架可以在模型中这样写:
public function get_province() { return $this->group('province_code')->select(); //province_code 为省代码 }
然后根据选择的省代码,查库获取到市级。比如此时选择北京 省代码为 110000
查库条件为 省代码等于 110000 的市级。结果如图
注意,此处也需要去重,最后获取到的还是北京,因为北京是直辖市。
代码:
public function get_city($province_code) { return $this->where('province_code', $province_code)->group('city_code')->select(); }
此时,可以拿到选择的市级代码,最后拿这个代码去获取区县即可。
最后将用户选择的区县代码存储,即可知道该用户选择的具体省市区了。
网络上很多插件或者第三方的数据,但百度地图在这方面应该还是比较权威的,为了数据稳定性,还是用这个比较靠谱。
第 1 条附言 2021-01-14 16:40:16
发现本文只写了代码及获取百度的 Excel 文件,现在提供下 MySQL 数据库的,百度云:
https://pan.baidu.com/s/1of8dMqRfe6HrWSKxTYyuoA
提取码:5fw0
本文地址 : bubaijun.com/page.php?id=141
版权声明 : 未经允许禁止转载!
上一篇文章: TP 或者 Laravel 框架实现无限级分类
下一篇文章: 三合一支付二维码原理及开发过程