iroid/laravel-haversine

使用Haversine公式计算距离的Laravel包

dev-main 2024-02-23 05:28 UTC

This package is auto-updated.

Last update: 2024-09-23 06:37:07 UTC


README

Laravel Haversine是一个包,提供使用Haversine公式计算地理点之间距离的工具。它包括一个可以与Laravel的Eloquent ORM一起使用的方法,以便轻松计算数据库记录与给定点之间的距离。

安装

您可以通过Composer安装此包。在终端中运行以下命令

composer require iroid/laravel-haversine

该包将自动注册自身。

用法

计算距离

您可以使用Haversine::distance()方法使用Haversine公式计算两个地理点之间的距离。默认情况下,该方法返回公里数。

use Iroid\LaravelHaversine\Haversine;

$latitudeFrom = 40.7128; // Latitude of point A
$longitudeFrom = -74.0060; // Longitude of point A
$latitudeTo = 34.0522; // Latitude of point B
$longitudeTo = -118.2437; // Longitude of point B

$distanceInKm = Haversine::distance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo);

使用不同单位

您可以通过向distance()方法传递额外的参数来指定距离的计量单位。支持的单位包括公里(默认)、英里、海里和米。

$distanceInMiles = Haversine::distance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, 'miles');
$distanceInNauticalMiles = Haversine::distance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, 'nautical_miles');
$distanceInMeters = Haversine::distance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, 'meters');

与Laravel Eloquent一起使用

您可以使用包提供的applyHaversine()方法与Laravel的Eloquent ORM一起计算数据库记录与给定地理点之间的距离。

use Iroid\LaravelHaversine\Haversine;

$latitudeFrom = 40.7128; // Latitude of the reference point
$longitudeFrom = -74.0060; // Longitude of the reference point

// Example: Retrieving places sorted by distance from the reference point
$places = Place::applyHaversine($latitudeFrom, $longitudeFrom)
                ->orderBy('distance')
                ->get();

applyHaversine()的参数

  • $query:Eloquent查询构建器实例。
  • $latitudeFrom:参考点的纬度。
  • $longitudeFrom:参考点的经度。
  • $latitudeColumn(可选):数据库表中的纬度自定义列名。默认为'latitude'
  • $longitudeColumn(可选):数据库表中的经度自定义列名。默认为'longitude'
  • $unit(可选):距离的计量单位。支持的单位包括公里(默认)、英里、海里和米。

您可以使用这些参数根据您的数据库模式和需求自定义applyHaversine()方法的行为。

致谢

有兴趣贡献或修改,请联系我 email