Geofield Map
Proporciona una integración avanzada de Google Maps para mostrar y editar datos de Geofield en Drupal, incluyendo un widget de campo, formateador, plugin de estilo de Views y capacidades de tematización de mapas.
geofield_map
Install
composer require 'drupal/geofield_map:^11.1'
Overview
Geofield Map es una solución de mapeo integral para Drupal que integra Google Maps con el módulo Geofield. Proporciona un widget intuitivo basado en Google Maps para crear y editar datos geográficos, junto con potentes formateadores de visualización y un plugin de estilo de Views para renderizar mapas a partir de datos de geofield.
El módulo cuenta con capacidades avanzadas de tematización de marcadores a través de un sistema de Map Themer conectable, permitiendo asignar diferentes iconos de marcadores basados en el tipo de entidad, términos de taxonomía o valores de campos de lista. También incluye un bloque de leyenda para mostrar leyendas de mapas, soporte para agrupación de marcadores, separación de marcadores superpuestos mediante spiderfication, estilos de mapa personalizados, integración de geocodificación y carga diferida.
Las características principales incluyen soporte para las bibliotecas de mapas Google Maps y Leaflet en el widget, integración con Google Places Autocomplete, geolocalización HTML5, geocodificación inversa para rellenar automáticamente campos de dirección, y extensos controles de mapa y configuraciones de zoom. El módulo también proporciona hooks para que los desarrolladores extiendan y personalicen el comportamiento del mapa.
Features
- Widget de campo basado en Google Maps para crear y editar puntos geográficos con colocación de marcadores mediante arrastrar y soltar
- Formateador de campo de Google Maps para mostrar datos de geofield como mapas interactivos con marcadores e infowindows personalizables
- Plugin de estilo de Views (Geofield Google Map) para mostrar múltiples entidades como marcadores en un solo mapa
- Sistema de plugins Map Themer para asignar diferentes iconos de marcadores basados en tipo/bundle de entidad, términos de taxonomía o valores de campos de lista
- Bloque de leyenda para mostrar leyendas de mapas basadas en Map Themers configurados en Views
- Soporte para bibliotecas Google Maps y Leaflet.js en el widget
- Integración con Google Places Autocomplete para geocodificación de direcciones
- Integración con el módulo Geocoder para proveedores de geocodificación alternativos
- Soporte de geolocalización HTML5 para detección automática de ubicación
- Geocodificación inversa para rellenar automáticamente campos de dirección desde coordenadas del mapa
- Agrupación de marcadores usando la biblioteca MarkerClusterer para manejar grandes cantidades de marcadores
- Overlapping Marker Spiderfier (OMS) para manejar marcadores en la misma ubicación
- Soporte de estilos de mapa personalizados usando JSON de Google Maps Styling Wizard
- Contenido de infowindow cargado por Ajax para mejorar el rendimiento con muchos marcadores
- Carga diferida de mapas para mejor rendimiento de carga de página
- Configuración extensiva de controles de mapa (zoom, panorámica, tipos de mapa, escala, street view, pantalla completa)
- Soporte de GeoJSON para renderizar geometrías complejas (polilíneas, polígonos) con opciones de ruta personalizables
- Soporte de reemplazo de tokens para iconos de marcadores dinámicos y opciones de geometría
- Soporte de URL de API de Google Maps específica para China para localización
Use Cases
Mapa de Localizador de Tiendas
Crea un localizador de tiendas añadiendo un geofield a un tipo de contenido Tienda, luego creando una Vista con el estilo Geofield Google Map. Usa el Map Themer de Tipo de Entidad para asignar diferentes iconos de marcadores para diferentes tipos de tiendas (ej., minorista, almacén, outlet). Añade un bloque de Leyenda para ayudar a los usuarios a entender el significado de los marcadores.
Mapeo de Ubicaciones de Eventos
Para un sitio web de eventos, usa el widget de Geofield Map para permitir a los editores de contenido colocar fácilmente ubicaciones de eventos en un mapa. Habilita Google Places Autocomplete para entrada rápida de direcciones, y configura el campo Geoaddress para rellenar automáticamente un campo de texto con la dirección obtenida por geocodificación inversa.
Listados de Propiedades con Marcadores por Categoría
Para un sitio inmobiliario, crea un tipo de contenido de propiedad con un geofield y una taxonomía de tipo de propiedad (ej., Casa, Apartamento, Comercial). Usa el Map Themer de Término de Taxonomía para mostrar diferentes iconos de marcadores para cada tipo de propiedad. Habilita la agrupación de marcadores para áreas con muchos listados.
Blog de Viajes Interactivo
Usa el formateador de Geofield Map en publicaciones del blog para mostrar la ubicación sobre la que trata cada publicación. Configura infowindows para mostrar contenido de entidad renderizado con imágenes destacadas, y usa estilos de mapa personalizados para una estética única que coincida con el diseño del sitio.
Recolección de Ubicación de Usuarios
Para un sitio comunitario, usa el widget de Geofield Map con geolocalización HTML5 habilitada para permitir a los usuarios compartir su ubicación. Oculta las entradas de coordenadas por simplicidad, y muestra un botón 'Encontrar mi ubicación' para detección automática.
Mapeo de Rutas/Senderos
Para senderos de senderismo o ciclismo, usa el soporte de Geofield para geometrías complejas. Almacena rutas de senderos como LineStrings en geofield, y usa las map_geometries_options del formateador para estilizar las rutas con colores y anchos personalizados basados en el nivel de dificultad usando reemplazos de tokens.
Tips
- Siempre usa Map Themers de 'Image Select' en lugar de versiones de 'Image Upload' para compatibilidad de sincronización de configuración entre entornos.
- Habilita la carga diferida para mapas debajo del pliegue para mejorar el rendimiento de carga inicial de la página.
- Usa agrupación de marcadores cuando muestres más de 50-100 marcadores para mantener el rendimiento y usabilidad del mapa.
- Para rendimiento con muchos marcadores, usa carga de infowindow por 'Ajax' en lugar de contenido de entidad pre-renderizado.
- Coloca archivos de iconos de marcadores en la carpeta de ubicación de marcadores configurada para hacerlos disponibles en el desplegable de selección de archivos.
- Usa reemplazo de tokens en rutas de iconos para asignar dinámicamente marcadores basados en valores de campos de entidad sin necesitar un Map Themer.
- Habilita el módulo Geocoder para más opciones de proveedores de geocodificación más allá de los servicios de Google.
- Los estilos de mapa personalizados pueden generarse usando Google Maps Styling Wizard (https://mapstyle.withgoogle.com/) y pegarse en las opciones de estilo personalizado.
- El bloque de Leyenda solo funciona con Views que usan Map Themers - lee la configuración del themer desde la visualización de vista seleccionada.
Technical Details
Admin Pages 1
/admin/config/system/geofield-map-settings
Configura los ajustes globales para el módulo Geofield Map incluyendo la clave de API de Google Maps, configuración del geocodificador y opciones de tematización de marcadores.
Permissions 1
Hooks 7
hook_geofield_map_latlon_element_alter
Permite a los módulos añadir o alterar los ajustes JavaScript del elemento geofield map antes de renderizar el widget.
hook_geofield_map_googlemap_view_style_alter
Permite a los módulos añadir o alterar los ajustes JavaScript del mapa para el plugin de estilo de Views antes de renderizar.
hook_geofield_map_googlemap_formatter_alter
Permite a los módulos añadir o alterar los ajustes JavaScript del mapa para el formateador de campo antes de renderizar.
hook_geofield_map_views_feature_alter
Permite a los módulos ajustar propiedades individuales de características/marcadores en el plugin de estilo de Views antes de renderizar.
hook_geofield_map_formatter_feature_alter
Permite a los módulos ajustar propiedades individuales de características/marcadores en el formateador de campo antes de renderizar.
hook_geofield_map_themer_info_alter
Permite a los módulos alterar las definiciones de plugins Map Themer.
hook_leaflet_tile_layer_info_alter
Permite a los módulos alterar las definiciones de plugins de capa de tiles de Leaflet.
Troubleshooting 7
Asegúrate de que tu clave de API de Google Maps esté correctamente configurada en /admin/config/system/geofield-map-settings. La clave de API debe tener Maps JavaScript API habilitada en Google Cloud Console. Revisa la consola del navegador para errores de API.
Habilita Geocoding API y Places API en tu proyecto de Google Cloud Console. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud ya que estas APIs requieren una cuenta de facturación activa.
Verifica que los archivos de marcadores existan en la ubicación de marcadores configurada (por defecto: public://geofieldmap_markers). Asegúrate de que las extensiones de archivo coincidan con las extensiones permitidas en los ajustes. Para themers de carga de archivos, verifica que los archivos tengan estado permanente.
Usa las versiones 'Image Select' de los Map Themers (que terminan en 'url') en lugar de las versiones 'Image Upload'. Las versiones de carga almacenan IDs de archivo que no son portables entre entornos.
El widget de Leaflet en Geofield Map usa una implementación simplificada. Para características avanzadas de Leaflet, considera usar el módulo Leaflet dedicado en combinación con Geofield.
Usa la opción 'Entidad renderizada vía Ajax' para el contenido de infowindow, que carga el contenido de la entidad solo cuando se hace clic en un marcador en lugar de pre-renderizar todos los infowindows.
Habilita la opción Overlapping Marker Spiderfier (OMS) en los ajustes del mapa para separar los marcadores superpuestos cuando se hace clic.
Security Notes 3
- Las claves de API de Google Maps deben restringirse a tu(s) dominio(s) en Google Cloud Console para prevenir uso no autorizado.
- Cuando uses el sistema de archivos privado para marcadores, asegúrate de que los controles de acceso apropiados estén en su lugar.
- El permiso 'configure geofield_map' solo debe otorgarse a administradores de confianza ya que permite acceso a la configuración de la clave de API.