zoukankan      html  css  js  c++  java
  • 根据地图上的两个点各自的x,y坐标,计算出2点之间的直线距离。显示为公里、米

        /**
         * calc_map_distance() , 根据地图上的两个点各自的x,y坐标,计算出2点之间的直线距离
         * @param array $point_1 第1个点的x,y坐标    array( 101 , 202 )
         * @param array $point_2 第2个点的x,y坐标    array( 101 , 202 )
         * @param bool $calc_as_string 是否计算为字符串公里距离 , 如果未否返回数字
         * @return float | false | string
         */
        public static function calc_map_distance( $point_1=array(  ) , $point_2=array(  ) , $calc_as_string=true ) {
            if( empty( $point_1 ) || empty( $point_2 ) ){
                return false;
            }
            // 经纬度不存在,或者经纬度超过最大范围 +-180 , +-90 ,返回false
            $p1_x = $point_1[0];
            $p1_y = $point_1[1];
    
            $p2_x = $point_2[0];
            $p2_y = $point_2[1];
            if(
                $p1_x < -180 || $p1_x > 180
                || $p2_x < -180 || $p2_x > 180
                || $p1_y < -90 || $p1_y > 90
                || $p2_y < -90 || $p2_y > 90
            ){
                return false;
            }
    
            // 根据2点各自的坐标,计算2点之间直线距离的公式
            $distance = round(6378.138*2*asin(sqrt(pow(sin(( $p1_x *pi()/180-$p2_x*pi()/180)/2),2)+cos( $p1_x *pi()/180)*cos($p2_x*pi()/180)* pow(sin(( $p1_y *pi()/180-$p2_y*pi()/180)/2),2)))*1000);
    
            // 是否计算为字符串公里距离
            if( !$calc_as_string ){
                return $distance;
            }
    
            // 如果计算为字符串公里距离
            if( $distance / 1000 > 1 ){
                $k = (string)round( $distance / 1000 , 1 );
                $m = (string)$distance % 1000 ;
                $distance = "{$k}公里{$m}米";
            }
            else{
                $distance = "{$distance}米";
            }
            return $distance;
        }


    结果:"distance": "9799.1公里114米"

  • 相关阅读:
    我败在了盲目和没有计划
    跟我一起学.NetCore目录
    跟我一起学.NetCore之依赖注入作用域和对象释放
    跟我一起学.NetCore之Asp.NetCore启动流程浅析
    std::unordered_map
    Android apps for “armeabi-v7a” and “x86” architecture: SoC vs. Processor vs. ABI
    android studio 配置相关问题
    shell script
    vscode配置
    linux常用命令笔记
  • 原文地址:https://www.cnblogs.com/wangqishu/p/3811605.html
Copyright © 2011-2022 走看看