不败君

前端萌新&初级后端攻城狮

TP框架用百度提供的数据写三级联动效果

TP框架用百度提供的数据写三级联动效果

2019-10-10 19:09:26

围观(2122)

之前项目需要使用百度地图的 API 接口,所以无意间发现了百度地图有提供行政区划的 adcode 数据。

https://lbsyun.baidu.com/index.php?title=open/dev-res

1.jpg

下载之后打开数据是这样的:

2.jpg

然后就萌生了利用这个数据进行开发地区三级联动功能。

如果还不知道三级联动是什么功能?看这个:

3.jpg

其实就是先选择省份,然后根据选择的省份把第二个下拉框的数据设置为该省份的市级。共有三层选择,所以叫三级联动。

回到正题,现在有了百度提供的数据,可以将 xlsx 文件的数据导入到数据库。最简单的方法就是将文件转为 csv 格式,然后使用类似 phpmyadmin 的工具进行导入到数据库。


开发思路

现在选择北京昌平区为例。

先把省级的数据去重,得到所有省份,显示到下拉框中。下拉框的 value 设置为 省代码。

4.jpg

TP 框架可以在模型中这样写:

public function get_province()
{
    return $this->group('province_code')->select();
    //province_code 为省代码
}

然后根据选择的省代码,查库获取到市级。比如此时选择北京 省代码为 110000

查库条件为 省代码等于 110000 的市级。结果如图

5.jpg

注意,此处也需要去重,最后获取到的还是北京,因为北京是直辖市。

代码:

public function get_city($province_code)
{
    return $this->where('province_code', $province_code)->group('city_code')->select();
}

此时,可以拿到选择的市级代码,最后拿这个代码去获取区县即可。

6.jpg

最后将用户选择的区县代码存储,即可知道该用户选择的具体省市区了。

网络上很多插件或者第三方的数据,但百度地图在这方面应该还是比较权威的,为了数据稳定性,还是用这个比较靠谱。

第 1 条附言    2021-01-14 16:40:16

发现本文只写了代码及获取百度的 Excel 文件,现在提供下 MySQL 数据库的,百度云:

https://pan.baidu.com/s/1of8dMqRfe6HrWSKxTYyuoA 

提取码:5fw0

本文地址 : bubaijun.com/page.php?id=141

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语