iroid / laravel-haversine
使用Haversine公式计算距离的Laravel包
dev-main
2024-02-23 05:28 UTC
Requires
- php: >=7.4
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。