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 如何根據地址 獲取經緯度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM