zero-config / geo-distance
计算坐标之间的距离。
1.0.1
2017-05-26 07:35 UTC
Requires
- php: ^7.0
- nmarfurt/measurements: ^1.2.0
Requires (Dev)
- phpunit/phpunit: @stable
This package is auto-updated.
Last update: 2024-08-29 04:42:57 UTC
README
计算坐标之间的距离。
此包使用了来自 nmarfurt/measurements
的 UnitAngle
和 UnitLength
类。此外,结果测量值,如距离,由一个 Measurement
表示。为了充分利用这个库,建议首先熟悉该包。
安装
composer require zero-config/geo-distance
过程式方法
要过程式地使用坐标和距离计算的数据模型,请尝试以下操作
<?php use function ZeroConfig\GeoDistance\coordinates; use function ZeroConfig\GeoDistance\distance; // Returns a distance of approximately 361 kilometers. // The distance function uses the distance calculator under the hood. // It assumes earth as base sphere for calculations. echo distance( coordinates(50.0, 5.0), coordinates(53.0, 3.0) ) . PHP_EOL;
坐标
坐标函数接受
float $latitude
float $longitude
两者都是表示角度的数字。
它返回一个实例
ZeroConfig\GeoDistance\PositionInterface
<?php use function ZeroConfig\GeoDistance\coordinates; // This outputs: 50.6 ° echo coordinates(50.6, 5.0)->getLatitude() . PHP_EOL;
距离
距离函数接受
ZeroConfig\GeoDistance\PositionInterface $start
ZeroConfig\GeoDistance\PositionInterface $end
两者都是在球体上的位置。
它返回一个实例
Measurements\Measurement
<?php use function ZeroConfig\GeoDistance\coordinates; use function ZeroConfig\GeoDistance\distance; use Measurements\Units\UnitLength; // Outputs: 36113.471850273 dam echo distance( coordinates(50.0, 5.0), coordinates(53.0, 3.0) )->convertTo(UnitLength::decameters()) . PHP_EOL;
面向对象方法
以下数据模型存在
- 位置,组合纬度和经度
- 球体,计算距离时坐标所绘制的对象
<?php use ZeroConfig\GeoDistance\ConvertedDistanceCalculator; use ZeroConfig\GeoDistance\DistanceCalculator; use ZeroConfig\GeoDistance\Position; use ZeroConfig\GeoDistance\Sphere\CelestialBody\Mars; use Measurements\Units\UnitLength; $marsDistanceCalculator = new ConvertedDistanceCalculator( new DistanceCalculator(new Mars()), UnitLength::kilometers() ); // On Mars, the same coordinates as on earth, give a distance of only 192 kilometers. echo $marsDistanceCalculator->calculate( Position::create(50.0, 5.0), Position::create(53.0, 3.0) ) . PHP_EOL;