小白兔晒黑了

导航

 
  # 根据经纬度计算距离
    private function getdistance($lng1,$lat1,$lng2,$lat2)
    {
        //将角度转为狐度
        $radLat1 = deg2rad($lat1);
        $radLat2 = deg2rad($lat2);
        $radLng1 = deg2rad($lng1);
        $radLng2 = deg2rad($lng2);
        $a = $radLat1-$radLat2;//两纬度之差,纬度<90
        $b = $radLng1-$radLng2;//两经度之差纬度<180
        $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2))) * 6378.137;
        return $s;
    }

    # 获取根据坐标获取驾车距离
    private function get_map_distance($lng1, $lat1, $lng2, $lat2) {
        //$this->autoRender = false;
        $mode = 'driving';      //选择模式,driving 驾车 ; walking 步行
        $tactics = 12; //导航路线类型,10:不走高速;11:最少时间;12:最短路径。
        $map_api = "http://api.map.baidu.com/direction/v1/routematrix?output=json&mode=".$mode."&tactics=".$tactics."&origins=".$lat1.",".$lng1."&destinations=".$lat2.",".$lng2."&ak=这里换成你的ak";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $map_api);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        curl_close($ch);

        if (strlen($output) == 0)
        {
            return "timeout";
        }
        $output = get_object_vars(json_decode($output));
        $output['result'] = get_object_vars($output['result']);
        $output['info'] = get_object_vars($output['info']);
        $output['info']['copyright'] = get_object_vars($output['info']['copyright']);
        $output['result']['elements']['0'] = get_object_vars($output['result']['elements']['0']);
        $output['result']['elements']['0']['distance'] = get_object_vars($output['result']['elements']['0']['distance']);
        $output['result']['elements']['0']['duration'] = get_object_vars($output['result']['elements']['0']['duration']);

        if ($output['status'] == 0)
        {
            $reput['distance']['jl_t'] = $output['result']['elements']['0']['distance']['text'];
            $reput['distance']['jl_v'] = $output['result']['elements']['0']['distance']['value'];
            $reput['distance']['time'] = $output['result']['elements']['0']['duration']['text'];
        }
        else
        {
            $reput['distance']['jl_t'] = 0;
            $reput['distance']['jl_v'] = 0;
            $reput['distance']['time'] = 0;
        }

        return $reput;
    }

 

    /**    
    * 查找一定范围内的经纬度值   
    * 传入值:纬度  经度  查找半径(m)    
    * 返回值:最小纬度、经度,最大纬度、经度    
    */   
    public function getAround($lat,$lon,$raidus)   {
       $PI = 3.14159265;        
       // 圆周率                    
       $EARTH_RADIUS = 6378137;     // 地球半径      
       $RAD = Math.PI / 180.0;      // 弧度                 
       $latitude = $lat;           
       $longitude = $lon;                       
       $degree = (24901*1609)/360.0;           
       $raidusMile = $raidus;                       
       $dpmLat = 1/$degree;            
       $radiusLat = $dpmLat*$raidusMile;           
       $minLat = $latitude - $radiusLat;           
       $maxLat = $latitude + $radiusLat;
       $mpdLng = $degree*cos($latitude * ($PI/180));           
       $dpmLng = 1 / $mpdLng;            
       $radiusLng = $dpmLng*$raidusMile;           
       $minLng = $longitude - $radiusLng;           
       $maxLng = $longitude + $radiusLng;          
       $result['minwei']=$minLat;         
       $result['minjing']=$minLng;         
       $result['maxwei']=$maxLat;         
       $result['maxjing']=$maxLng;         
       return $result;   
    }

 sql

round(6378.138*2*asin(sqrt(pow(sin( ($lat*pi()/180-`map_weidu`*pi()/180)/2),2)+cos($lat*pi()/180)*cos(`map_weidu`*pi()/180)* pow(sin( ($lng*pi()/180-`map_jingdu`*pi()/180)/2),2)))*1000)  AS juli

 

posted on 2017-06-26 10:04  小白兔晒黑了  阅读(201)  评论(0编辑  收藏  举报