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

计算两个坐标(经度,纬度)之间的距离是地图应用中常用的功能。下面是计算两个坐标距离的方法,示例中使用的是PHP语言。

使用 Haversine 公式计算两个坐标之间的距离

Haversine公式是常用的计算两个坐标之间距离的公式。下面是使用Haversine公式计算两个坐标之间距离的PHP代码:

function distance($lat1, $lon1, $lat2, $lon2) {
  $theta = $lon1 - $lon2;
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;

  return ($miles * 1.609344); // 公里
}

echo distance(22.333,114.188,31.2304,121.4737); // 1,020.9086766701 公里

以上代码中的distance()函数使用了4个参数,分别是第一点的经度和纬度,以及第二点的经度和纬度。函数返回值为两点之间的距离(以公里为单位),使用echo输出值。

使用 Google Maps API 计算两个坐标之间的距离

使用Google Maps API计算两个坐标之间距离需要先获取Google Maps API的API Key。然后使用以下代码:

function getDrivingDistance($address1, $address2, $apiKey) {

  $url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".urlencode($address1)."&destinations=".urlencode($address2)."&key=".$apiKey;

  $resp_json = file_get_contents($url);
  $resp = json_decode($resp_json, true);

  return $resp['rows'][0]['elements'][0]['distance']['text'];
}

echo getDrivingDistance('香港特別行政區中環','上海市虹橋區虹梅路333号', '你的API Key');

以上代码中的getDrivingDistance()函数使用了3个参数,分别是第一点的地址、第二点的地址和API Key。函数返回两点之间的驾车距离和时间,使用echo输出距离。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php计算两个坐标(经度,纬度)之间距离的方法 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 暗影精灵3 Pro值得买吗?惠普暗影精灵III Pro 144Hz电竞屏笔记本全面评测

    暗影精灵3 Pro值得买吗?——惠普暗影精灵III Pro 144Hz电竞屏笔记本全面评测 引言 暗影精灵系列一直以高性能和高配置吸引着广大游戏玩家的关注,而其中的暗影精灵3 Pro更是备受瞩目。本文将对这款笔记本进行全面评测,分析其性能、散热、外观等方面,帮助大家了解暗影精灵3 Pro是否值得购买。 外观设计 暗影精灵3 Pro采用了HP独有的暗影系金属材…

    C 2023年5月22日
    00
  • 详解如何用alpine镜像做一个最小的镜像并运行c++程序

    当我们需要构建一个最小化的镜像时,通常会选择使用Alpine镜像。Alpine是一个轻量级的Linux发行版,使用musl libc作为其C库以及busybox作为其Unix工具的集合。在开发环境中使用它可以减少不必要的依赖,从而得到一个精简的镜像。 下面是使用Alpine镜像构建最小化镜像并运行C++程序的详细攻略: 步骤一:准备工作 1. 安装Docke…

    C 2023年5月23日
    00
  • Java开发工具-scala处理json格式利器-json4s详解

    Java开发工具-scala处理json格式利器-json4s详解 简介 JSON是现代API和Web应用程序的标准格式,但是到目前为止,处理JSON数据更具体地讲就是解析和构造高效且易读的代码仍然是一项难题。而Scala是一种现代化而又灵活的编程语言,而json4s是Scala处理和解析JSON数据的十分有用的库。 在本文中,我们将讨论如何使用Scala的…

    C 2023年5月23日
    00
  • VC随机函数srand和rand用法

    VC随机函数srand和rand用法是C/C++编程中非常常用的一种随机数生成方法,本攻略将详细介绍它们的用法。 srand函数 srand函数用于生成随机数种子,其原型如下: void srand(unsigned int seed); 其中,seed参数通常是时间或者程序启动时的系统时间等随机值,用于初始化随机数种子。如果不使用srand()的话,则每次…

    C 2023年5月22日
    00
  • vs2022 x64 C/C++和汇编混编(案例代码)

    我将为你详细讲解“vs2022 x64 C/C++和汇编混编(案例代码)”的完整攻略。 首先,我们需要了解混编的概念。混编指的是在一个程序中同时使用C/C++和汇编语言,通过调用汇编语言来完成一些高效或重要的操作,以提高程序的运行效率。 在Visual Studio 2022中,我们可以使用内嵌汇编的方式来实现混编。下面是一个简单的C++程序,其中调用了一个…

    C 2023年5月23日
    00
  • C++基础入门教程(八):函数指针

    下面是对于C++基础入门教程(八):函数指针的完整攻略。 1. 函数指针概述 在C++中,函数就像是一个变量,可以定义,可以赋值,还可以作为参数传递给其他函数,这也是C++中函数指针的基本概念。函数指针可以指向一个函数的地址,从而可以调用该函数。 函数指针的定义格式为: 返回类型 (*指针变量名称)(参数列表); 其中,指针变量名称是该函数指针的变量名,参数…

    C 2023年5月30日
    00
  • json与jsonp知识小结(推荐)

    让我来为您详细讲解“json与jsonp知识小结(推荐)”的完整攻略。 1. 什么是 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript的对象语法。它有如下几个特点: JSON是一种文本格式,可以轻松地在网络上传输。 JSON的语法和JavaScript的语法几乎相同,因此易读易…

    C 2023年5月23日
    00
  • Python时间序列处理之ARIMA模型的使用讲解

    Python时间序列处理之ARIMA模型的使用讲解 本文主要介绍如何使用Python进行时间序列的ARIMA模型处理。ARIMA模型是一种常用的时间序列分析方法,可用于对未来时间序列的预测。本文将详细讲解ARIMA模型的原理和应用,以及如何使用Python完成ARIMA模型的建模和预测。 1. ARIMA模型简介 1.1 模型原理 ARIMA模型是基于时间序…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部