`
amuropikin
  • 浏览: 41655 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

php 根据两点的经纬度计算距离

    博客分类:
  • php
阅读更多
最近用到了geohash(参考《geohash:用字符串实现附近地点搜索》)来实现附近搜索的功能,在《微信、陌陌架构方案分析》文中提供了一个php的geohash类直接能对经纬地址编码成字符串,  而其中包含一个getDistance方法获取两点间的距离,但在sphinx中使用过滤附近地标的方法SetGeoAnchor发现返回的距离值有误,遂google出以下方法,经测试可用。。

/**
*  @desc 根据两点间的经纬度计算距离
*  @param float $lat 纬度值
*  @param float $lng 经度值
*/
function getDistance($lat1, $lng1, $lat2, $lng2)
{
     $earthRadius = 6367000; //approximate radius of earth in meters

     /*
       Convert these degrees to radians
       to work with the formula
     */

     $lat1 = ($lat1 * pi() ) / 180;
     $lng1 = ($lng1 * pi() ) / 180;

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

     /*
       Using the
       Haversine formula

       http://en.wikipedia.org/wiki/Haversine_formula

       calculate the distance
     */

     $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 = $earthRadius * $stepTwo;

     return round($calculate);
}

附一个在线计算两点距离的地址:

http://www.nhc.noaa.gov/gccalc.shtml
分享到:
评论

相关推荐

    PHP根据两点间的经纬度计算距离

    PHP根据两点间的经纬度计算距离 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP中的数学函数,通过两点间的经纬度来...

    PHP根据两点间的经纬度计算距离1

    在浏览器地址栏输入文件的本地地址,例如"localhost:8888/PHP根据两点间的经纬度计算距离1/index.php",就可以看到效果。用户输入经纬度并点击“计算距离”按钮后,页面将显示两个地点之间的距离(以公里为单位)。 ...

    PHP获取两点经纬度距离.txt

    现在计算距离一般是同步百度和其他地图接口调用,可以直接通过公式计算获取两点经纬度距离

    通过经纬度测距

    4. **计算距离**:最后,根据地球半径和中心角计算出两点间的大圆距离。 - 地球平均半径:`R = 6378.137 km` - 距离公式:`d = R * c` 5. **结果处理**:将计算结果从公里转换为米,并进行四舍五入处理。 #### ...

    golang与php实现计算两个经纬度之间距离的方法

    在IT行业中,经常需要处理地理坐标系统中的数据,如经纬度。在Golang和PHP这两种编程语言中,计算两个经纬度...开发者可以根据自己的需求选择合适的语言实现,确保在处理地理位置数据时能准确地获取到两点间的距离。

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

    Haversine公式是一个在球面几何学中用于计算两点经纬度之间距离的公式。其基本思想是先计算出两点各自到球心的角度,然后利用余弦定理计算出它们之间的夹角,最后将夹角转换为实际的距离。这种方法适用于地球半径是...

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

    在IT行业中,尤其是在地理信息系统(GIS)或者与位置服务相关的应用中,经常需要计算地球上两点之间的距离。在PHP中,可以使用数学公式和地球的平均半径来实现这个功能。这里我们将深入探讨如何使用PHP计算两个地理...

    geohash:一个解决计算附近距离的php类库

    4. **范围查询**:比较两个`geohash`字符串的前缀长度,根据共同的前缀数量来估算距离,或者直接使用库提供的方法进行精确计算。 5. **整合进业务逻辑**:将`geohash`与你的应用程序结合,例如在用户注册时记录他们...

    php计算地图上两点间的距离的类

    在IT行业中,尤其是在Web开发领域,PHP是一...总之,这个"php计算地图上两点间的距离的类"是PHP开发中一个实用的工具,它封装了地理坐标处理和距离计算的复杂逻辑,让开发者能更专注于业务逻辑,而不是底层的数学运算。

    PHP计算当前坐标3公里内4个角落的最大最小经纬度实例

    这个值是用于转换地球上两点之间的距离到弧度,因为在计算经纬度时通常使用弧度而不是实际距离。 接下来,我们定义一个变量$distance,表示我们关心的范围,即3公里。然后,我们利用三角函数来计算这个范围内四个角...

    PHP查询附近的人及其距离的实现方法

    - `getDistanceBetweenPointsNew` 函数实现了根据Haversine公式计算两个经纬度坐标之间的距离。 - 公式利用三角函数和地球半径计算两点间的弧长,再转换为常用的单位(英里、英尺、码、千米、米)。 - 函数接受两...

    php如何计算两坐标点之间的距离

    值得注意的是,当计算距离的两点相距较远时,忽略球面因素并简化为平面计算会导致较大的误差。在这种情况下,需要使用球面距离公式来确保准确性。针对这样的情况,上述代码中也提供了另一个函数`getLongDistance`,...

    geo:计算两个坐标之间的距离

    计算两个地理坐标之间距离的简单方法。 有用于计算的文。 由 Composer 安装 require: "ayeo/geo": "1.0.*" 示例使用 use Ayeo \ Geo \ Coordinate ; use Ayeo \ Geo \ DistanceCalculator ; //London: 51°30′N 0...

    php计算两个坐标(经度,纬度)之间距离的方法

    它首先将输入的经纬度转换为弧度,然后应用Haversine公式计算距离。如果需要,还会将距离从公里转换为英里。 在实际应用中,这个函数可以用于计算两点间的实际距离,例如在定位服务、物流配送或导航系统中。通过将...

    php附近的人算法

    总的来说,"php附近的人算法" 实现了从经纬度计算距离,结合地理哈希技术在数据库中进行高效的地理位置查询,为社交应用或其他需要地理位置服务的系统提供基础支持。在实际开发中,还需要考虑精度、性能优化以及兼容...

    laravel-worlddistance:计算地球上两点之间的距离,灵感来自@ritey

    本文将深入探讨基于PHP的"Laravel-WorldDistance"项目,它是一个用于计算地球上两点之间距离的工具,其灵感来源于@ritey的工作。这个项目不仅体现了PHP在处理地理空间计算的能力,还展示了Laravel框架的强大功能。 ...

Global site tag (gtag.js) - Google Analytics