zoukankan      html  css  js  c++  java
  • 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 如何根据地址 获取经纬度

  • 相关阅读:
    oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
    oracle 常用语句
    android udp 无法收到数据 (模拟器中)
    android DatagramSocket send 发送数据出错
    AtCoder ABC 128E Roadwork
    AtCoder ABC 128D equeue
    AtCoder ABC 127F Absolute Minima
    AtCoder ABC 127E Cell Distance
    CodeForces 1166E The LCMs Must be Large
    CodeForces 1166D Cute Sequences
  • 原文地址:https://www.cnblogs.com/ccdv/p/13558685.html
Copyright © 2011-2022 走看看