URLlist接口: 获取全部行政区划数据。该请求为GET请求。

http://apis.map.qq.com/ws/district/v1/list

getchildren接口:获取指定行政区划的子级行政区划。该请求为GET请求。



http://apis.map.qq.com/ws/district/v1/getchildren



search接口:根据关键词搜索行政区划。该请求为GET请求。

http://apis.map.qq.com/ws/district/v1/search

参数

必填

说明

示例

list接口参数:

无任何参数

getchildren接口参数:


id

-

父级行政区划ID,缺省时则返回最顶级行政区划

id=110000

search接口参数:根据关键词搜索行政区划

keyword

-

搜索关键词

keyword=香格里拉,注意参数值要进行URL编码

通用参数:

key


开发密钥(key)

key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

output

-

返回格式:支持json/jsonp,默认json

output=json

callback

-

jsonp方式回调函数

callback=function1


响应结果

名称

类型

必有

说明

status

number


状态码,0为正常,

310请求参数信息有误,

311key格式错误,

306请求有护持信息请检查字符串,

110请求来源未被授权

message

string


状态说明

result

array


结果数组,第0项,代表一级行政区划,第1项代表二级行政区划,以此类推;使用getchildren接口时,仅为指定父级行政区划的子级

 

id

number


行政区划唯一标识

name

string

-

简称,如“内蒙古”

fullname

string


全称,如“内蒙古自治区”

location

string


中心点坐标

 

lat

number


纬度

lng

number


经度

pinyin

array

-

行政区划拼音,每一下标为一个字的全拼,如:["nei","meng","gu"]

cidx

array

-

子级行政区划在下级数组中的下标位置


调用示例

// Get请求,注意参数值要进行URL编码
// list接口:获取全部行政区划数据



http://apis.map.qq.com/ws/district/v1/list? key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77



// 本接口返回数据量较大,要查看效果请打开以上链接
// getchildren接口:获取北京市的子级行政区划



http://apis.map.qq.com/ws/district/v1/getchildren? &id=110000& key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

// Get请求,注意参数值要进行URL编码
// search接口:搜索关键词为北京的行政区划


http://apis.map.qq.com/ws/district/v1/search? &keyword=香格里拉&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77


http://apis.map.qq.com/ws/district/v1/list? key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

// 本接口返回数据量较大,要查看效果请打开以上链接
// getchildren接口:获取北京市的子级行政区划

http://apis.map.qq.com/ws/district/v1/getchildren? &id=110000& key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

// Get请求,注意参数值要进行URL编码
// search接口:搜索关键词为北京的行政区划

http://apis.map.qq.com/ws/district/v1/search? &keyword=香格里拉&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

 

// getchildren接口响应示例,list和search接口返回结果与此类似:

{

    "status":
 0,

    "message":
"query
 ok",

    "result":
 [

        [

            {

                "id":
"110101",

                "fullname":
"东城区",

                "location":
 {

                    "lat":
"39.928353",

                    "lng":
"116.416357"

                }

            },

            {

                "id":
"110102",

                "fullname":
"西城区",

                "location":
 {

                    "lat":
"39.912289",

                    "lng":
"116.365868"

                }

            },

            {

                "id":
"110105",

                "fullname":
"朝阳区",

                "location":
 {

                    "lat":
"39.921470",

                    "lng":
"116.443108"

                }

            },

           //以下省略

        ]

   ]

}

使用如下接口地址可获取全部的地址信息:



http://apis.map.qq.com/ws/district/v1/list? key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77


然后将地址信息进行转换后存入数据库中:代码如下:

$res = '接口获取到的地址的json数据';



$arr = json_decode($res, true);
        $p = M("areas_provinces");  //省信息表
        $c = M("areas_cities");  //市信息表
        $a = M("areas_country");   //县/区表
  	//存入省信息
        $arr_province = $arr['result'][0];
        foreach ($arr_province as $a1) {
            $p->create($a1);
            $p->add();
        }
  	//存入市信息
        $arr_cities = array();
        $arr_country = array();
        foreach ($arr['result'][0] as $v) {
//对四个直辖市进行单独处理
            if (in_array($v['id'], array('110000', '120000', '500000', '310000'))) {
                $v['pid'] = $v['id'];
                $arr['result'][1][] = $v;
                $start = $v['cidx'][0];
                $end = $v['cidx'][1];
                for ($i = $start; $i <= $end; $i++) {
//                    $arr['result'][2][$i]['pid'] = $v['id'];
                    $arr_country[] = $arr['result'][1][$i];
                }
                $arr_cities[] = $v;
            } else {
                if (isset($v['cidx'])) {
                    $start = $v['cidx'][0];
                    $end = $v['cidx'][1];
                    for ($i = $start; $i <= $end; $i++) {
                        $arr['result'][1][$i]['pid'] = $v['id'];
                        $arr_cities[] = $arr['result'][1][$i];
                    }
                }
            }
        }

        foreach ($arr_cities as $a1) {
            $c->create($a1);
            $c->add();
        }

	//存入县区信息
        foreach ($arr['result'][1] as $v) {
            if (isset($v['cidx'])) {
                $start = $v['cidx'][0];
                $end = $v['cidx'][1];
                for ($i = $start; $i <= $end; $i++) {
                    $arr['result'][2][$i]['pid'] = $v['id'];
                    $arr_country[] = $arr['result'][2][$i];
                }
            }
        }

            foreach ($arr_country as $a1) {
                $a->create($a1);
                $a->add();
            }