首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在PHP循环中计算多个经度/经度之间的多重距离

在PHP循环中计算多个经度/纬度之间的多重距离,可以使用Haversine公式来计算两个经纬度之间的距离。Haversine公式是一种常用的计算球面上两点之间距离的方法,适用于小范围的距离计算。

以下是一个示例代码,用于计算多个经度/纬度之间的多重距离:

代码语言:txt
复制
function calculateDistance($lat1, $lon1, $lat2, $lon2) {
    $earthRadius = 6371; // 地球半径,单位为千米

    $lat1 = deg2rad($lat1);
    $lon1 = deg2rad($lon1);
    $lat2 = deg2rad($lat2);
    $lon2 = deg2rad($lon2);

    $deltaLat = $lat2 - $lat1;
    $deltaLon = $lon2 - $lon1;

    $a = sin($deltaLat / 2) * sin($deltaLat / 2) + cos($lat1) * cos($lat2) * sin($deltaLon / 2) * sin($deltaLon / 2);
    $c = 2 * atan2(sqrt($a), sqrt(1 - $a));

    $distance = $earthRadius * $c;

    return $distance;
}

// 示例数据
$locations = array(
    array('lat' => 40.712776, 'lon' => -74.005974), // 纽约
    array('lat' => 34.052235, 'lon' => -118.243683), // 洛杉矶
    array('lat' => 51.5074, 'lon' => -0.1278), // 伦敦
    // 可以继续添加更多的经度/纬度数据
);

$origin = array('lat' => 37.7749, 'lon' => -122.4194); // 起始点,例如旧金山

foreach ($locations as $location) {
    $distance = calculateDistance($origin['lat'], $origin['lon'], $location['lat'], $location['lon']);
    echo "距离起始点的距离:" . $distance . "千米\n";
}

这段代码中,我们定义了一个calculateDistance函数,该函数接受四个参数:起始点的纬度和经度,以及目标点的纬度和经度。函数内部使用Haversine公式计算两个点之间的距离,并返回距离值。

在示例数据中,我们定义了一个包含多个经度/纬度的数组$locations,以及一个起始点的经度/纬度数组$origin。通过循环遍历$locations数组,计算每个点与起始点之间的距离,并输出结果。

这个问题的应用场景可能是在地理位置相关的应用中,例如根据用户的当前位置计算与附近商店或服务的距离,或者在地图应用中计算两个地点之间的距离等。

