Sesión DrupalCamp Spain 2013: "Mapas y drupal, o cómo no perderse en el intento"

Mensaje de error

  • Deprecated function: Array and string offset access syntax with curly braces is deprecated en require_once() (línea 3186 de /home/carlos_personal/carloscamara.es/docroot/includes/bootstrap.inc).
  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; ctools_context has a deprecated constructor en require_once() (línea 127 de /home/carlos_personal/carloscamara.es/docroot/profiles/ccamara/modules/contrib/ctools/ctools.module).
  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; ctools_context_required has a deprecated constructor en require_once() (línea 127 de /home/carlos_personal/carloscamara.es/docroot/profiles/ccamara/modules/contrib/ctools/ctools.module).
  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; ctools_context_optional has a deprecated constructor en require_once() (línea 127 de /home/carlos_personal/carloscamara.es/docroot/profiles/ccamara/modules/contrib/ctools/ctools.module).
  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; panels_cache_object has a deprecated constructor en require_once() (línea 127 de /home/carlos_personal/carloscamara.es/docroot/profiles/ccamara/modules/contrib/ctools/ctools.module).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Notice: Trying to access array offset on value of type int en element_children() (línea 6541 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters en drupal_get_feeds() (línea 394 de /home/carlos_personal/carloscamara.es/docroot/includes/common.inc).
  • Deprecated function: The each() function is deprecated. This message will be suppressed on further calls en menu_set_active_trail() (línea 2404 de /home/carlos_personal/carloscamara.es/docroot/includes/menu.inc).

Durante los días 26 y 27 de octubre tuvo lugar en Cáceres la DrupalCamp Spain 2013 y allí nos desplazamos todo el equipo de Ymbra. Para quien no lo conozca, se trata del encuentro anual por excelencia de la comunidad drupalera española en el que se abordan temas sobre temas relacionados con drupal (cómo no), gestión de proyectos, sistemas, workflows... y en general aspectos relacionados con el mundo del desarrollo web a través de sesiones/comunicaciones de 45 minutos cada una (¡en esta edición hubo 44!), talleres de trabajo, BoFs, networking y cena. A diferencia de lo que hice en esta entrada sobre los DrupalDeveloperDays de Barcelona , en esta ocasión no hablaré tanto del evento en sí o de las sesiones a las que asistí (espero poder hacerlo más tarde), sino de la sesión que presenté: Mapas y Drupal, o como no perderse en el intento, en la que trato de dar una visión general de las opciones que tiene drupal para trabajar con mapas y presento y comparo tres soluciones distintas.

Hace tiempo que estamos acostumbrados a ver mapas en la web. Tanto es así que es cada vez más habitual ver aplicaciones web o móviles en las que la geolocalización o los mapas juegan un papel importante. Drupal no es una excepción y es posible realizar mapas como http://theintertwine.org/explore, geluidvannederland.nl o http://xi.bienalarquitectura.es/es/proyectos por poner unos pocos ejemplos. Sin embargo, no es menos cierto que conseguirlo no es algo trivial y quien haya intentado alguna vez trabajar en ello se habrá podido sentir abrumado por la gran cantidad de módulos existentes (a día de hoy existen más de 90 módulos que se ocupan de algún aspecto relacionado con localización o mapas, algunos de ellos excluyentes entre sí), configuraciones necesarias o conceptos tales como proyecciones, capas base, mapas, geocodificación, GIS... No solo eso, sino que además el panorama ha cambiado mucho en los últimos meses (por no hablar de cómo ha cambiado desde  que hice ArchTLAS o la web de la XI Bienal Española de Arquitectura y Urbanismo en drupal 6). Y la sesión va precisamente de eso: de tratar de poner orden a todo el caos para tener un drupal 7 con una solución de mapas bastante completa y funcional.

En la sesión se presentan los conceptos básicos que conforman un mapa en general para posteriormente dar una clasificación comentada de los módulos existentes más utilizados o más interesantes para geolocalizar y mostrar varias entidades en un mapas que permita entender hasta qué punto pueden combinarse para ofrecer soluciones completas o por el contrario son excluyentes. La sesión se complementará con la demostración práctica de utilización de tres soluciones que muestran mapas con leaflet, openlayers y getlocations.

Un aspecto que me gustaría destacar es la existencia de este repositorio en github pensado para poner práctica los conceptos de la presentación. En el repositorio he incluido todos los módulos necesarios y para hacer más fácil su utilización los he agrupado y configurado en cuatro features:

  • mapping demo: controla las dependencias de módulos compartidos (libraries, views...). Es requerida por el resto de features.
  • leaflet_demo_dc_spain: contiene los tipos de contenido, dependencias y configuraciones de views y mapas utilizando leaflet.
  • openlayers_demo_dc_spain: contiene los tipos de contenido, dependencias y configuraciones de views y mapas utilizando openlayers.
  • getlocations_demo_dc_spain: contiene los tipos de contenido, dependencias y configuraciones de views y mapas utilizando getlocations.

Así pues, quien quiera experimentar y poner en práctica los conocimientos aprendidos solo tiene que clonar el repositorio, instalarlo y activar la feature que corresponda.