#18 [Q] Tips: Scroll con la rueda de ratón en Google Maps API

Este tip es de los que le da nombre a el blog, porque se te queda cara de tonto, bastante tonto, gilipollas al ver de dónde puede surgir un problema. Y cuando indagas un poco con el subidón de haberlo solucionado, todavía puedes venirte más abajo.

El problema: no quiero scroll con la rueda de ratón en mi mapa de GoogleMaps porque está dentro de una página con su propio scroll.
Solución: disableScrollWheelZoom()

Y te preguntarás.. ¿y entonces? Menuda mierda de tip. Puede que sí, de hecho puede que hasta te plantees que estoy mal porque tu no has usado en tu vida ese método y el mapa no toma por defecto el scroll con la rueda del ratón. Cierto, de hecho el comportamiento del mapa es que efectivamente por defecto, ese control no está activado, peroooo…. siempre hay peros en esta bonita profesión.

Resulta que te ha dado en su día por usar un método que venía en la API V2 denominado setUIToDefault(), que por cierto es un método que aunque lo puedas encontrar en la búsqueda de Google, cuando llegas a la página referenciada, dentro de la propia documentación de GoogleMaps… ya no está!

Resulta que este método de pone la interfaz de controles del mapa a los valores clásicos, y de paso te deja el regalito de habilitarte el scroll del ratón. ¡Oh! ¡Pero qué bonito! Gracias, porque además de meterme un comportamiento que no es el de por defecto, dentro de un método que lleva la palabra “Default” (+1 para ese empleado cachondo de Google!!!) hace que sea inutil cualquier llamada a disableScrollWheelZoom() antes de la llamada a setUIToDefault… y gracias a que la documentación sobre ambos métodos (uno no existe (o al menos no es fácilmente localizable), y el otro es bien escaso) no contempla esta incompatibilidad… pues a ver si te lo fabricas tu solo!

En resumen, si queires ahorrate añadir controles a los mapas usa setUIToDefault(), pero que sepas que entonces tendrás que añadir disableScrollWheelZoom() SIEMPRE DESPUÉS si no quieres el incómodo comportamiento de un mapa con scroll interno con la rueda del ratón.

function initialize()
{
if (GBrowserIsCompatible())
{
map = new GMap2(document.getElementById("map"));
map.setUIToDefault();

map.disableScrollWheelZoom();
geocoder = new GClientGeocoder();
mostrarMapaCompleto();
}
}

Moraleja, empecemos a usar GMap V3 que tiene cosas bastante más intereantes además de un método de inicialización mucho más limpito.