dynamic-screen/laravel-geographical

轻松地为您的记录添加经纬度列,并使用继承的功能来计算距离

1.0.2 2019-09-13 09:16 UTC

This package is auto-updated.

Last update: 2024-09-04 19:35:24 UTC


README

轻松地为您的记录添加经纬度列,并使用继承的功能来计算距离。

首先,要么更新您的数据库,要么将此添加到每个模型的迁移中

$table->double('longitude');
$table->double('latitude');

最后,在您的模型中使用

use Geographical;

1. 距离

查找从特定位置到您表中的所有条目的距离。

$query = Model::distance($latitude, $longitude);
$asc = $query->orderBy('distance', 'ASC')->get();

2. 地理围栏

查找您表中的所有在圆形地理围栏内的条目。

$query = Model::geofence($latitude, $longitude, $inner_radius, $outer_radius);
$all = $query->get();

单位

默认的距离单位是 英里。您可以通过在模型中添加以下内容将其更改为 公里

protected static $kilometers = true;

备注

  1. 该方法返回一个 Eloquent\Builder 对象,以便您可以根据需要添加可选条件。
  2. 您可以在结果中使用 distance 作为聚合列。(聚合列不能用于 WHERE,请使用 HAVING 来执行任何条件。)
  3. 如果您为纬度和经度使用不同的列名,请在 Model.php 中提及它们
const LATITUDE  = 'lat';
const LONGITUDE = 'lng';

安装

需要 PHP 5.6.4+ 和 Laravel 5+。

要获取 Laravel Geographical 的最新版本,只需使用 Composer 安装项目即可。

$ composer require malhal/laravel-geographical