php三级城市获取值,中国城市三级联动数据获取方法

腾讯地图开放平台中获取全国行政区域的地址:http://lbs.qq.com/webservice_v1/guide-region.html;

接口信息如下:

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();

}

参考:http://blog.csdn.net/ning521513/article/details/54133732

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值