霜蜂 / 地蜂
一个简单、独立的PHP库,用于计算地理坐标之间的距离。
1.0.2
2023-03-25 01:49 UTC
Requires
- php: >=8
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);
多次转换
- 使用
toMany()
方法将距离从米转换为多个(一个或多个)长度单位
// $calculator->toMany(array, $decimals, $round); $results = $calculator->toMany(['km', 'mi'], 3, true);
上述调用返回一个如下结构的关联数组
array(2) { ["km"]=> float(15.298) ["mi"]=> float(9.506) }
- 转换为所有支持的长度单位。
//$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) }