• 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 如何根据地址 获取经纬度

  • 相关阅读:
    数据结构与算法(一)--数组
    Lucene学习
    java虚拟机面试题(JVM)
    Java开发面试题归类( 题目篇)
    java虚拟机学习(六)
    java虚拟机学习(五)--垃圾收集器总结
    21_异常_第21天(异常、企业面试题,思维导图下载)
    20_集合_第20天(Map、可变参数、Collections)
    19_集合_第19天(List、Set)
    18_集合框架_第18天(集合、Iterator迭代器、增强for循环 、泛型)
  • 原文地址:https://www.cnblogs.com/ccdv/p/13558685.html
Copyright © 2020-2023  润新知