🌍 MoonLeaflet — Leaflet for MoonShine Laravel Admin Panel
MoonLeaflet adds interactive map support to MoonShine. It allows users to select coordinates directly from a map or display multiple locations visually with Leaflet.
- Map field with draggable marker
- Multiple available map layers
- Works in Form, Detail, and Index views
- Component mode with multiple markers
- Optional user geolocation support
- Customizable zoom, drag, and layer
| Field | Component |
|---|---|
![]() |
![]() |
| MoonShine | MoonLeaflet |
|---|---|
| 4.0+ | 4.0 |
composer require maycolmunoz/moon-leafletuse MaycolMunoz\MoonLeaflet\Fields\LeafletField;
LeafletField::make('Location') // label
->initialPosition(latitude: 40.7580, longitude: -73.9855) //initial position
->columns('latitude', 'longitude') // columns in database
->draggable(true) // draggable market (optional) default is trueuse MaycolMunoz\MoonLeaflet\Components\LeafletMap;
LeafletMap::make('Business Locations') // label
->initialPosition(latitude: 40.7580, longitude: -73.9855) //initial position
->items(fn () => Business::all()
->map(function (Business $business) {
return [
'name' => $business->name,
'latitude' => $business->latitude,
'longitude' => $business->longitude,
];
})->toArray()) // Each item must include name, latitude, and longitude💡 The map will attempt to use the user's location if geolocation is enabled.
If unavailable, it defaults to coordinates(0, 0).
->layer('OpenStreetMap') // map layer (default: OpenStreetMap)
->minZoom(5) // minimum zoom (default: 5)
->maxZoom(18) // maximum zoom (default: 18)
->zoom(14) // initial zoom (default: 14)| Layer Name |
|---|
| OpenStreetMap |
| OpenTopoMap |
| CartoDB Dark Matter |
| CartoDB Positron |
| CartoDB Voyager |
| Esri WorldStreetMap |
| Esri Satellite |

