早睡早起,方能养生!
Sleep early rise early, square can preserve one's health!

腾讯地图最新版mysql数据库,适用于三级联动,附获取代码

super
2021-08-26 10:03
views 162

数据库于2021-08-20日生成。

 

对直辖市处理:添加相同名称的省(或者说是市)名。

 

对县级市、省直辖县/区、自治区/县、等处理:添加相同名称作为市。

 

数据库下载:点击下载

 

数据库下载2:Github

 

 

最新版获取代码:

 

PHP:

 

$url = "https://apis.map.qq.com/ws/district/v1/list";

$result = curl_get($url . '?key=你的腾讯地图key');

if ($result['status'] != 0) {
    exit('请求失败');
}

foreach ($result['result'] as $k1 => $v1) {
    foreach ($v1 as $k => $v) {
        $id = $v['id'];

        $first_2  = substr($id, 0, 2);
        $middle_2 = substr($id, 2, 2);
        $last_2   = substr($id, 4, 2);

        if ($last_2 == '00') {
            if ($middle_2 == '00') {
                // 此为省
                // 添加省份
                $province_id = Db::name('tencent_map')->insertGetId([
                    'superior_id' => 0,
                    'name'        => $v['fullname'],
                    'level'       => 1,
                    'code'        => $v['id'],
                    'code2'       => $first_2
                ]);
                $array       = [
                    '北京市',
                    '天津市',
                    '上海市',
                    '重庆市'
                ];
                if (in_array($v['fullname'], $array)) {
                    // 添加直辖市同名二级市
                    Db::name('tencent_map')->insertGetId([
                        'superior_id' => $province_id,
                        'name'        => $v['fullname'],
                        'level'       => 2,
                        'code'        => $first_2 . '0100',
                        'code2'       => '01'
                    ]);
                }
            } else {
                // 此为市
                $province = Db::name('tencent_map')
                    ->where([
                        'level' => 1,
                        'code2' => $first_2
                    ])
                    ->field(['id'])
                    ->find();
                // 添加市
                Db::name('tencent_map')->insertGetId([
                    'superior_id' => $province['id'],
                    'name'        => $v['fullname'],
                    'level'       => 2,
                    'code'        => $v['id'],
                    'code2'       => $middle_2
                ]);
            }
        } else {
            // 此为区
            $province = Db::name('tencent_map')
                ->where([
                    'level' => 1,
                    'code2' => $first_2
                ])
                ->field(['id'])
                ->find();
            $city_id  = Db::name('tencent_map')
                ->where([
                    'superior_id' => $province['id'],
                    'level'       => 2,
                    'code2'       => $middle_2,
                    'add_type'    => 1
                ])
                ->value('id');
            // 如果是县级市,省直辖县/区,自治县/区,添加相同名称作为市
            if (!$city_id) {
                $city_id = Db::name('tencent_map')
                    ->insertGetId([
                        'superior_id' => $province['id'],
                        'name'        => $v['fullname'],
                        'level'       => 2,
                        'code'        => $first_2 . $middle_2 . '00',
                        'code2'       => $middle_2,
                        'add_type'    => 2
                    ]);
            }
            Db::name('tencent_map')->insertGetId([
                'superior_id' => $city_id,
                'name'        => $v['fullname'],
                'level'       => 3,
                'code'        => $v['id'],
                'code2'       => $last_2
            ]);
        }
    }
}

分享
0 条讨论
top