简化版 分站 股指 日历 影视
计算器 携程 地图 行情 电脑
加解密 长度 面积 空位 空位
首页 软件 编程 笑话 知识 公告 注册 登录 用QQ登录本站
 
您现在的位置:首页 >> PHP >> 内容

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

内容摘要:?php/*** 计算两点地理坐标之间的距离* @param Decimal $longitude1 起点经度* @param Decimal $latitude1 起点纬度* @param Decimal $longitude2 终点经度* @param Decimal $latitude2 终点纬度* @param Int $unit单位 1:米 2:公......

  <?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


?>

  版权声明:本内容来源于互联网,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。


发布日期:2019/3/7 发布时间:15:17:13 点击:2812 
  • 上一篇:PHP实现的用户注册表单验证功能简单示例
  • 下一篇:PHP接收并压缩图片(路径存入数据库)
  • 本类新增
    本类热门文章
    Baidu
    壹 家 软 件 工 作 室(YiJia SoftWare Workroom) 齐天大圣® 制 作 ©2000-2019

    本空间由景安网络提供,奇安信网站卫士提供加速防护
    YiJiaCMS V3.12 Build 19.7.12(MSSQL) 闽ICP备05000814号-1