PHP用腾讯地图api根据地址获取经纬度的方法

方法一:

/**
* 通过地址获取经纬度
* @param int \(dic_id * @return array */ public function getAddress(\)address = '')
{

try {
$url = 'https://apis.map.qq.com/ws/geocoder/v1/?';
$param = [
'address' => $address,
'key' => $this->map_key,

];
\(string = ''; foreach (\)param as $k => $v) {
$string .= $k . '=' . $v . '&';
}
\(string = rtrim(\)string, '&');
\(curl = curl_init(); // 启动一个CURL会话 curl_setopt(\)curl, CURLOPT_URL, $url . \(string); curl_setopt(\)curl, CURLOPT_HEADER, 0);
curl_setopt(\(curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt(\)curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
\(output = curl_exec(\)curl); //返回api的json对象
//关闭URL请求
curl_close($curl);

\(result = json_decode(\)output, true);

if (isset($result) && $result['status']==0) {
\(this->json(\)result['result']['location'],'success',200);
} else {
$this->json([],'faile',-1);
}
} catch (\Exception $e) {

$this->json([],'faile',0);
}
}

其中的map_key,是你申请的腾讯地图的key。

方法二:


 /**
  * 搜素地址获得经纬度,解决小程序定位不准的问题
  * @param int $dic_id
  * @return array
  */
 public function getAddress_new($address = '')
 {

     try {
         $header[] = 'Referer: http://lbs.qq.com/webservice_v1/guide-suggestion.html';
         $header[] = 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
         $url ="http://apis.map.qq.com/ws/place/v1/suggestion/?&region=&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&keyword=".$address;

         $ch = curl_init();
         //设置选项,包括URL
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($ch, CURLOPT_HEADER, 0);

         //执行并获取HTML文档内容
         $output = curl_exec($ch);
         // print_r($output);die;
         //释放curl句柄
         curl_close($ch);
         // return $output;
         $result = json_decode($output,true);

         if (isset($result) && $result['status']==0) {
             $this->json($result['data'][0]['location'],'success',200);
         } else {
             $this->json([],'faile',-1);
         }

     } catch (\Exception $e) {

         $this->json([],'faile',0);
     }

 }

address是你传的地址,其他地方都不用改。

参考文章

php 如何根据地址 获取经纬度

posted @ 2020-08-25 11:28  逍遥闲人  阅读(2037)  评论(0)    收藏  举报