最近用到了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根据两点间的经纬度计算距离 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP中的数学函数,通过两点间的经纬度来...
在浏览器地址栏输入文件的本地地址,例如"localhost:8888/PHP根据两点间的经纬度计算距离1/index.php",就可以看到效果。用户输入经纬度并点击“计算距离”按钮后,页面将显示两个地点之间的距离(以公里为单位)。 ...
现在计算距离一般是同步百度和其他地图接口调用,可以直接通过公式计算获取两点经纬度距离
4. **计算距离**:最后,根据地球半径和中心角计算出两点间的大圆距离。 - 地球平均半径:`R = 6378.137 km` - 距离公式:`d = R * c` 5. **结果处理**:将计算结果从公里转换为米,并进行四舍五入处理。 #### ...
在IT行业中,经常需要处理地理坐标系统中的数据,如经纬度。在Golang和PHP这两种编程语言中,计算两个经纬度...开发者可以根据自己的需求选择合适的语言实现,确保在处理地理位置数据时能准确地获取到两点间的距离。
Haversine公式是一个在球面几何学中用于计算两点经纬度之间距离的公式。其基本思想是先计算出两点各自到球心的角度,然后利用余弦定理计算出它们之间的夹角,最后将夹角转换为实际的距离。这种方法适用于地球半径是...
在IT行业中,尤其是在地理信息系统(GIS)或者与位置服务相关的应用中,经常需要计算地球上两点之间的距离。在PHP中,可以使用数学公式和地球的平均半径来实现这个功能。这里我们将深入探讨如何使用PHP计算两个地理...
4. **范围查询**:比较两个`geohash`字符串的前缀长度,根据共同的前缀数量来估算距离,或者直接使用库提供的方法进行精确计算。 5. **整合进业务逻辑**:将`geohash`与你的应用程序结合,例如在用户注册时记录他们...
在IT行业中,尤其是在Web开发领域,PHP是一...总之,这个"php计算地图上两点间的距离的类"是PHP开发中一个实用的工具,它封装了地理坐标处理和距离计算的复杂逻辑,让开发者能更专注于业务逻辑,而不是底层的数学运算。
这个值是用于转换地球上两点之间的距离到弧度,因为在计算经纬度时通常使用弧度而不是实际距离。 接下来,我们定义一个变量$distance,表示我们关心的范围,即3公里。然后,我们利用三角函数来计算这个范围内四个角...
- `getDistanceBetweenPointsNew` 函数实现了根据Haversine公式计算两个经纬度坐标之间的距离。 - 公式利用三角函数和地球半径计算两点间的弧长,再转换为常用的单位(英里、英尺、码、千米、米)。 - 函数接受两...
值得注意的是,当计算距离的两点相距较远时,忽略球面因素并简化为平面计算会导致较大的误差。在这种情况下,需要使用球面距离公式来确保准确性。针对这样的情况,上述代码中也提供了另一个函数`getLongDistance`,...
计算两个地理坐标之间距离的简单方法。 有用于计算的文。 由 Composer 安装 require: "ayeo/geo": "1.0.*" 示例使用 use Ayeo \ Geo \ Coordinate ; use Ayeo \ Geo \ DistanceCalculator ; //London: 51°30′N 0...
它首先将输入的经纬度转换为弧度,然后应用Haversine公式计算距离。如果需要,还会将距离从公里转换为英里。 在实际应用中,这个函数可以用于计算两点间的实际距离,例如在定位服务、物流配送或导航系统中。通过将...
总的来说,"php附近的人算法" 实现了从经纬度计算距离,结合地理哈希技术在数据库中进行高效的地理位置查询,为社交应用或其他需要地理位置服务的系统提供基础支持。在实际开发中,还需要考虑精度、性能优化以及兼容...
本文将深入探讨基于PHP的"Laravel-WorldDistance"项目,它是一个用于计算地球上两点之间距离的工具,其灵感来源于@ritey的工作。这个项目不仅体现了PHP在处理地理空间计算的能力,还展示了Laravel框架的强大功能。 ...