PHP计算2点经纬度之间的距离代码

yipeiwu_com5年前PHP代码库
复制代码 代码如下:

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {
    $theta = $longitude1 - $longitude2;
    $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
    $miles = acos($miles);
    $miles = rad2deg($miles);
    $miles = $miles * 60 * 1.1515;
    $feet = $miles * 5280;
    $yards = $feet / 3;
    $kilometers = $miles * 1.609344;
    $meters = $kilometers * 1000;
    return compact('miles','feet','yards','kilometers','meters');
}

$point1 = array('lat' => 40.770623, 'long' => -73.964367);
$point2 = array('lat' => 40.758224, 'long' => -73.917404);
$distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);
foreach ($distance as $unit => $value) {
    echo $unit.': '.number_format($value,4).'<br />';
}

The example returns the following:

miles: 2.6025
feet: 13,741.4350
yards: 4,580.4783
kilometers: 4.1884
meters: 4,188.3894

相关文章

php基于双向循环队列实现历史记录的前进后退等功能

本文实例讲述了php基于双向循环队列实现历史记录的前进后退等功能。分享给大家供大家参考。具体如下: 为实现一个记录操作历史的功能 1. 和撤销,反撤销功能类似的一个功能。(实现操作的前进...

php 表单提交大量数据发生丢失的解决方法

php 表单提交大量数据发生丢失的解决方法

最近在项目中,出现一个奇怪的现象,有一个大form里面有上千个input,提交的时候,老是发现post过来的数据不完整,一开始还怀疑是html 表单名称有冲突,排除掉了。然后,网上找了一...

PHP如何实现订单的延时处理详解

PHP如何实现订单的延时处理详解

业务需求 订单是我们在日常开发中经常会遇到的一个功能,最近在做业务的时候需要实现客户下单之后订单超时未支付自动取消的功能,刚开始确认了几种方法: 客户端到时间请求取消 服务端...

php使用ereg验证文件上传的方法

本文实例讲述了php使用ereg验证文件上传的方法。分享给大家供大家参考。具体分析如下: ereg格式如下: 复制代码 代码如下:ereg(正规表达式,字符串,[匹配部分数组名]); 这...

解析用PHP实现var_export的详细介绍

复制代码 代码如下:<?php/** * PHP 实现var_export();功能 */   $arr = array("1","2","...