Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Geo Laravel Package

brick/geo

brick/geo is a PHP geometry library for working with points, lines, polygons, and other shapes. Provides common spatial operations, parsing/formatting, and robust value objects to model geo data cleanly in applications and services.

View on GitHub
Deep Wiki
Context7

GIS geometry library for PHP

Frequently asked questions about Geo
How do I install brick/geo in a Laravel project?
Run `composer require brick/geo` in your project root. The package is dependency-free and integrates directly with PHP, so no additional setup is needed beyond requiring it in your `composer.json`. For Laravel-specific features like Eloquent spatial queries, pair it with a spatial database like PostGIS.
Does brick/geo support Laravel Eloquent for geospatial queries?
Yes, brick/geo works alongside Eloquent by providing value objects for spatial logic. For PostGIS, use Laravel’s query builder with `ST_Distance` or `ST_Intersects` functions. MySQL Spatial is supported but lacks advanced PostGIS features. Custom query scopes can bridge the gap for basic operations.
What Laravel versions does brick/geo officially support?
brick/geo is a PHP library with no Laravel-specific dependencies, so it works with any Laravel 8.x+ version. Test thoroughly with your target Laravel version, as some spatial database drivers (e.g., PostGIS) may have version-specific quirks. Check the package’s PHP version requirements (typically 8.0+) for compatibility.
Can I use brick/geo without PostgreSQL/PostGIS?
Yes, but with limitations. For pure PHP operations (e.g., distance calculations, basic geometry validation), no database is required. MySQL Spatial supports simple functions like `ST_Distance_Sphere`, but advanced features (e.g., polygon operations) may need PostGIS. Test performance for high-volume use cases.
How accurate are distance calculations in brick/geo?
Distance calculations use PHP’s `float` arithmetic, which can introduce precision errors for very large distances (e.g., antipodal coordinates). Validate results against known benchmarks or use PostGIS’s `ST_Distance` for higher accuracy. Cache frequent calculations in Redis to mitigate performance costs.
Is brick/geo suitable for real-time geofencing in Laravel?
Yes, but design carefully. Use brick/geo’s `Point` and `Polygon` objects to define geofences, then query PostGIS with `ST_Intersects` for real-time checks. For high-traffic apps, offload computations to a queue (e.g., Laravel Queues) and cache results to avoid database locks.
How do I serialize brick/geo geometries to GeoJSON for frontend use?
Use the `toGeoJson()` method on brick/geo objects (e.g., `Point`, `Polygon`) to generate GeoJSON strings. Pass this directly to JavaScript libraries like Leaflet or Mapbox. For APIs, return GeoJSON in responses with `response()->json()` or Laravel’s `JsonResponse`.
Are there alternatives to brick/geo for Laravel geospatial needs?
For PostGIS-heavy apps, consider `doctrine/dbal` for direct database queries. For pure PHP with simpler needs, `turf/turf-php` offers similar geometry operations but with a different API. Evaluate trade-offs: brick/geo excels in Laravel integration, while alternatives may offer broader GIS features.
How do I handle invalid geometries (e.g., self-intersecting polygons) in brick/geo?
Use brick/geo’s `isValid()` method to check geometries before operations. Invalid geometries throw exceptions during creation or validation. For user-uploaded data, implement a validation pipeline (e.g., Laravel Form Requests) to reject malformed inputs early.
What’s the best way to test brick/geo in a Laravel app?
Write unit tests with PestPHP or PHPUnit to verify geometry operations (e.g., `assertTrue($polygon->contains($point))`). Mock spatial database queries for Eloquent tests. Use `brick/geo`'s built-in assertions for validation. For integration tests, seed spatial data in a test PostGIS/MySQL database.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor