...es la web donde encontrará Artículos que debe leer,
si quiere Destacar con su Empresa en Internet
Hello Google, su primera posición en Internet: HelloGoogle es la web donde encontrará Artículos que debe leer si quiere Destacar con su empresa en Internet

Dom
12
Ago '07

Google Heat Maps: Añada color en sus mapas de Google

Google Heat Maps

Hacía tiempo que venía observando webs 2.0 ( pejm: http://www.trulia.com/home_prices/ ) que utilizaban Heat Maps para mostrar de una manera muy sencilla y clara información geográfica. Cuando revisé el Api de Google para ver cómo se podía conseguir este efecto, me llamó la atención que no estaba soportado de manera nativa y que era necesario realizarlo de una manera más o menos artesanal.

El código

En la siguiente página he preparado un ejemplo donde he destacado algunos países europeos con colores elegidos al azar.

Cómo se crea una silueta

Para mostrar líneas y polígonos en los mapas se utiliza VML (Vector Markup Language), recuerde incluir  el VML namespace al comienzo de su documento:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 

La clase GPolygon del API de Google Maps ofrece funciones para dibujar polígonos en el mapa.

Para nuestro ejemplo he creado la función createPolygon que permite dibujar una silueta vectorial en el mapa pasando tres parámetos:

  1. pts_map: Codificación de las coordenadas de los puntos que conforman el polígono.
  2. lvls_map: Codificación de los niveles que conforman el polígono.
  3. num: Valor entre 1 y 6, cada valor tiene  un color para la silueta.

Cómo obtener los valores de la silueta

A fecha de hoy no conozco ninguna herramienta que permita obtener de manera automática estos valores por lo que es necesario recurrir a un método un tanto artesanal:

  1. Acceda a la sección Mis Mapas en http://maps.google.es/ y haga click en la opción Crear un mapa nuevo.
  2. Ahora viene el trabajo más tedioso, en la zona superior del mapa encontrará un icono para dibujar formas, selecciónelo y comience a pintar los puntos que delimitan la región sobre la que quiere trabajar. Recuerde que cuanto mayor sea el zoom, mejor será la calidad del Heat Map.
  3. Cuando haya terminado haga doble click y elija un nombre para guardar el polígono.
  4. En la esquina superior derecha encontrará la opción Enlazar a esta página, copie esta url en su navegador.
  5. En la nueva página, busque dentro del código HTML el nombre que le dio a su polígono hasta encontrar una cadena similar a esta:

    name:"Forma 1",description:"",polylines:[{id:"0",points:"ol|oFxbaS~df@h`]rqNmfg@qxp@o_d@a~Cren@",levels:"BBBBB"

  6. Por tanto la codificación de las coordenadas de nuestro polígono sería: [{id:"0",points:"ol|oFxbaS~df@h`]rqNmfg@qxp@o_d@a~Cren@ y la codificación de los niveles: BBBBB
  7. El código javascript correspondiente sería:
    createPolygon("ol|oFxbaS~df@h`]rqNmfg@qxp@o_d@a~Cren@","BBBBB",5)

Algunas observaciones

Debe tener en cuenta que los Heat Maps consumen bastante resursos de su sistema, un mapa con muchos polígonos o con formas muy complejas pueden sobrecargar el navagador y hacer la página inmanejable.

Puede personalizar el estilo de sus Heats Maps con algunos parámetros como el color, la opacidad, el borde, el relleno, etc. Para ello utilice la función fromEncoded(color?, weight?, opacity?, points, zoomFactor, levels, numLevels)

Puede descargarse el código de ejemplo y utilizarlo líbremente en sus aplicaciones.

Por último recuerde que para poder utilizar el API de Google Maps en sus aplicaciones es necesario que solicite su Key en la sección sign up for an API key.

Lun
14
May '07

Ajax Lightbox: Una ventana emergente 2.0 en su página web

Durante el desarrollo de mi último proyecto he tenido la suerte de conocer un fantástico efecto 2.0 desarrollado por Lokesh Dhakar. Se trata de un efecto Lightbox que permite mostrar espectaculares pop-ups con imágenes y grupos de imágenes. Las características del código original no eran suficientes para el proyecto en el que trabajaba, así que tuve que ampliarlo para que fuera capaz de mostrar pop-ups que cargaran dinámicamente de un fichero. De este modo nació el que he bautizado como Ajax LightBox, espero que les sea de tanta utilidad como a mi.

Qué es Ajax Lightbox

Ajax Lightbox es un script no intrusivo que permite mostrar una ventana por encima del contenido actual de una página. El término no intrusivo se utiliza para denominar al código javascript que no se ejecuta inmerso en el HTML si no que se aplica de manera indirecta una vez cargado el documento, permitiendo conseguir independizar completamente  “Contenido, Presentación y Comportamiento. Comentar también que un script no intrusivo permite cumplir con el punto de verificación 6.3 de las normas de accesibilidad WCAG (prioridad 1, necesario para nivel A):

"Ensure that pages are usable when scripts, applets, or other programmatic objects are turned off or not supported. If this is not possible, provide equivalent information on an alternative accessible page." 

Como puede observar en el siguiente ejemplo, usted puede visualizar tres tipos diferentes de ventanas:

  • Contenido dinámico extraido vía Ajax de un fichero.
  • Imágenes individuales.
  • Grupos de imágenes.

Si conoce algo de javascript y css puede personalizar el efecto para ajustarlo a sus necesidades:

Ha sido testeado en las últimas versiones de los navegadores más extendidos: IE/FireFox/Opera.

Cómo utilizarlo

1. Configuración

  1. Ajax Lightbox utiliza dos librerías opensource: PrototypeScriptaculous. Por tanto debe incluirlas en la cabecera de su página:

    <script type="text/javascript" xsrc="js/prototype.js" mce_src="js/prototype.js"></script>
    <script type="text/javascript" xsrc="js/scriptaculous.js?load=effects" mce_src="js/scriptaculous.js?load=effects"></script>
    <script type="text/javascript" xsrc="js/lightbox.js" mce_src="js/lightbox.js"></script>

    Puede modificar la librería lightbox.js para configurar algunos parámetros del efecto:

    fileLoadingImage: Imagen de carga
    overlayOpacity: Nivel de transparencia de la capa
    overlayvar animate: Activa/Desactiva rescalable  animations
    resizeSpeed: Controla la velocidad de rescalado de la imagen (1 = muy lento y 10 = muy rápido)
    borderSize: Grosor del borde

  2. Incluya también la hoja de estilos lightbox.css añada los estilos a la hoja de estilos actual de su Site. Puede modificar los estilos para cambiar las características del efecto (Colores, tamaños, etc).

    <link rel="stylesheet" xhref="css/lightbox.css" mce_href="css/lightbox.css" type="text/css" media="screen" />

    Es importante que compruebe dentro de la hoja de estilos que las imágenes están siendo referenciadas a las ubicaciones correctas.

2. Activación

  1.  Añada un atributo rel="lightbox_text"  a cualquier enlace que apunte a una página web para activar el efecto:

    <a xhref="nota.htm" mce_href="nota.htm" rel="lightbox_text" >Ver nota</a>

  2. Añada un atributo   rel="lightbox" a cualquier enlace a una imagen en el que quiera activar el efecto. Puede incluir un atributo title si quiere visualizar un caption en la ventana:

    <a xhref="images/image-1.jpg" mce_href="images/image-1.jpg" rel="lightbox" title="Los recursos de HelloGoogle son la pera">imagen #1</a>

  3. Si quiere agrupar un conjunta de imágenes, incluya un nombre de grupo dentro de unos corchetes en el atributo rel:

    <a xhref="images/image-1.jpg" mce_href="images/image-1.jpg" rel="lightbox[mi_grupo]">imagen #1</a>
    <a xhref="images/image-2.jpg" mce_href="images/image-2.jpg" rel="lightbox[mi_grupo]">imagen #2</a>
    <a xhref="images/image-3.jpg" mce_href="images/image-3.jpg" rel="lightbox[mi_grupo]">imagen #3</a>

Descárgueselo

El código se ofrece bajo la licencia Creative Commons, esto significa que puede utilizarlo y modificarlo libremente en sus aplicaciones. Solamente debe mantener los créditos tal y como están, para reconocer la labor de sus autores.

Espero que este efecto le sea de tanta utilidad como a mi, y que a partir de ahora pueda sorprender a sus visitantes con este Ajax Lightbox 2.0.

Mie
14
Feb '07

Selector combo dinámico en Ajax: localidades y provincias de España

En diversos proyectos he tenido la necesidad de trabajar con un formulario en el que uno de los campos es un selector de provincias y localidades de España. Tal vez usted también haya tenido esta misma necesidad durante el desarrollo de un proyecto.

En un enfoque tradicional sería necesario cargar en memoria todas las provincias y localidades, o dividir el proceso en dos fases: en la primera el usuario elegiría su provincia para luego seleccionar su localidad en un segundo paso. Un ejemplo de este enfoque tradicional es la web de páginas amarillas. Observe que el tiempo de carga de la página es considerablemente elevado.

Las nuevas técnicas de desarrollo web 2.0 nos ofrecen ahora la posibilidad de resolver este tipo de  funcionalidades de una manera mucho más elegante y eficiente.

Ejemplo de combo dinámico en Ajax 

Combo de localidades

En un enfoque 2.0 he desarrollado este ejemplo en el que puede ver un  formulario que permite al usuario seleccionar su localidad de manera muy rápida y eficiente. Ajax nos permite  trabajar con un documento XML de más de 2Mb que contiene todas las localidades de España, cargando en memoria únicamente la información que necesitemos en cada momento.

En el siguiente esquema se explica el funcionamiento de la aplicación Ajax:

Arquitectura de la aplicación provincias y localidades en Ajax

Esta funcionalidad consta de los siguientes archivos:

  • default.php: página incial dónde se generan dinámicamente el combo de provincias a partir del XML general.
  • xml_data_provider.php: recorre el XML general y devuelve otro XML que contiene sólo las localidades de la provincia escogida.
  • AjaxCode.js:  funcionalidad Ajax que lee el XML con las localidades elegidas y crea dinámicamente el combo de localidades.
  • provinciasypoblaciones.xml: Archivo XML que contiene todas las localidades y provincias de España.

Esta misma funcionalidad puede utilizarla para manejar cualquier XML de gran tamaño que de otra forma se mostraría inmanejable y ralentizaría mucho el tiempo de carga de su Site: fichas de clientes, un catalogo de productos, etc.

El tiempo de carga de una página y el consiguiente tiempo de espera de un usuario es uno de los factores más importantes en el rendimiento de una web. Tal y como se desprende del estudio sobre usabilidad realizado por Peter Sevcik en Julio de 2002, el tiempo de carga de una página no debe dilatarse más de 10 segundos para mantener el nivel de satisfación del usuario dentro de los límites óptimos. A partir de este límite el usuario empieza a percibir que la página está tardando en cargar y cuando se rebasa los 40 segundos la fustración y pérdida de interes del usuario por la página aumenta de manera muy acusada.

El código.

En el siguiente archivo zip dispone de todos los ficheros y recursos que conforman la aplicación. Siéntase libre de utilizarlo en su página web. Si le resultó de utilidad  o encontró cualquier problema le agradecería mucho conocer su feedback.

Cerrar
E-mail It