zoukankan      html  css  js  c++  java
  • 根据经纬度获取距离

      # 根据经纬度计算距离
        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
  • 相关阅读:
    jQuery自定义插件
    jQuery基础入门学习
    jQuery事件机制
    css实现块级元素的水平居中的2种常用方法
    文本编辑的css常用属性
    js的事件的绑定
    js正则表达式(常用)
    汇编初入门debug实操
    JAVA新手笔记 Intent对象和Bundle对象
    OS X运行AFNI的AlphaSim提示libgomp.1.dylib找不到的解决办法
  • 原文地址:https://www.cnblogs.com/polax/p/7079266.html
Copyright © 2011-2022 走看看