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

第一种:(官方的):

    使用流程:直接 复制下面方法到项目文件中,只需要传个地址参数,其他代码不用动 。

/**
     * 搜索地址,查询周边的位置  ()
     */
    public function query_address($key_words){
        $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=".$key_words; 

        $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);
         // print_r($result);
        // $res = $result['data'][0];
        return $result;
         //echo json_encode(['error_code'=>'SUCCESS','reason'=>'查询成功','result'=>$result);
    }


示例:


返回值:有很多与参数地址相近的经纬度(一般默认取第一条数据,也就是下标是0的那条经纬度)

if(!empty($result['data'][0])){
                        $address = $result['data'][0];
                        // var_dump($result) ;
                        sleep(0.5);
                       //print_r($address);
                       $lat2 = $address['location']['lat'];
                       $lng2 = $address['location']['lng'];
}

第二种(经不起较大的访问量):

function (){     
        $address = "杭州市西湖国际科技大厦";        
        $url='http://apis.map.qq.com/ws/geocoder/v1/?address='.$address.'&key=免费的自己申请';  
        $result=file_get_contents($url); 
        $data = json_decode($result,TRUE);
        print_r($data);
}

说明:上面URL中的key要自己申请,免费的,本人是去腾讯地图申请的

返回结果:


附:key的申请方法


然后如下:



猜你喜欢

转载自blog.csdn.net/lw545034502/article/details/80341350