PHP:利用php cURL来获取腾讯地图的相关数据

利用php cURL来获取腾讯地图的相关数据

在开发过程中,经常会用到地图、定位、城市列表等相关的数据,这时候我们就需要调用腾讯地图相应的接口来获取这些数据。今天就说一下如何利用php的cURL函数来获取这些数据。采用三个简单的例子来说明:
1、获取中国省市、城市列表
2、根据经纬度获取该地点的相关信息
3、根据详细位置获取该地点的经纬度
【php cURL】

 cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多工具和协议。PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 httphttpsftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

使用php cURL函数的基本思想:
1、先使用curl_init()初始化cURL会话,
2、接着通过curl_setopt()设置需要的全部选项
3、使用curl_exec()来执行会话
4、当执行完会话后使用curl_close()关闭会话。

<?php
    $ch = curl_init("http://www.example.com/");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
?>

[腾讯地图APi]

腾讯地图Webservice API是基于HTTP协议的数据接口,开发者可以使用任何客户端、服务器和开发语言,按照腾讯地图Webservice API规范,按需构建HTTP请求,并获取结果数据。
前提:获取腾讯地图的相应数据之前,需要先去腾讯地图API申请一个开发者密钥。

(1)逆地址解析(坐标位置描述)请求URL:
http://apis.map.qq.com/ws/geocoder/v1/?location=经度,纬度&key=开发者密钥
(2)地址解析(地址转坐标)请求URL:
http://apis.map.qq.com/ws/geocoder/v1/?address=地点&key=开发者密钥
(3)行政区划(获取全部行政区划数据)请求URL:
http://apis.map.qq.com/ws/district/v1/list?key=开发者密钥

具体信息可以参考腾讯地图API:腾讯地图API

【代码实现(例子)】
1、获取中国省市、城市列表:
*注:以下代码中出现的一些参数(例如result、name),需要参考腾讯地图API调用相应接口之后的响应结果。
这里写图片描述

<?php
    //初始化cURL会话
    $ch = curl_init();
    //设置需要的选项
    curl_setopt($ch, CURLOPT_URL, "http://apis.map.qq.com/ws/district/v1/list?key=密钥");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //将curl_exec()获取的信息以字符串返回,而不是直接输出
    $data = curl_exec($ch);
    $map = json_decode($data);
    $arr = $map->result;
    //输出中国省市列表
    for ($i = 0; $i < 34; $i++) { 
        echo $arr[0][$i]->name." ";
    }
    echo "<br/><br/>";
    //输出中国城市列表
    for ($i = 0; $i < 493; $i++) {
        echo $arr[1][$i]->name." ";
    }
    //echo json_encode($res, JSON_UNESCAPED_UNICODE);
    curl_close($ch);
?>

这里写图片描述

2、根据经纬度获取该地点的相关信息:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://apis.map.qq.com/ws/geocoder/v1/?location=39.984154,116.307490&key=密钥");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);

    $map = json_decode($data);
    $res = $map->result;
    echo $res->address."<br/>";
    $ad_info = $res->ad_info;
    echo $ad_info->nation."<br/>";
    echo $ad_info->province."<br/>";
    echo $ad_info->district."<br/>";
?>

3、根据详细位置获取该地点的经纬度:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://apis.map.qq.com/ws/geocoder/v1/?address=湖南省张家界市永定区天门山镇&key=密钥");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    $map = json_decode($data);
    $location = $map->result->location;
    echo "经度:".$location->lng."<br/>";
    echo "纬度:".$location->lat."<br/>";
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值