Directorio con búsqueda geolocalizada en Drupal
Cómo crear un sitio web de directorio y listados con búsqueda geolocalizada en Drupal
Conviene detenerse, antes que nada, sobre la sorprendente longevidad del modelo: los sitios de directorio y listados resisten con una solidez que pocos formatos digitales pueden reclamar. Directorios sanitarios, guías de comercios de barrio, plataformas de coworkings que se filtran por proximidad. Cambia el sector, no la estructura. Por debajo siempre encontramos lo mismo: una base de datos de entidades con su anclaje geográfico, un buscador con filtros que importan al usuario y mapas con los que se interactúa de verdad. De los CMS disponibles, Drupal probablemente sea el que mejor encaja con esta lógica, gracias a su arquitectura de entidades y campos, al músculo de Views y a un ecosistema de módulos contribuidos que va de la geocodificación a la búsqueda facetada.
Casos de uso: para qué sirve un directorio geolocalizado
Antes de pisar la parte técnica, vale la pena pensar dónde aporta valor real una pieza así.
Directorios de profesionales
Pensemos en colegios profesionales, asociaciones sectoriales o plataformas de intermediación cuya razón de ser es que alguien encuentre a un abogado, un dentista o un fontanero cerca de casa. La ficha recoge contacto, especialidades, horarios y, por supuesto, una dirección geolocalizada que sostiene todo lo demás.
Directorios de comercios y servicios locales
Cámaras de comercio, ayuntamientos y plataformas privadas que agregan el tejido comercial de una zona. ¿Qué pueden ofrecer frente a Google Maps? La curación, esa labor humana de seleccionar y verificar, junto con información que Maps no contempla y funcionalidades transaccionales como reservas o cupones.
Marketplaces de servicios con componente local
Aquí los proveedores publican su perfil y los usuarios buscan cruzando zona y tipo de servicio. Suelen incorporar valoraciones, portfolios y un sistema de solicitud de presupuesto que convierte la consulta en oportunidad.
Módulos clave del ecosistema Drupal
Un directorio geolocalizado se levanta combinando módulos del core con piezas contribuidas. Elegir bien evita desarrollos a medida que rara vez se justifican.
Geofield: el campo geográfico
Geofield aporta un tipo de campo capaz de almacenar datos geográficos (puntos, líneas, polígonos) en formato WKT/WKB. Para un directorio lo habitual es trabajar con puntos: latitud y longitud, sin más. Se integra con el sistema estándar de campos y puede asociarse a cualquier tipo de contenido o entidad personalizada.
Geocoder: convertir direcciones en coordenadas
Geocoder hace lo que su nombre anuncia: traduce direcciones postales en coordenadas. Lo hace apoyándose en proveedores como Google Maps Geocoding API, Nominatim (OpenStreetMap) o Mapbox. Se configura como un proceso automático ligado a un campo de dirección del módulo Address. Cuando el editor escribe la dirección, Geocoder calcula latitud y longitud y las deposita en el Geofield asociado.
Address: direcciones postales estructuradas
Address ofrece un campo de dirección postal respetuoso con los formatos de cada país. Es la fuente de datos que alimenta al Geocoder y, además, permite filtrar listados por ciudad, provincia o código postal sin necesidad de tocar coordenadas.
Views: la columna vertebral de la presentación
Views, que vive dentro del core de Drupal, es quien arma las páginas de listado. Define qué campos se ven, qué filtros se exponen, cómo se ordena el contenido y bajo qué formato se presenta al usuario. En un directorio geolocalizado, Views se entiende con plugins que renderizan los resultados sobre un mapa interactivo.
Search API y Facets: búsqueda avanzada
Cuando los listados se cuentan por miles, Search API permite indexar el contenido en Apache Solr o Elasticsearch. Facets, por su parte, genera filtros laterales dinámicos (categoría, ciudad, rango de precios) que se actualizan en vivo y muestran cuántos resultados quedan en cada opción. Si se suma Search API Location, las búsquedas por proximidad pasan a estar indexadas con rendimiento óptimo.
Leaflet y Leaflet Views: mapas interactivos
Leaflet integra la librería Leaflet.js para pintar mapas interactivos. Leaflet Views proyecta los resultados de una View sobre el mapa, con marcadores geolocalizados, popups informativos y clustering automático. Es la opción preferida para escapar de la dependencia y el coste de Google Maps, ya que funciona con tiles gratuitos de OpenStreetMap.
Alternativa: Google Maps con Geofield Map
Si el proyecto pide Google Maps por motivos concretos, Geofield Map proporciona un widget para la edición y un formatter para la visualización. También conversa con Views para mostrar listados sobre Google Maps.
Configuración del tipo de contenido
La arquitectura de contenido es el cimiento sobre el que descansa lo demás.
Campos esenciales del listado
Un tipo de contenido "Listado" tipo suele reunir: título, descripción (campo body), dirección postal (Address), coordenadas geográficas (Geofield, alimentado por Geocoder), categoría (referencia a taxonomía), imagen principal y galería (campos Media), teléfono, email y sitio web (campos Link), horarios de apertura (campo Office Hours) y los datos específicos del vertical.
Taxonomías para la clasificación
Conviene crear un vocabulario de taxonomía para cada dimensión que importe: categoría principal, subcategorías, zona geográfica, etiquetas para rasgos especiales. Estas taxonomías nutren los filtros facetados y, de paso, generan páginas de categoría con valor SEO por derecho propio.
Permisos y flujos de publicación
Si el directorio permite que cada establecimiento gestione su propia ficha, hay que configurar roles específicos con permisos acotados a sus contenidos. Content Moderation, por su parte, articula un flujo en el que los listados pasan por revisión antes de hacerse públicos.
Búsqueda geolocalizada: filtros por proximidad
La búsqueda por proximidad es lo que separa, en el fondo, un directorio geolocalizado de un simple listado con filtros de texto.
Filtro por radio con Views y Geofield
Para directorios de tamaño moderado, Geofield ofrece un filtro de proximidad para Views que calcula la distancia entre cada listado y un punto de referencia. El usuario fija un radio y los resultados se ordenan según se acercan o se alejan. El planteamiento aguanta bien volúmenes contenidos, aunque tiende a ralentizarse cuando se acumulan decenas de miles de registros.
Búsqueda geográfica con Search API Solr
Para directorios grandes, Search API Solr admite campos de tipo LatLonPointSpatialField que habilitan consultas espaciales eficientes: búsqueda por radio, por bounding box y ordenación por distancia, con tiempos de respuesta de milisegundos al margen del volumen. Search API Location facilita la configuración.
Geolocalización del usuario
La API de Geolocalización del navegador obtiene las coordenadas del dispositivo, siempre con consentimiento explícito. Para quien prefiera no compartir su ubicación, conviene ofrecer un campo de texto donde teclear una dirección o un código postal que se geocodifica en el servidor.
UX de búsqueda: la experiencia que fideliza
Un directorio puede presumir de la mejor arquitectura técnica imaginable. Si la búsqueda frustra, el usuario no regresa.
Resultados en lista y mapa simultáneos
La interfaz que mejor funciona suele ser la vista dividida: tarjetas de resultados a un lado, mapa con sus marcadores al otro. Cuando el cursor sobrevuela un resultado, el marcador correspondiente se resalta. Esa sincronización se resuelve con JavaScript a medida o, más cómodo, con módulos como Leaflet Views.
Filtros visibles y autocompletado
Los filtros facetados deben estar a la vista, sin esconderse bajo menús desplegables. Muestra el número de resultados junto a cada opción. Search API Autocomplete añade sugerencias en tiempo real en el campo de búsqueda principal.
Rendimiento con muchos listados
Conforme el directorio crece, el rendimiento deja de ser un detalle para convertirse en prioridad.
Caché y lazy loading
Activa la caché de página completa para los listados públicos. Implementa lazy loading del mapa y clustering de marcadores con Leaflet MarkerCluster, que reagrupa lo cercano y aligera el DOM. Para resultados paginados, Views Infinite Scroll mejora la experiencia en dispositivos móviles.
Monetización del directorio
Un directorio bien construido admite varias vías de ingresos.
Listados premium y suscripciones
Una opción habitual es ofrecer fichas premium con más visibilidad, fotos adicionales o un sello de verificación. Se resuelve con un campo en el tipo de contenido que pesa en la ordenación dentro de Views. Drupal Commerce con Commerce Recurring se encarga de las suscripciones con renovación automática para distintos niveles de servicio.
Generación de leads y publicidad
El modelo también puede apoyarse en leads: el usuario solicita presupuesto desde la ficha y el directorio cobra por cada lead cualificado. Webform permite armar este flujo. Para publicidad contextual, una integración con Google Ad Manager organiza los espacios publicitarios.
Tu directorio, tu plataforma, sin techos impuestos
Levantar un directorio geolocalizado obliga a rigor en tres frentes que dialogan entre sí: arquitectura de contenido, decisiones de búsqueda y experiencia de usuario. Drupal aporta una base sólida, con módulos maduros que cubren desde la geocodificación hasta la búsqueda facetada, pasando por mapas interactivos y modelos de monetización. La ventaja frente a soluciones SaaS reside, sobre todo, en que el resultado es un sistema extensible y escalable sin techos funcionales impuestos desde fuera.
Si tienes en mente un proyecto de directorio o plataforma de listados y quieres construirlo sobre una base técnica sólida, en Tangram Consulting contamos con experiencia en el desarrollo de este tipo de plataformas con Drupal. Cuéntanos tu proyecto y exploraremos juntos la mejor arquitectura para tus necesidades.