Weave 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
Filament Map Picker

Filament Map Picker Laravel Package

doode/filament-map-picker

A Filament form field that lets users pick a location on an interactive map, saving latitude and longitude directly to your model. Drop it into any resource form for fast, accurate address or coordinate selection with minimal setup.

View on GitHub
Deep Wiki
Context7

doode/filament-map-picker adds an interactive map picker field to Filament forms. Users can visually select a location and save its latitude and longitude directly to your Eloquent model—no manual coordinate entry needed.

  • Drop-in Filament form field for location selection
  • Click or drag a map marker to update coordinates
  • Configurable default center, zoom, and field names
  • Stores latitude/longitude in standard model columns
  • Works with Filament panels and Laravel models
Frequently asked questions about Filament Map Picker
How do I install doode/filament-map-picker in a Laravel Filament app?
Install it with Composer, register the plugin via the ->plugin() method in your panel provider, then add MapPicker::make('location') to a resource or form schema. For a Filament-fluent developer the realistic effort is about half a day including a smoke test. The mechanical steps are cheap; the real work is deciding how the field persists state in your database.
Which Laravel, Filament, Livewire, and PHP versions does it support, and is Filament v4 supported?
The package targets Laravel 10 and 11 with Filament v3 panels, Livewire 3, and PHP 8.1 or newer. Filament v4 support is not confirmed here, so check the composer.json constraints before committing. Because form-field internals like asset registration and Alpine state hydration churn between Filament majors, a plugin this young is unlikely to track a v4 transition on your timeline, and it may become a blocker mid-migration.
What does the map picker field actually save: GeoJSON, a JSON blob, or separate latitude and longitude columns?
The persisted state shape is not documented in the available evaluation and must be verified from source before you commit. The likely options are a single JSON or geometry column, a GeoJSON string, or fan-out to paired lat/lng columns. That choice propagates into schema design, API serialization, and every downstream spatial query, so confirm it rather than assume.
Does the field support polygons, polylines, and circles, or only a single point pin?
The component layers Geoman.io draw tools on top of a Leaflet map, which suggests support beyond a simple point pin. Whether arbitrary geometry such as polylines, polygons, and circles is exposed and configurable per field is not confirmed in the assessment. Check the field's configuration API to see if you can restrict a field to point-only.
Are Leaflet and leaflet-geoman assets bundled or loaded from a CDN, and can I vendor them for CSP or air-gapped environments?
The evaluation indicates Leaflet and leaflet-geoman-free are typically injected via CDN through the plugin's asset manager. That is a hard external runtime dependency on every form render plus a supply-chain surface some organizations will not accept. Vendoring for air-gapped or strict Content Security Policy environments is not evidenced, so verify whether assets can be published and served locally. Also confirm the license of the Geoman distribution you end up shipping, since the package itself is MIT.
Does the package validate coordinates or handle geocoding and reverse geocoding?
No. There is no server-side geocoding, reverse geocoding, geometry sanity validation, spatial indexing, or coordinate transformation in the package. It gives admins a way to drop a pin or draw a shape and persist the result. Any validation of latitude and longitude ranges or geometry correctness is your build, so add rules to the form or a model observer.
Is doode/filament-map-picker production-ready and actively maintained?
It is very young: first release around August 2025, roughly seven stars, zero dependents, and a single maintainer. There is no evidenced test suite or CI, and no community cohort to absorb breakage, making it an effectively sole-source dependency. You would be among the earliest serious adopters and should expect to find edge cases and possibly fork it. A documented upgrade or deprecation policy is also not evident.
Can I use the default OpenStreetMap tiles in production with this package?
Default OpenStreetMap tile usage is not licensed for production traffic volumes. This is a policy and compliance risk that lands on your team, not the package. Plan to configure a commercial tile provider or self-hosted tile server before going live beyond internal or low-volume usage.
How does this compare to building a custom Filament map field or using a dedicated geo package?
This package is a Filament form field that renders a Leaflet map and syncs geometry back into Livewire state; it is not a geo backend. If your requirements stop at letting an admin pick or draw a location and persist it, adopting it saves you the component work. Anything involving geocoding, spatial queries, or geometry validation would be your build either way, so a custom field wrapping Leaflet may be worth it if you need tighter control over assets and persistence.
How do I migrate an existing latitude and longitude schema to the map picker field?
You have two paths. You can adopt the package's native shape, such as a single JSON or geometry column, and add generated or virtual lat/lng accessors for existing read paths, which is cleaner long term but costs a backfill and a read-path audit. Alternatively you can keep your split decimal columns and bridge the field with afterStateUpdated() and dehydrateStateUsing() callbacks. Confirm the actual persisted shape first, because the bridge hooks depend on it.
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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect