yemenpoint/filament-google-map-location-picker
A Filament form field for picking locations on Google Maps. Search or drag a marker to capture latitude and longitude, with optional address details saved to your model. Quick setup for Laravel Filament apps and location-based forms.
Architecture fit. The package is a Filament form field for the TALL stack (Livewire + Alpine + Blade) that wraps the Google Maps JS API and writes a picked coordinate back into form state. Server-side footprint is essentially nil: no migrations, no service layer, no queue work — one Blade view, one Alpine component, and asset registration in a service provider. That shallow integration is good for reversibility and bad for leverage: the whole product is a few hundred lines of front-end code, so the dependency buys very little you couldn't own outright.
Integration feasibility. Technically straightforward, but the last release is 2022-11-05, which predates Filament v3 (and v4). Filament's v3 rewrite changed custom-field APIs — asset registration, component/view resolution, form state handling — so assume incompatibility with v3+ until proven otherwise in a spike. Treat "compatible with our Filament major version" as the first gate, not an assumption.
Technical risk.
Key questions.
geography (which fixes precision and enables radius queries later)?Verdict. Capability value ~7/10; package-as-dependency ~4.5/10. Buy the pattern, not the package.
Stack fit. Comfortable only on Laravel 9/10 + Filament v2 + Livewire v2, with PHP constraints from the 8.0/8.1 era. On Filament v3/v4 + Livewire v3 this is a starting point for a fork, not a drop-in. Also verify Alpine version assumptions — Filament v3 ships Alpine v3.
Migration path, ranked.
LocationPicker field: Blade view + Alpine, FilamentAsset::register() for Maps JS, companion state fields, explicit lat/lng validation rules. 2–4 senior-dev days including tests. Eliminates lifecycle risk and lets you shape the API to the domain.app/Filament/Fields/. Swapping implementation later becomes a one-file change.dotswan/filament-map-picker, cheesegrits/filament-google-maps) on v3/v4 support, release cadence, and issue responsiveness. Stars are not maintenance.Compatibility checks. CSP must allow Google Maps across script-src, img-src, and connect-src; confirm config caching doesn't drop the API key; confirm the field survives modal open/close re-renders without duplicating map instances.
Sequencing.
.env plumbing.Maintenance. Effectively zero upstream. Budget for it as a vendored component: pin the exact version, audit on every Composer update, and assume you own each future Filament upgrade. That ownership cost is why in-house usually wins on total cost of ownership past twelve months.
Support. No maintainer SLA, no issue triage, no peer knowledge base at 0 dependents. Internal support rests on whoever writes the wrapper — document the key-rotation runbook and the "map won't load" triage path.
Scaling. Two axes. Cost scales with form renders, not users: every admin form open that mounts the map is a billable Dynamic Maps load, linear in admin activity and invisible until the invoice. Mitigate with lazy-load-on-toggle and a hard budget alert. Payload is the second axis: Maps JS is heavy and will degrade admin time-to-interactive if registered globally.
Failure modes.
decimal(10,7).Ramp-up. A Filament-fluent dev is productive on the field in under a day. The slow work is cross-functional: GCP and billing ownership with platform ops, CSP changes with security, and privacy review if the field ever reaches an unauthenticated surface. Plan a week end-to-end including approvals.
Decision. Approve a two-day spike on Filament v2 to extract the pattern; do not adopt it as a long-lived dependency. If the target is Filament v3+, skip to an in-house field or a vetted, actively maintained alternative.
How can I help you explore Laravel packages today?