Download the PHP package coresmart/laravel-spatial without Composer
On this page you can find all versions of the php package coresmart/laravel-spatial. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download coresmart/laravel-spatial
More information about coresmart/laravel-spatial
Files in coresmart/laravel-spatial
Package laravel-spatial
Short Description Laravel package to work with geospatial data types and functions.
License MIT
Homepage https://github.com/tarfin-labs/laravel-spatial
Informations about the package laravel-spatial
Laravel Spatial
Forked from tarfin-labs/laravel-spatial for laravel 9 support
This is a Laravel package to work with geospatial data types and functions.
It supports only MySQL Spatial Data Types and Functions, other RDBMS is on the roadmap.
Supported data types:
Point
Available Scopes:
withinDistanceTo($column, $coordinates, $distance)
selectDistanceTo($column, $coordinates)
orderByDistanceTo($column, $coordinates, 'asc')
Installation
You can install the package via composer:
Usage
Generate a new model with a migration file:
1- Migrations:
To add a spatial data field, you need to extend the migration from TarfinLabs\LaravelSpatial\Migrations\SpatialMigration
.
It is a simple abstract class that adds point
spatial data type to Doctrine mapped types in the constructor.
The migration above creates an addresses
table with a location
spatial column.
Spatial columns with no SRID attribute are not SRID-restricted and accept values with any SRID. However, the optimizer cannot use SPATIAL indexes on them until the column definition is modified to include an SRID attribute, which may require that the column contents first be modified so that all values have the same SRID.
So you should give an SRID attribute to use spatial indexes in the migrations:
2- Models:
Fill the $fillable
, $casts
arrays in the model:
3- Spatial Data Types:
Point:
Point
represents the coordinates of a location and contains latitude
, longitude
, and srid
properties.
At this point, it is crucial to understand what SRID is. Each spatial instance has a spatial reference identifier (SRID). The SRID corresponds to a spatial reference system based on the specific ellipsoid used for either flat-earth mapping or round-earth mapping. A spatial column can contain objects with different SRIDs.
For details about SRID you can follow the link: https://en.wikipedia.org/wiki/Spatial_reference_system
- Default value of
latitude
,longitude
parameters is0.0
. - Default value of
srid
parameter is0
.
You can override the default SRID via the laravel-spatial
config file. To do that, you should publish the config file using vendor:publish
artisan command:
After that, you can change the value of default_srid
in config/laravel-spatial.php
4- Scopes:
withinDistanceTo()
You can use the withinDistanceTo()
scope to filter locations by given distance:
To filter addresses within the range of 10 km from the given coordinate:
selectDistanceTo()
You can get the distance between two points by using selectDistanceTo()
scope. The distance will be in meters:
orderByDistanceTo()
You can order your models by distance to given coordinates:
Get latitude and longitude of the location:
Create a new address with location:
Testing
Road Map
- [ ] MultiPoint
- [ ] LineString
- [ ] MultiLineString
- [ ] Polygon
- [ ] MultiPolygon
- [ ] GeometryCollection
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Credits
- Turan Karatug
- All Contributors
License
The MIT License (MIT). Please see License File for more information.