霜蜂/地蜂

一个简单、独立的PHP库,用于计算地理坐标之间的距离。

1.0.2 2023-03-25 01:49 UTC

This package is auto-updated.

Last update: 2024-09-25 05:09:14 UTC


README

一个独立的PHP库,用于计算地理坐标之间的距离。

安装

此库不需要任何依赖项。

要安装它

  • 克隆此存储库。
  • 或使用composer: composer require frostybee/geobee

长度单位

以下列出了支持的长度单位及其相应的转换系数

  • m - 米(默认值)
  • km - 千米(1km = 1000米)
  • mi - 英里(1mi = 1609.344米)
  • nm - 海里(1nm = 1852米)
  • yd - 码(1yd = 0.9144)
  • ft - 英尺(1ft = 0.3048米)

用法

使用此库简单直接。只需实例化Calculator类,并将两个经纬度对作为参数传递给calculate()方法,如下所示。

<?php

use Frostybee\Geobee\Calculator;

/*
 * Calculate the distance from downtown Montreal to Laval.
 * From: Ville-Marie 
 *       postal code area: H3A
 *       Latitude/Longitude: 45.4987, -73.5703
 * To: Laval 
 *     postal code area: H7T 
 *     Latitude/Longitude: 45.55690, -73.7480
 */
$calculator = new Calculator();
$distance = $calculator->calculate(
    $from_latitude,
    $from_longitude,
    $to_latitude,
    $to_longitude
)->getDistance(); // Distance in meters.

将距离从米转换为其他单位

单次转换

使用以下示例中的to()方法。但是,在进行任何转换之前,您必须先调用一次calculate()方法。

$distance = $calculator->calculate(
    $from_latitude,
    $from_longitude,
    $to_latitude,
    $to_longitude
)->to('km'); // Get the distance in kilometers.

$distance = $calculator->to('mi', 3, false);

多次转换

  1. 使用toMany()方法将距离从米转换为多个(一个或多个)长度单位
// $calculator->toMany(array, $decimals, $round);
$results = $calculator->toMany(['km', 'mi'], 3, true);

上述调用返回一个如下结构的关联数组

array(2) {
  ["km"]=>
  float(15.298)
  ["mi"]=>
  float(9.506)
}
  1. 转换为所有支持的长度单位。
//$calculator->toAll($decimals, $round);
$results = $calculator->toAll(2, true);

输出

array(6) {
  ["m"]=>
  float(15297.83)
  ["km"]=>
  float(15.3)
  ["ft"]=>
  float(50189.72)
  ["yd"]=>
  float(16729.91)
  ["mi"]=>
  float(9.51)
  ["nm"]=>
  float(8.26)
}