menu

omitsis

digital challenges

blog

Integracion de Google Maps v3 en Drupal 6

Ya existen varios módulos que añaden un campo de geolocalización a los tipos de contenido del drupal, pero lo único que te permite usar un widget de google maps para indicar los campos "latitud" y "longitud" es el módulo location:

http://drupal.org/project/location

que desgraciadamente todavía no hay versión del drupal 7, aunque está en desarrollo. - Siempre es un buen indicador de que un módulo tenga versión del drupal 7 o como mínimo un desarrollo activo para saber que el módulo no está obsoleto.

Una vez instalado este módulo, ya podemos añadir un tipo CCK de tipo "geolocalización". Pero es poco útil escribir una latitud y una longitud, así que usaremos el módulo de gmaps para añadir un widget de mapa para poder indicar el punto geográfico con un solo click.

http://drupal.org/project/gmap

Una vez instalado este módulo, cuando añadimos un campo CCK en un tipo de contenido de geolocalización, podemos elegir la opción de "gmap widget" para mostrar el campo.

Pero no todo es tan sencillo. El módulo de gmap funciona con la API de google maps versión 2, y si echamos un vistazo rápido a su web, vemos que ya la han dejado de soportar desde el 2010 y que ahora, el 2012 ya está declarada obsoleta. Gmaps funciona únicamente con la versión 3.

La solución está investigando mínimamente por internet, ya se abrió la "issue" en drupal hace un tiempo:
http://drupal.org/node/818638.

En la respuesta # 86 está el nuevo módulo que funciona con la versión 3 de gmaps.
http://drupal.org/files/issues/gmap_v3_1.zip
Gmaps v3 no necesita de una "API key" por lo tanto en los settings no debemos indicar nada.

Como alternativa a location + gmaps está el mapstraction módulo. Este es más completo, pero no hay versión posible con gmaps v3. Si se quiere mostrar información con un mapa, deberá ser como mucho en OpenLayers pero no en gmaps, que todavía está pensado para la versión 2 (te pide la "API key" básicamente)

Una vez asegurados de que nuestro sitio web aguantará unos años, queremos cambiar los "markers" del mapa por unos un poco más trabajados. Por ello activaremos el módulo "gmap taxonomy markers" y crearemos un nuevo vocabulario que se llamará markers y añadiremos 3 palabras a este vocabulario: tipo1, tipo2 y tipo3. El vocabulario afectará al tipo de contenido que queremos geolocalizar. Evidentemente todo esto se hace por settings del backend.

Con este módulo activado vemos que podemos elegir cuál es el marker preestablecido para mostrar. Como no nos gusta ninguna, añadiremos nuevos: a root_site/sites/all/modules/gmap/markers copiaremos las fotos png de los nuevos markers. Estas fotos deben tener un tamaño cerca de 25x25 px. Lo más importante es a qué píxel está el punto medio, porque lo tendremos que indicar después.

Una vez subidas las nuevas fotos de los markers, el drupal debe reconocer que tiene estos nuevos markers de alguna manera. Por ello, en la misma carpeta debemos crear un fichero con extensión .ini, el nombre no importa, por ejemplo: nuevosmarkers.ini, este nuevo archivo tendrá una forma similar a los demás .ini que hay en la misma carpeta. Investigando un poco el módulo de gmaps, se ve que lee por defecto todos los archivos. Ini.

Escribimos esto en el nuevo fichero:
; Defaults
[Defaults]
shadow = "shadow1.png", si es que hemos puesto una sombra a todos los markers, importante que el punto medio debe coincidir
anchorX = 10; el n más importante, porqué marca el punto en concreto en el mapa
anchorY = 32; lo suficientemente grande para que muestre el marker entero
infoX = 17; lo suficientemente grande para que muestre el marker entero
infoY = 3; lo suficientemente grande para que muestre el marker entero

; Marker sets
[Nombre1]
name = "Marker guay 1"
sequence = "tipus1.png"

[Nombre2]
name = "Marker guay 2"
sequence = "tipus2.png"

[Bustia3]
name = "Puntero 3"
sequence = "tipus3.png"

Con esto ya le podemos indicar a cada palabra de la taxonomía qué Marker en concreto queremos. Ahora sólo queda crear el contenido y hacer una "views" de tipo "gmaps" que muestre todos los contenidos que tipo de contenido = contenido que tiene geolocalización y taxonomía.

Si hacemos la página de esta views, y la guardamos, vemos que cada contenido tiene el propio marker según la taxonomía de cada contenido.

Espero que sea de ayuda para alguien.

google maps
innovació
drupal