Laravel Validation Rule for GeoJSON. Built on top of the GeoJSON PHP Library. This package is compliant with PSR-1, PSR-2 and PSR-4. If you notice compliance oversights, please send a patch via pull request.
Via Composer
$ composer require yucadoo/laravel-geojson-rule
Create a new GeoJsonRule
instance without arguments to accept any GeoJSON geometry.
use Illuminate\Support\Facades\Validator;
use YucaDoo\LaravelGeoJsonRule\GeoJsonRule;
$validator = Validator::make(
['geometry' => '{"type": "Point", "coordinates":[1, 2]}'],
['geometry' => new GeoJsonRule()] // Accept any geometry
);
$validator->passes(); // true
$validator = Validator::make(
['geometry' => '{"type": "Point", "coordinates":[1]}'],
['geometry' => new GeoJsonRule()] // Accept any geometry
);
$validator->passes(); // false
$messages = $validator->messages()->get('geometry');
$messages[0]; // The geometry does not satisfy the RFC 7946 GeoJSON Format specification because Position requires at least two elements
Pass the GeoJson geometry class to limit it.
use GeoJson\Geometry\Point;
use Illuminate\Support\Facades\Validator;
use YucaDoo\LaravelGeoJsonRule\GeoJsonRule;
$validator = Validator::make(
['position' => '{"type": "Point", "coordinates":[1, 2]}'],
['position' => new GeoJsonRule(Point::class)] // Accept Points only
);
$validator->passes(); // true
$validator = Validator::make(
['position' => '{"type": "LineString", "coordinates":[[1, 2], [3, 4]]}'],
['position' => new GeoJsonRule(Point::class)] // Accept Points only
);
$validator->passes(); // false
$messages = $validator->messages()->get('position');
echo $messages[0]; // The position does not satisfy the RFC 7946 GeoJSON Format specification for Point.
Please see CHANGELOG for more information on what has changed recently.
$ composer test
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you discover any security related issues, please email hrcajuka@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.