php 计算两点地理坐标的距离

php 计算两点地理坐标的距离

<?php
/**
 * 计算两点地理坐标之间的距离
 * @param  Decimal $longitude1 起点经度
 * @param  Decimal $latitude1  起点纬度
 * @param  Decimal $longitude2 终点经度 
 * @param  Decimal $latitude2  终点纬度
 * @param  Int     $unit       单位 1:米 2:公里
 * @param  Int     $decimal    精度 保留小数位数
 * @return Decimal
 */
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){
 
    $EARTH_RADIUS = 6370.996; // 地球半径系数
    $PI = 3.1415926;
 
    $radLat1 = $latitude1 * $PI / 180.0;
    $radLat2 = $latitude2 * $PI / 180.0;
 
    $radLng1 = $longitude1 * $PI / 180.0;
    $radLng2 = $longitude2 * $PI /180.0;
 
    $a = $radLat1 - $radLat2;
    $b = $radLng1 - $radLng2;
 
    $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
    $distance = $distance * $EARTH_RADIUS * 1000;
 
    if($unit==2){
        $distance = $distance / 1000;
    }
 
    return round($distance, $decimal);
 
}
 
// 起点坐标
$longitude1 = 113.330405;
$latitude1 = 23.147255;
 
// 终点坐标
$longitude2 = 113.314271;
$latitude2 = 23.1323;
 
$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance.'m'; // 2342.38m
 
$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance.'km'; // 2.34km
 
?>

  功能:根据圆周率和地球半径系数与两点坐标的经纬度,计算两点之间的球面距离。 

获取两点坐标距离:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tcp三次握手的seq和ack_tcp三次握手的第一个报文

    tcp三次握手的seq和ack_tcp三次握手的第一个报文TCP(TransmissionControlProtocol)传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequ…

    2022年9月27日
    0
  • 最受欢迎的8个Python框架,满足你的各类需求「建议收藏」

    最受欢迎的8个Python框架,满足你的各类需求「建议收藏」今天给大家分享几个最受欢迎的Python框架。这些框架包括Web开发,高性能网络通信,测试,爬虫等等,如果你正在学习Python,那么应该可以满足你。1DjangoDjango应该是最出名的Python框架,是一款在数据库功能、后台功能、模板系统、网址匹配、缓存系统等方面有“先天”优势的开源框架。它可以通过几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容;强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。小编整理的一整套系统的p-ython学习教程从最基础的

    2022年5月10日
    41
  • 常用排序算法:直接选择排序[通俗易懂]

    常用排序算法:直接选择排序[通俗易懂]常用排序算法:直接选择排序

    2022年4月20日
    39
  • HashMap遍历的四种常用方式「建议收藏」

    HashMap遍历的四种常用方式「建议收藏」古人云:温故而知新。最近闲来无事就去翻阅了一下之前的一些基础java知识点。本想着随便看看,然而就发现有了意外收获。比如本文所讲HashMap遍历的四种常用方式。大伙们一起学习一起进步,记得点赞关注以示鼓励哈!!!准备工作首选我们先准备一个HashMap。publicclassTest1{publicstaticvoidmain(String[]args){Map<String,String>map=newHashMap<St

    2022年9月9日
    0
  • 这款开源自动化运维平台,让你彻底摆脱人肉运维「建议收藏」

    这款开源自动化运维平台,让你彻底摆脱人肉运维「建议收藏」  大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!  今天小编推荐一款面向中小型企业设计的轻量级无Agent的自动化运维平台整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。开源协议  使用AGPL-3.0开源许可协议链接地址  公众号【Github导航站】回复关键词【spu】获取git地址特性批量执行:主机命令在线批量执行在线终端:主机支

    2022年5月13日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号