腾讯云提供了多个与地理位置相关的产品和服务,例如地图服务、位置服务等。您可以访问腾讯云官方网站了解更多关于这些产品的信息和使用方法。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Redis系统学习之三种特殊数据类型(geospatial(地理位置))

    添加地理位置 geoadd key 经度 纬度 城市名称[多个添加,经纬度城市名称循环] 两级(南极和北极)无法添加,一般通过程序导入 添加北京位置 ? 添加河北和上海位置 ?...计算两个位置之间距离(直线距离[笑哭,谁会查直线距离]) geodist key 位置1 位置2 [m|km|ft|mi](单位) m :米,默认单位。 km :千米。 mi :英里。...计算河北和北京之间距离,单位为千米 ?...WITHDIST: 返回位置元素同时, 将位置元素与中心之间距离也一并返回。 WITHCOORD: 将位置元素经度和维度也一并返回。...返回一个或多个地理位置11位哈希值(一般用不到) geohash key value[value循环,多个空格拆分] ?

    98020

    是什么能让 APP 快速精准定位到我们位置?

    本文包含以下内容,阅读完需要约10分钟: 我们日常生活遇到哪些定位场景 简单复习一下经纬度 geohash原理解析 geohash存在边界问题 如何解决边界问题 计算两点距离计算 geohash...redis实现 我们日常生活遇到哪些定位场景 我们上下班经常会用APP打车和共享单车,下面2张图,应该都很熟悉,打开定位,查找我附近车,那么,这个是怎么实现呢?...最后分别计算这些点和自己距离(由于范围很小,点数量就也很少,计算量就很少)过滤掉不满足条件点就ok了。...sin($radLat2))*$R;     //精度     $s = round($s* 10000)/10000;     return  round($s); } /*  *求两个已知经纬度之间距离...实现 redis 3.2.0加入了geo相关命令,对geohash支持。

    1.6K30

    Redis 7地理信息命令太太太牛了!一文教你如何使用

    GEODIST:计算两个位置之间距离。 GEOHASH:获取指定位置地理哈希值。 GEOPOS:获取一个或多个位置经度和纬度。...GEODIST GEODIST命令用于计算两个地理位置之间距离。...示例: GEODIST cities "Palermo" "Catania" km 上述示例将计算了名为cities"Palermo"和"Catania"两个地理位置之间距离,并指定距离单位为千米...这些地理信息命令允许Redis存储和处理地理位置数据,包括添加地理位置、计算距离、获取地理哈希值、获取经度和纬度、搜索附近位置等操作。这些命令提供了方便而强大功能,可以各种应用场景中使用。...通过使用GEOADD命令,我们可以将地理位置及其名称添加到Redis指定键,方便地存储和管理位置数据。GEODIST命令允许计算两个位置之间距离,提供了方便距离计算功能。

    42530

    Redis 7地理信息命令太太太牛了!一文教你如何使用

    GEODIST:计算两个位置之间距离。GEOHASH:获取指定位置地理哈希值。GEOPOS:获取一个或多个位置经度和纬度。GEORADIUS:根据指定位置和距离指定查找附近位置。...GEODISTGEODIST命令用于计算两个地理位置之间距离。...示例:GEODIST cities "Palermo" "Catania" km上述示例将计算了名为cities"Palermo"和"Catania"两个地理位置之间距离,并指定距离单位为千米。...这些地理信息命令允许Redis存储和处理地理位置数据,包括添加地理位置、计算距离、获取地理哈希值、获取经度和纬度、搜索附近位置等操作。这些命令提供了方便而强大功能,可以各种应用场景中使用。...通过使用GEOADD命令,我们可以将地理位置及其名称添加到Redis指定键,方便地存储和管理位置数据。GEODIST命令允许计算两个位置之间距离,提供了方便距离计算功能。

    34710

    Redis之GEO类型解读

    基本介绍 GEO 主要用于存储地理位置信息(纬度、经度、名称)添加到指定key。该功能在 Redis 3.2 版本新增。  ...geopos 从key里返回所有给定位置元素位置(经度和纬度) geodist 返回两个给定位置之间距离 georadius 以给定经纬度为中心, 找出某一半径内元素 georadiusbymember...找出位于指定范围内元素,中心点是由给定位置元素决定 geohash 返回一个或多个位置元素 Geohash 表示 geoadd 命令  将指定地理空间位置(纬度、经度、名称)添加到指定key...GEODIST 命令计算距离时会假设地球为完美的球形, 极限情况下, 这一假设最大会造成 0.5% 误差 redis> GEOADD Sicily 13.361389 38.115556 "Palermo...在给定以下可选项时, 命令会返回额外信息: WITHDIST: 返回位置元素同时, 将位置元素与中心之间距离也一并返回。 距离单位和用户给定范围单位保持一致。

    28540

    Python实践 | 亿级经纬度距离计算代码实现

    计算经纬度代码网上一搜一大把,通常是单点距离计算,无法实现批量计算,本文将利用pandas实现亿级经纬度距离代码实现。 最短距离计算建议参考下文,mapinfo能够很好实现。...MAPINFO 最小站间距统计 本文将实现两张表任意点之间100、200、300、500、800、1000米范围内距离计算。...由于地球是球形,不同纬度下,同一经度差值对应距离不同,纬度相同且纬度越大时,同一经度对应距离越小,中国经纬度跨度约为73°33′E至 135°05′E;纬度范围:3°51′N至53°33′N,此处为了计算最大经度差值...,我们选取纬度为54.0;不同经度下,同一纬度差异对应距离相同 ?...,我们选取纬度值54.0获取了最大经度差值,随着纬度减小,此时计算距离会大于该阈值,所以要对初次计算结果进行过滤,得出满足阈值条目: 1distance=distance.append(n[n.distance

    4.3K30

    geohash之2d 地理空间索引

    有关查询存储地理空间索引数据信息,请参阅使用2d索引查询地空间。 存储位置数据 要使用2d地理空间索引,您必须在预定二维坐标系(例如经度和纬度)上对位置数据建模。...默认情况下,使用干草堆索引查询返回50个文档。 距离计算 执行2d 地理空间查询之前,MongoDB会执行距离计算。默认情况下,MongoDB使用平面几何来计算之间距离。...MongoDB还支持使用球面几何距离计算,以提供基于球体或地球地理空间信息准确距离。...注解 虽然地理空间索引默认类地界限-180和180之间,但纬度有效值介于-90和90之间。...尽管2d索引不支持文档多个坐标集,但您可以使用多键索引来将多个坐标对存储并索引到单个文档

    2.2K40

    Python实践 | 亿级经纬度距离计算工具V2

    计算经纬度代码网上一搜一大把,通常是单点距离计算,无法实现批量计算,本文将利用pandas实现亿级经纬度距离代码实现。 最短距离计算建议参考下文,mapinfo能够很好实现。...MAPINFO 最小站间距统计 本文将实现两张表任意点之间100、200、300、500、800、1000米范围内距离计算。...由于地球是球形,不同纬度下,同一经度差值对应距离不同,纬度相同且纬度越大时,同一经度对应距离越小,中国经纬度跨度约为73°33′E至 135°05′E;纬度范围:3°51′N至53°33′N,此处为了计算最大经度差值...,我们选取纬度为54.0;不同经度下,同一纬度差异对应距离相同 ?...,我们选取纬度值54.0获取了最大经度差值,随着纬度减小,此时计算距离会大于该阈值,所以要对初次计算结果进行过滤,得出满足阈值条目: 1distance = distance.append(nn[

    2.5K31

    redis常用命令和数据类型

    语法: geoadd key 经度 纬度 地名 经度 纬度 地名 ... ... 2、geopos:获取地理位置坐标(经度,纬度) geopos key 地名 3、geodist:计算两个位置之间距离...georadius 以给定经纬度为中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素 georadius key 经度 纬度 半径值 单位 [WITHCOORD] [WITHDIST...] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] WITHDIST: 返回位置元素同时, 将位置元素与中心之间距离也一并返回。...这个选项主要用于底层应用或者调试, 实际作用并不大。 COUNT: 指定半径范围内显示目标数量(半径内有100个,可以只显示50个) ASC: 查找结果根据距离从近到远排序。...二、Bitmaps 用来统计用户是否访问过网站,访问为1,没有为0 详解redisbitmap亿级项目中应用 设置值setbit:设置Bitmaps某个偏移量值(0或1),offset从0

    90010

    一文了解geohash原理,实践实战设计思路

    ;你面试官问过程,就脑海飞快转动着,组合一系列数据场景准备应战。...“附近的人” 核心思想如下: ① 以“自己”为中心,搜索附近用户 ② 以“自己”当前地理位置为准,计算出别人和 “我” 之间距离 ③ 按“自己”与别人距离远近排序,筛选出离我最近用户或者商店等...,我们可以看到需要大量计算两个点之间距离,对性能有很大影响。...(不推荐使用了) 基于mysql + GeoHash实现附近人查询 ① 设计思路 原本存储用户经纬度:入库时计算经纬度对应geohash字符串存储到表;那么存储时需要我们明确字符串长度。..., 将位置元素与中心之间距离也一并返回。

    3.9K20

    Redis之GEO类型解读

    基本介绍 GEO 主要用于存储地理位置信息(纬度、经度、名称)添加到指定key。该功能在 Redis 3.2 版本新增。...geopos 从key里返回所有给定位置元素位置(经度和纬度) geodist 返回两个给定位置之间距离 georadius 以给定经纬度为中心, 找出某一半径内元素 georadiusbymember...找出位于指定范围内元素,中心点是由给定位置元素决定 geohash 返回一个或多个位置元素 Geohash 表示 geoadd 命令 将指定地理空间位置(纬度、经度、名称)添加到指定key...GEODIST 命令计算距离时会假设地球为完美的球形, 极限情况下, 这一假设最大会造成 0.5% 误差 redis> GEOADD Sicily 13.361389 38.115556 "Palermo...在给定以下可选项时, 命令会返回额外信息: WITHDIST: 返回位置元素同时, 将位置元素与中心之间距离也一并返回。 距离单位和用户给定范围单位保持一致。

    461110

    根据两点经纬度计算距离_经纬度两点距离

    地球是不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心假想线),地球腰画一个与地轴垂直大圆圈,使圈上每一点都和南北两极距离相等,这个圆圈就叫作“赤道”。...大海中航行船只,只要把所在地经度测出来,就可以确定船海洋位置和前进方向。 纬度共有90度。赤道为0度,向两极排列,圈子越小,度数越大。横线是纬度,竖线是经度。...纬度数值0至30度之间地区称为低纬地区,纬度数值30至60度之间地区称为中纬地区,纬度数值60至90度之间地区称为高纬地区。 赤道、南回归线、北回归线、南极圈和北极圈是特殊纬线。...如果以0度经线为基 准,那么根据地球表面任意两点经纬度就可以计算出这两点间地表距离(这里忽略地球表面地形对计算带来误差,仅仅是理论上估算值)。...,一般是通过一个个体邮政编码来查找该邮政编码对应地区中心经纬度,然 后再根据这些经纬度来计算彼此距离,从而估算出某些群体之间大致距离范围(比如酒店旅客分布范围-各个旅客邮政编码对应经纬度和酒店经纬度所

    2.2K20
    领券