Download the PHP package lbcdev/filament-maps-fields without Composer
On this page you can find all versions of the php package lbcdev/filament-maps-fields. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package filament-maps-fields
Filament Maps Fields
Componentes de Filament para trabajar con mapas interactivos usando Leaflet.js.
Este paquete proporciona campos de formulario y entradas de infolist para seleccionar ubicaciones en mapas interactivos dentro de paneles de administración Filament.
Características
✨ Dual Mode - Soporta dos modos de almacenamiento:
- Modo JSON (recomendado): Guarda coordenadas como
{latitude: X, longitude: Y}en un solo campo - Modo Legacy: Guarda coordenadas en campos separados para compatibilidad con código existente
🗺️ Mapas Interactivos - Basado en Leaflet.js con soporte completo para:
- Click para seleccionar ubicación
- Pegar coordenadas desde el portapapeles
- Zoom y navegación
- Modo solo lectura
🎨 Integración Perfecta con Filament - Funciona como cualquier otro campo de Filament:
- Validación integrada
- Soporte para notación de punto (dot notation)
- Compatible con formularios y recursos
Requisitos
- PHP 8.1 o superior
- Laravel 10.x, 11.x o 12.x
- Filament 3.x o 4.x
- Livewire 3.x
Instalación
1. Instalar el paquete via Composer
Este paquete instalará automáticamente sus dependencias:
lbcdev/livewire-maps-core- El componente Livewire baselbcdev/map-geometries- Clases de geometría para mapas
2. Incluir Leaflet.js en tu panel de Filament
Opción recomendada: Usando RenderHook
Agrega el siguiente código en tu AdminPanelProvider (o el provider de tu panel):
Nota: El hook incluye automáticamente Leaflet.js y Leaflet.draw (requerido para MapBoundsField).
Opción alternativa: Layout personalizado
Si estás usando un layout personalizado de Filament, agrega estos scripts en el <head> (antes de @livewireStyles):
3. (Opcional) Publicar configuración
Si deseas personalizar la configuración del mapa:
Uso Básico
Componentes Disponibles
Este paquete incluye dos componentes principales:
- MapField - Seleccionar un punto en el mapa (latitud/longitud)
- MapBoundsField - Seleccionar un área rectangular (bounds)
Ambos componentes soportan Dual Mode (JSON y Legacy).
MapField en Formularios
El componente MapField te permite agregar un mapa interactivo a tus formularios de Filament. Los usuarios pueden hacer clic en el mapa para seleccionar una ubicación.
MapField soporta dos modos de operación:
- Modo JSON (Recomendado) - Las coordenadas se guardan como JSON en un solo campo
- Modo Legacy - Las coordenadas se guardan en campos separados de latitud/longitud
Comparación Rápida
| Característica | Modo JSON | Modo Legacy |
|---|---|---|
| Configuración | MapField::make('location') |
MapField::make('map')->latitude('lat')->longitude('lng') |
| Campos en BD | 1 campo JSON | 2 campos decimales |
| Simplicidad | ✅ Muy simple | ⚠️ Requiere configuración |
| Uso recomendado | Proyectos nuevos | Proyectos existentes con campos separados |
| Migración | Fácil desde Legacy | - |
Modo JSON (Recomendado)
En este modo, el campo guarda las coordenadas como un objeto JSON {latitude: X, longitude: Y} directamente en el campo especificado.
Ventajas del Modo JSON
✅ Más simple - No necesitas configurar campos adicionales ✅ Más limpio - Un solo campo en la base de datos ✅ Más intuitivo - El campo del mapa guarda la ubicación ✅ Menos propenso a errores - No hay que sincronizar múltiples campos
Estructura de Base de Datos
Modelo
Uso en Formulario
Acceder a las Coordenadas
Modo Legacy (Campos Separados)
En este modo, el campo del mapa es "virtual" y actualiza campos separados de latitud y longitud. Este modo existe para mantener compatibilidad con código existente.
Cuándo Usar Modo Legacy
- Cuando ya tienes una base de datos con campos
latitudeylongitudeseparados - Cuando necesitas mantener compatibilidad con código existente
- Cuando otros sistemas esperan campos separados
Estructura de Base de Datos
Modelo
Uso en Formulario
Ejemplo con Campos Anidados (Dot Notation)
El modo Legacy también soporta notación de punto para campos anidados:
Migrar de Modo Legacy a Modo JSON
Si tienes una aplicación existente en Modo Legacy y quieres migrar a Modo JSON:
1. Crear migración para añadir campo JSON
2. Migrar datos existentes
3. Actualizar el modelo
4. Actualizar el formulario
5. (Opcional) Eliminar campos antiguos
Una vez verificado que todo funciona:
Configuración del MapField
El MapField acepta varios métodos de configuración:
Métodos Disponibles
latitude(string $field) - Solo Modo Legacy
Define el campo donde se guardará la latitud. Soporta notación de punto para campos anidados.
Nota: Si usas este método, el campo entra en Modo Legacy.
longitude(string $field) - Solo Modo Legacy
Define el campo donde se guardará la longitud. Soporta notación de punto para campos anidados.
Nota: Si usas este método junto con latitude(), el campo entra en Modo Legacy.
height(int $pixels)
Define la altura del mapa en píxeles.
zoom(int $level)
Define el nivel de zoom inicial del mapa (típicamente 1-20).
showPasteButton(bool $show = true)
Muestra u oculta el botón para pegar coordenadas desde el portapapeles.
showLabel(bool $show = true)
Muestra u oculta la etiqueta con las coordenadas actuales.
interactive(bool $interactive = true)
Define si el mapa es interactivo (clickable) o de solo lectura.
readOnly(bool $condition = true)
Alias de interactive(false) para mantener consistencia con la API de Filament.
Ejemplos Avanzados
Formulario Completo de Ubicación
Mapa de Solo Lectura en Vista
MapBoundsField - Seleccionar Área Rectangular
Modo JSON:
Modo Legacy:
Múltiples Ubicaciones en el Mismo Formulario
Configuración Global
Puedes personalizar los valores por defecto en config/livewire-maps.php:
Modo Debug
Para activar el modo debug y ver logs en la consola del navegador:
- Agregar
?map_debug=1a la URL - O configurar
APP_DEBUG_MAP=trueen tu archivo.env
Esto mostrará información detallada sobre los eventos del mapa y actualizaciones de coordenadas.
Estructura de Base de Datos Recomendada
Migración Básica
Migración con Campos Anidados (JSON)
Con el modelo correspondiente:
Compatibilidad
- ✅ Filament 3.x
- ✅ Filament 4.x
- ✅ Livewire 3.x
- ✅ Laravel 10.x, 11.x, 12.x
- ✅ PHP 8.1, 8.2, 8.3
MapEntry en Infolists
MapEntry muestra un mapa de solo lectura en infolists. Soporta Dual Mode igual que MapField.
Modo JSON:
Modo Legacy:
Próximas Características
- [ ] Soporte para múltiples marcadores en un solo campo
- [ ] Integración con servicios de geocodificación
- [ ] Soporte para otras geometrías (polígonos, líneas)
Soporte
Si encuentras algún problema o tienes sugerencias:
Licencia
Este paquete es software de código abierto licenciado bajo la Licencia MIT.
Créditos
- Desarrollado por LBCDev
- Construido sobre lbcdev/livewire-maps-core
- Utiliza Leaflet.js para los mapas
- Construido para Filament
All versions of filament-maps-fields with dependencies
filament/filament Version ^3.0|^4.0
illuminate/contracts Version ^10.0|^11.0|^12.0
lbcdev/livewire-maps-core Version ^1.0.0
spatie/laravel-package-tools Version ^1.16