maycolmunoz/moon-leaflet

Leaflet field and component for MoonShine

Installs: 151

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/maycolmunoz/moon-leaflet

4.0 2025-12-05 02:07 UTC

This package is auto-updated.

Last update: 2026-01-05 02:31:27 UTC


README

Latest Version on Packagist Total Downloads License

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

🧱 Example Previews

Field Component
Field Example Component Example

Support MoonShine versions

MoonShine MoonLeaflet
4.0+ 4.0

🧩 Installation

composer require maycolmunoz/moon-leaflet

🚀 Usage

Field

use 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 true

Component

use 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).

🌍 Options for field and component

    ->layer('OpenStreetMap') // map layer (default: OpenStreetMap)
    ->minZoom(5) // minimum zoom (default: 5)
    ->maxZoom(18) // maximum zoom (default: 18)
    ->zoom(14) // initial zoom (default: 14)

🌍 Available Map Layers

Layer Name
OpenStreetMap
OpenTopoMap
CartoDB Dark Matter
CartoDB Positron
CartoDB Voyager
Esri WorldStreetMap
Esri Satellite