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

xiaoxiao2021-02-28  52

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

【前言】

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


【php cURL】

cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多工具和协议。PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、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/>"; ?>


*注:如何任何错误或者疑问欢迎指出

转载请注明原文地址: https://www.6miu.com/read-52367.html

最新回复(0)