首页 > 编程语言 >PHP根据经纬度获取两个地点之间的直线距离

PHP根据经纬度获取两个地点之间的直线距离

时间:2024-09-21 15:45:15浏览次数:9  
标签:直线 lat1 经纬度 lat2 str PHP lng2 lng1 distance

/**
 * 根据两点间的经纬度计算距离
 * @param $lat1 纬度1
 * @param $lng1 经度1
 * @param $lat2 纬度2
 * @param $lng2 经度2
 * @return array
 */
function get_distance($lat1, $lng1, $lat2, $lng2): array
{
    //赤道半径(单位m)
    $earthRadius = 6378137;
    $lat1        = ($lat1 * pi()) / 180;
    $lng1        = ($lng1 * pi()) / 180;

    $lat2 = ($lat2 * pi()) / 180;
    $lng2 = ($lng2 * pi()) / 180;

    $calcLongitude = $lng2 - $lng1;
    $calcLatitude  = $lat2 - $lat1;
    $stepOne       = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
    $stepTwo       = 2 * asin(min(1, sqrt($stepOne)));
    //米
    $calculatedDistance = abs(round(($earthRadius * $stepTwo), 2));
    //千米
    $calculatedDistanceKm = abs(round(($calculatedDistance / 1000), 2));
    if ($calculatedDistanceKm >= 1) {
        if ($calculatedDistanceKm > 999) {
            $distance_str = ">999 km";
        } else {
            $distance_str = $calculatedDistanceKm . " km";
        }
    } else {
        $distance_str = $calculatedDistance . " m";
    }
    return [
        'distance'     => $calculatedDistance,
        'distance_str' => $distance_str,
    ];
}

  

标签:直线,lat1,经纬度,lat2,str,PHP,lng2,lng1,distance
From: https://www.cnblogs.com/shemmor/p/18424109

相关文章

  • PHP转换ip地址
    ip转换/***ip转换整型*@paramint|string|null$ipip地址*@returnint|string|null*/functionmy_ip2long($ip){$res=false;if(filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)){$res=sprintf('%u',ip2long($ip));}......
  • PHP获取指定日期n天前后的日期列表
    /***获取指定日期n天前后的日期列表*@paramstring$date日期*@paramint$day_num天数*@paramstring$cate类型*@paramstring$format格式*@returnarray*/functionget_date_ab_list(string$date,int$day_num,string$cate='b',string$form......
  • PHP美化打印输出并结束程序执行
    话不多说,直接附上代码if(!function_exists('dd')){/***@notes:打印输出*@parammixed$vars*@returnvoid*@author:lavender*@time:2024/7/159:33*/functiondd(...$vars){/*ob_start();var_......
  • PHP抽奖算法
    一、初始化奖品id奖品的idpid奖品的自定义idtype奖品类型,1、虚拟奖品2、实物奖品3、礼包码待扩充name奖品名称total奖品总数chance获奖概率/抽奖基数10000daynum每日数量限制pay充值限制$prize=[['id'=>1,'pid'=>11,'type'=>1,'name'=>'典藏......
  • Thinkphp8安装topthink/think-captcha验证码的和使用方法
    ThinkPHP8默认没有验证码,安装验证码可以使用composer来安装验证码一、安装验证码执行composer安装验证码composerrequiretopthink/think-captcha二、使用方法1、在目录app\middleware.php中开启session\think\middleware\SessionInit::class2、配置验证码安装好验证......
  • 您在wp-config.php文件中提供的数据库用户名和密码可能不正确 的解决办法
    设置步骤复制配置文件在你的 htdocs 中的WordPress根目录下找到 wp-config-sample.php 文件。将 wp-config-sample.php 文件复制并重命名为 wp-config.php。编辑 wp-config.php 文件使用Notepad++或其他文本编辑器打开 wp-config.php 文件。修改以下......
  • 数据库连接错误:您在wp-config.php文件中提供的数据库用户名和密码可能不正确,或者无法
    为了解决“数据库连接错误”的问题,可以按照以下步骤进行操作:备份现有配置:在修改任何文件之前,请确保备份现有的wp-config.php文件,以防修改出错时能够恢复。重命名配置文件:将根目录下的wp-config-sample.php文件重命名为wp-config.php。这通常可以通过FTP客户端或通过服务器上......
  • 帝国CMS升级PHP版本为7.*空白问题_php7 页面空白
    当帝国CMS从较低版本的PHP升级到PHP7.x之后出现页面空白的问题,这通常是由于帝国CMS的代码与新的PHP版本不兼容导致的。以下是一些解决此类问题的方法:1.检查PHP版本兼容性确保帝国CMS版本与PHP7.x兼容。解决方法:查看官方文档:访问帝国CMS的官方网站或官方文档,查看推荐的PHP......
  • 安装帝国CMS,提示php.ini配置有问题的解决方法
    在安装帝国CMS时,如果提示 php.ini 配置有问题,需要将 short_open_tag 设为 On,可以通过以下步骤解决:工具/原料帝国CMS电脑方法/步骤登录服务器登录到你的服务器或虚拟主机。找到 php.ini 文件在PHP的安装文件夹中找到 php.ini 文件。通常这个文件位于P......
  • PHP命令行脚本接收参数
    使用$argvor$argc参数接收<?phpecho"接收到{$argc}个参数";print_r($argv);phptest.php接收到1个参数Array(   [0]=>test.php)phptest.phpabcd接收到5个参数Array(   [0]=>test.php   [1]=>a   [2]=>b   [3]=>c......