dynamicscreen / laravel-geographical
Easily add longitude and latitude columns to your records and use inherited functionality for calculating distances
Requires
- php: >=5.6.4
- laravel/framework: 5.*|6.*
This package is auto-updated.
Last update: 2024-11-04 19:59:33 UTC
README
Easily add longitude and latitude columns to your records and use inherited functionality for calculating distances.
First either update your database or add this to a migration for each model:
$table->double('longitude'); $table->double('latitude');
Finally in your model use:
use Geographical;
1. Distance
Find the distance to all the entries in your table from a particular location.
$query = Model::distance($latitude, $longitude); $asc = $query->orderBy('distance', 'ASC')->get();
2. Geofence
Find all the entries in your table inside a circular geo-fence.
$query = Model::geofence($latitude, $longitude, $inner_radius, $outer_radius); $all = $query->get();
Units
The default unit of distance is miles. You can change it to kilometers by putting this in your model
protected static $kilometers = true;
Notes
- The method returns a
Eloquent\Builder
object so that you can add optional conditions if you want. - You can use
distance
as an aggregate column in the result. (Aggregate columns cannot be used inWHERE
, useHAVING
to execute any condition.) - If you use different column names for latitude and longitude, mention them in the Model.php
const LATITUDE = 'lat'; const LONGITUDE = 'lng';
Installation
PHP 5.6.4+ and Laravel 5+ are required.
To get the latest version of Laravel Geographical, simply require the project using Composer:
$ composer require malhal/laravel-geographical