Tag: Google


Instalar Chromium Browser en Linux Ubuntu 9.10

December 6th, 2009 — 6:33pm

Introducción.

Chromium Browser (Chrome) es el navegador web de Google que desde hace un tiempo puede ser descargado y utilizado en la plataforma Windows.  Desafortunadamente aún no hay una versión (release) oficial para la plataforma Linux, sin embargo es posible instalarlo en Ubuntu mediante un PPA de frecuente actualización.

Instalación.

Agregar el repositorio.

$ sudo add-apt-repository ppa:chromium-daily/ppa

Instalar los paquetes.

$ sudo aptitude update

$ sudo aptitude install chromium-browser chromium-codecs-ffmpeg

Ejecución.

screenshot_007

Ejecutar la aplicación desde el menú de programas a través de la siguiente ruta.

Applications > Internet > Chromium Web Browser.

O desde la línea de comando como se muestra a continuación.

$ /usr/bin/chromium-browser &

Enlaces.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Internet, Linux/Solaris/BSD, Software, Web

Probar la nueva interfaz de Google en Colombia

November 27th, 2009 — 9:02am

Introducción.

No había podido probar la nueva interfaz de Google en Colombia ya que el procedimiento que circulaba por Internet aplicaba al dominio google.com y cuando intentaba acceder a él soy redirigido a google.com.co por lo cual la prueba no tenía efecto.  Por suerte ya encontré como superar esta situación y es en realidad muy sencillo.

Procedimiento.

Abra un navegador web.

Escriba el siguiente código en la barra de direcciones y presione Enter.

javascript:void(document.cookie=”PREF=ID=20b6e4c2f44943bb:U=4bf292d46faad806:TM=1249677602:LM=1257919388:S=odm0Ys-53ZueXfZG;path=/; domain=.google.com”);

Visite la página http://google.com/ncr.  Aparecerá la página de búsqueda con la nueva interfaz.

screenshot_003

Realice cualquier búsqueda y podrá apreciar la nueva presentación de los resultados con una barra izquierda que facilita el acceso a los servicios de Google y algunos filtros para la información.

screenshot_004

Para volver a la interfaz convencional es necesario remover la cookie del sitio.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Software, Web

Configurar una cuenta de GoogleApps for Domains con Pidgin

November 9th, 2009 — 9:28am

Introducción.

Las cuentas de Google Apps for Domains proveen además del correo electrónico (GMail) otros servicios de Google como la mensajería instantánea (GTalk).  El problema surge al intentar configurar estas cuentas en un cliente de mensajería múltiple como Pidgin ya que estas no funcionan con las configuraciones por defecto de GTalk o de XMPP.

Procedimiento.

Abra el diálogo de administración de cuentas: Accounts > Manage Accounts o presione CTRL+A.

Presione el botón Add … para crear una nueva cuenta.

Ingrese la siguiente información requerida.

  • Protocolo: XMPP.
  • Nombre de usuario.
  • Dominio: su dominio de Google Apps for Domains.
  • Alias local: el nombre que desee que se muestre para su usuario.

Seleccione la pestaña Advanced y provea la siguiente información.

  • Requiere SSL/TLS: seleccionado.
  • Puerto de conexión: 5222.
  • Conectar al servidor: talk.google.com.

Presione el botón Guardar.

Enlaces.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Linux/Solaris/BSD, Software, Windows

Impedir el acceso a los ‘bots’ a un sitio web

October 14th, 2009 — 1:26pm

Introducción.

Los bots de los motores de búsqueda son las aplicaciones que contínuamente están revisando los sitios web y sus enlaces para indexar sus páginas.  Esto es bueno porque es precisamente lo que permite funcionar a los buscadores web y mantener su información actualizada, sin embargo también es malo para quienes mantienen los sitios si estos acceden con demasiada frecuencia y utilizan demasiados recursos del servidor, además también es posible que se desee mantener información oculta a los ojos de estos motores de búsqueda.

Para hacer esto se les indica o se les niega el acceso a nuestro sitio a estas aplicaciones.

Procedimiento.

Utilizando el archivo robots.txt.

  • Este archivo se debe ubicar en la raíz del sitio web.
  • Es una indicación amable a los bots para que cumplan lo que allí se especifica.
  • Es posible que bots malintencionados hagan caso omiso de estas indicaciones.

Impedir el acceso a todo el sitio a todos los bots.

# Go away
User-agent: *
Disallow: /

Impedir el acceso a la carpeta /blog del sitio al bot de Google.

# Don’t index my blog
User-Agent: Googlebot
Disallow: /blog/

Desde el archivo .htaccess.

  • Las modificaciones se realizan en el archivo .htaccess del sitio web.
  • Estas políticas son mas restrictivas y no pueden ser obviadas por los bots.
  • Debe concerse con precisión la red de la cual proviene el bot ya que se impedirá su acceso por parte del servidor de páginas.
  • Es posible que existan otros clientes válidos que intenten acceder desde las ubicaciones especificadas, por ello la dirección especificada deberá ser lo mas precisa posible.

Impedir el acceso al bot de Google.

Limit GET HEAD POST
order allow,deny
deny from 66.249
allow from all

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Software, Web

Como crear un mapa con GoogleMaps version 2, en pasos simples

September 28th, 2009 — 3:02pm

Introducción.

Utilizar el API de Google Maps para crear mapas interactivos con Javascript en nuestros sitios web es muy fácil de implementar.  Este servicio ofrece dos alternativas: los Mapplets que se ejecutan de manera asíncrona, directamente en el sitio de maps.google.com y los desarrolladores sólo debemos especificar y albergar un documento XML donde se encuentra la especificación y los datos del mapa.  Por el otro lado están los mapas implementados directamente con el API de manera síncrona, se incrustan en nuestras propias páginas web y su comportamiento se define a través del Javascript que implementemos.

En otras ocasiones me he referido a los Mapplets por esto la implementación de hoy la vamos a realizar utilizando el API síncrono.

Objetivo.

El objetivo del presente artículo es el de visitar a Cuba donde ubicaremos marcadores sobre 5 ciudades de este país y asociaremos globitos con mensajes personalizados que aparecerán cuando el usuario haga clic sobre las diferentes ciudades.

Resultado final

Resultado final

Procedimiento.

Condiciones inciales.

Para el desarrollo de esta mini aplicación vamos a utilizar PHP y vanilla Javascript, es decir, no nos apoyaremos en ningún framework de Javascript adicional a lo comúnmente soportado por los navegadores web actuales.

En mi caso, mi servidor web de destino será http://demo.jorgeivanmeza.com/.  Es muy importante determinar esto para la próxima etapa, la creación de la llave del API.

Creación de la llave del API.

Acceda al siguiente enlace y cree su propia llave para el API de Google.  Es necesario especificar el dominio bajo el cual se ejecutará la aplicación web.  En el caso de desarrollar la aplicación de manera local, puede obtener una llave para http://localhost/ y después la deberá modificar antes de desplegarla en el servidor de producción.  Si no especifica el dominio correcto, la aplicación no podrá generar el mapa.

http://code.google.com/apis/maps/signup.html

Es necesario contar con una cuenta de Google, así que de no contar con una es necesario abrirla antes de intentar crear una llave del API.

Creación de una estructura básica para la página web.

Cree el archivo simpleGoogleMaps.php (o como desee llamarlo) en una ubicación pública de su servidor web (bajo el DOCUMENT_ROOT).  Agregue siguiente contenido al archivo y guárdelo.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="Author" content="Jorge Iván Meza Martínez - http://jorgeivanmeza.com/ - jimezam@gmail.com" />
    <meta name="Description" content="Demostración Simple de Google Maps" />

    <title>Demostración Simple de Google Maps</title>

    <!-- Llave del API -->

    <!-- Estilos CSS -->

    <!-- Implementación Javascript -->
</head>

<body>
    <!-- Ubicación del mapa -->
</body>
</html>

Especificar la Llave del API.

En el contenido del archivo PHP actualice el siguiente código por la marca de Llave del API.

<script src='http://maps.google.com/maps?file=api&v=2&sensor=false&hl=es&key=XXXXX' type='text/javascript'></script>

Reemplace la cadena XXXXX por su Llave del API específica que obtuvo durante el paso anterior correspondiente.

Especificar la ubicación del mapa.

El mapa se generará en un div que determinemos dentro del body para tal fin, este puede estar integrado normalmente con el resto del diseño de la página.  En nuestro caso particular debido a su simplicidad, el contenido de la página será solamente dicho div.

Reemplace la etiqueta Ubicación del mapa con el siguiente código.

<div id='MiMapa'>Aqui viene el mapa!</div>

Es necesario identificar al div con un id único que utilizaremos posteriormente.

Actualizar el estilo del mapa.

El siguiente paso es el especificar un estilo para el div que contendrá al mapa.  Este estilo finalmente dependerá del diseño de la página.  Para este caso utilizamos CSS para definirle un alto y un ancho al mapa.

Reemplace la etiqueta Estilos CSS con el siguiente código.

<style content="text/css">

#MiMapa
{
    width: 640px;
    height: 480px;
}

</style>

Especificar la implementación Javascript.

El código faltante hace referencia a código Javascript que va a determinar el contenido y comportamiento del mapa.  Reemplace la etiqueta Implementación Javascript con el siguiente código base.

<script type='text/javascript'>
// El código de las siguiente secciones se incluye aquí ...
</script>

Preparar el mapa.

Para crear el mapa y establecer sus parámetros iniciales se realizan las siguientes acciones.

  1. Verificar que exista la compatibilidad adecuada con el navegador.
  2. Crear la instancia del mapa asociada al div especifico.
  3. Establecer la ubicación inicial del mapa.
  4. Establecer el tipo inicial del mapa.

Para hacer esto creamos al objeto mapa1 y a la función prepararMapa con el siguiente código.

/*
 * Objeto que hace referencia al mapa desplegado.
 */

var mapa1 = null;
/*
 * Establece los parámetros iniciales del mapa instanciando
 * al objeto 'mapa'.
 *
 * @param String  - Nombre del DIV que albergará al mapa.
 * @param Double  - Latitud donde se centrará el mapa.
 * @param Double  - Longitud donde se centrará el mapa.
 * @param Integer - Altura donde se centrará el mapa.
 *
 * @return el mapa en éxito, null en fracaso.
 */

function prepararMapa(div, centerLat, centerLang, centerAlt)
{
    /* Verifica que el navegador sea compatible con
       Google Maps */

    if (GBrowserIsCompatible())   // [1]
    {
        /* Crea la instancia del objeto 'mapa' asociándole
           el div correspondiente */

        mapa = new GMap2(document.getElementById(div));    // [2]

        /* Centra el mapa en la ubicacion (latitud, longitud
           y altura) especificadas */

        mapa.setCenter(new GLatLng(centerLat, centerLang), centerAlt);     // [3]

        /* Establece el tipo de mapa.  Disponibles:

               - G_NORMAL_MAP
               - G_SATELLITE_MAP
               - G_HYBRID_MAP

           Enlace: http://code.google.com/apis/maps/documentation/controls.html */

        mapa.setMapType(G_HYBRID_MAP);      // [4]

        /* Establece el comportamiento por defecto de los
           elementos del UI del mapa.

           Enlace: http://code.google.com/apis/maps/documentation/reference.html#GMap2.setUIToDefault */

        mapa.setUIToDefault();

        /* Éxito */
        return mapa;
    }
    else     /* Fracaso */
        return null;
}

Agregar un marcador.

Posteriormente implementamos la función agregarMarcador que se ocupará de agregar un marcador creado con cierta información específica al mapa.  Su código es el siguiente.

/*
 * Agrega un marcado con la información especificada
 * al mapa.
 *
 * @param GMap2   - Referencia externa al mapa.
 * @param Double  - Latitud donde se centrará el mapa.
 * @param Double  - Longitud donde se centrará el mapa.
 * @param String  - Mensaje que tendrá la burbuja asociada.
 *
 * @return void.
 */

 function agregarMarcador(mapa, latitud, longitud, mensaje)
 {
    /* Crea el punto asociado a la longitud y latitud
       especificadas. */

    var punto = new GLatLng(latitud, longitud);

    /* Crea un marcador asociado a la ubicación anterior */

    var marcador = new GMarker(punto);

    /* Establece que en el evento 'onclick' del marcador
       muestre la burbuja con el mensaje especificado */

     GEvent.addListener(marcador, "click", function()
     {
         mapa.openInfoWindowHtml(punto, mensaje);
     });

     /* Agrega el marcador recién creado al mapa */

     mapa.addOverlay(marcador);
 }

Información de las ciudades de Cuba.

Los marcadores del mapa corresponderán como se dijo anteriormente, con cinco ciudades de Cuba que se predefinieron y de las cuales se conoce su ubicación: latitud y longitud.  Su información se almacena en el arreglo puntos en el cual cada una de sus celdas corresponde con una ciudad.

/* Información para los marcadores del mapa: Ciudades de
 * Cuba. */

 var puntos = new Array(
    {
        'nombre'  : 'La habana',
        'latitud' : 23.132,
        'longitud': -82.364
    },
    {
        'nombre'  : 'Santa Clara',
        'latitud' : 22.4,
        'longitud': -79.967
    },
    {
        'nombre'  : 'Bayamo',
        'latitud' : 20.379,
        'longitud': -76.643
    },
    {
        'nombre'  : 'Las Tunas',
        'latitud' : 20.962,
        'longitud': -76.951
    },
    {
        'nombre'  : 'Manzanillo',
        'latitud' : 20.343,
        'longitud': -77.117
    }
 );

Para automatizar el proceso de agregación de los marcadores basados en la información de los puntos creamos a la función agregarMarcadores cuya misión es la de invocar repetidas veces a la función agregarMarcador.  En ella se define además el contenido del globito de cada uno de las ciudades (mensaje).

/*
 * Automatiza el agregar los marcadores basados en la
 * información del arreglo de puntos.
 *
 * @param GMap2   - Referencia externa al mapa.
 * @param Array   - Información de los marcadores a agregar.
 *
 * @return void.
 */

 function agregarMarcadores(mapa, informacion)
 {
    for(var i=0; i<informacion.length; i++)
    {
        var nombre   = puntos[i]['nombre'];
        var latitud  = puntos[i]['latitud'];
        var longitud = puntos[i]['longitud'];

        var mensaje  = "Este es <b>" + nombre + "</b>,<br /> su latitud es <b>" +
                       latitud + "</b><br /> y su longitud es <b>" + longitud + "</b>.";

        agregarMarcador(mapa, latitud, longitud, mensaje);
    }
 }

Finalmente, el programa principal.

En este fragmento del código definimos la ejecución del programa principal del mapa.  Se ejecuta tan pronto como la página se encuentra cargada (onLoad) y desarrolla las siguiente actividades.

  1. Prepara el mapa.
  2. Verifica que el mapa haya sido creado exitosamente.
  3. Agrega los marcadores sobre las ciudades especificadas.

Su código es el siguiente.

/* Inicio del programa Javascript (setup) */

window.onload = function()
{
    /* Solicita la creación del mapa especificando el DIV
       que lo albergará y la ubicación (latitud, longitud,
       altura). */

    mapa1 = prepararMapa('MiMapa', 21.4, -79.8, 7);

    if(mapa1 == null)
    {
        alert("Su navegador no incluye soporte para Google Maps!");

        return false;
    }

    /* Solicita la agregación de los marcadores de ejemplo
       especificando la referencia al mapa y el arreglo con
       la información de los puntos */

    agregarMarcadores(mapa1, puntos);

    return true;
}

Listo!

Probar la página web utilizando un navegador como Firefox.

Enlaces.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Desarrollo de software, Web

Utilizar GMail como SmartHost desde Linux Debian 5

July 7th, 2009 — 10:43am

Introducción.

Un servidor que utilizo frecuentemente para el desarrollo de aplicaciones web que se encuentra basado en Debian 5 no estaba enviando los correos de las aplicaciones ni de un par de scripts que había escrito hace un tiempo para la creación de copias de seguridad.

Al revisar los logs encontré este mensaje: Mailing to remote domains not supported.

La solución es realizar la configuración del Exim 4, sin embargo tenía un detalle adicional que lo hacía interesante.  Para la empresa propietaria del servidor estoy utilizando Google Apps para gestionar su correo electrónico, así que el SmartHost tenía que ser con GMail, SSL (el puerto indicado) y autenticación.

Procedimiento.

Para este procedimiento se supone que el nombre del servidor es desarrollo.dominio.com.

1. Crear una cuenta de correo en GMail/Google Apps para el relay del servidor de correo.

Nombre de usuario: desarrollo_relay
Contraseña: password_relay

2. Realizar la configuración de Exim.

$ su -

$ dpkg-reconfigure exim4-config

  • General type of mail configuration: mail sent by smarthost; received via SMTP or fetchmail
  • System mail name: localhost
  • Ip Address to listen on: 127.0.0.1
  • Other destinations~: desarrollo.dominio.com
  • Machines to Relay for: <vacío>
  • IP address or hostname of the outgoing smarthost: smtp.gmail.com::587
  • Hide local mail name in outgoing mail: No
  • Keep number of DNS queries minimal: No
  • Delivery method for local mail: mbox format in /var/mail/
  • Split configuration into small files: Yes

3. Configurar la información del cliente de acceso.

$ vi /etc/exim4/passwd.client

gmail-smtp.l.google.com:desarrollo_relay@dominio.com:password_relay
*.google.com:desarrollo_relay@dominio.com:password_relay
smtp.gmail.com:desarrollo_relay@dominio.com:password_relay

$ chmod 640 /etc/exim4/passwd.client

$ chown root:Debian-exim /etc/exim4/passwd.client

4. Actualizar la lista de correspondencias de direcciones de correo.

$ vi /etc/exim4/email-addresses

root@localhost:    desarrollo_relay@dominio.com

$ chmod 640 /etc/exim4/email-addresses

5. Verifique la configuración actual del Exim.

$ vi /etc/exim4/update-exim4.conf

dc_eximconfig_configtype=’smarthost
dc_other_hostnames=’desarrollo.dominio.com
dc_local_interfaces=’127.0.0.1
dc_readhost=’desarrollo.dominio.com
dc_relay_domains=”
dc_minimaldns=’false
dc_relay_nets=”
dc_smarthost=’smtp.gmail.com::587
CFILEMODE=’644
dc_use_split_config=’true
dc_hide_mailname=’false
dc_mailname_in_oh=’true
dc_localdelivery=’mail_spool

6. Reiniciar el servicio del MTA.

$ /etc/init.d/exim4 restart

Enlaces.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Internet, Linux/Solaris/BSD, Software

Búsquedas en Google Search desde PHP

March 15th, 2009 — 10:32pm

Introducción.

Anoche se me ocurrieron algunos experimentos para hacer pero con varios de ellos terminé concluyendo que necesitaba hacer algunas búsquedas a través de Google Search para verificar si mis hipótesis se podían implementar o no.  Pensé que iba a ser muy fácil encontrar ejemplos de esto en PHP, sin embargo sólo pude encontrar un documento realmente interesante al respecto.  Resulta que casi toda la documentación hace referencia a Javascript en AJAX, mientras que los lenguajes no-Javascript como PHP o Flash deben hacerlo a través de REST.  Al final, mis ideas no resultaron; al parecer Google no genera la información que yo necesitaba en formato Google Search, tampoco en XML válido.  Sin embargo aprendí como utilizar Google Search desde PHP y terminé escribiendo una clase muy sencilla para encapsular su uso y una demostración de la misma.

Demostración.

Demostración de GoogleSearch 0.1

Demostración de GoogleSearch 0.1

GoogleSearch.class.php.

De manera muy general estos son los pasos que se deben realizar para ejecutar una búsqueda en GoogleSearch.

Crear una instancia de la clase GoogleSearch.

    $gs = new GoogleSearch();

Establecer la configuración de la búsqueda.

    $gs -> setKey('SU_PROPIA_LLAVE');
    $gs -> setSize('large');
    $gs -> setLang('es');
    $gs -> setReferrer('http://localhost');
    $registro = (isset($_GET['registro'])) ? filter_input(INPUT_GET, 'registro', FILTER_SANITIZE_SPECIAL_CHARS) : 0;
    $palabrasClave = (isset($_GET['palabrasClave'])) ? filter_input(INPUT_GET, 'palabrasClave', FILTER_SANITIZE_SPECIAL_CHARS) : '';

Solicitar la búsqueda.

    $gs -> fetch($palabrasClave, $registro);

Verificar si hubo éxito en la búsqueda.

    if($gs != null && $gs -> getResponseField('responseStatus') == 200) { ... }

Recorrer los registros obtenidos y mostrar su información.

                $length = $gs -> getResultsCount();

                for($i=0; $i<$length; $i++):

                    // Obtiene el iésimo resultado.

                    $result = $gs -> getResult($i);

                    // Muestra su información.
                ?>

                    <tr>
                        <td>
                            <a href='<?= GoogleSearch::getResultField($result, 'url'); ?>'>
                                <?= GoogleSearch::getResultField($result, 'title'); ?>
                            </a>
                            &nbsp;
                            <a href='<?= GoogleSearch::getResultField($result, 'url'); ?>' target='_blank'>
                                [<span style='font-size: 10px;'>Nueva ventana</span>]
                            </a>
                        </td>
                    </tr>
                    <tr>
                        <td class='campo_contenido'>
                            <?= GoogleSearch::getResultField($result, 'content'); ?>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <span class='verde'><?= GoogleSearch::getResultField($result, 'visibleUrl'); ?></span> -
                            <a href='<?= GoogleSearch::getResultField($result, 'cacheUrl'); ?>'>En caché</a>
                        </td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>

                <?php endfor; ?>

Enlaces.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

1 comment » | Desarrollo de software, Web

Traducciones desde GTalk bots

December 16th, 2008 — 8:58pm

Este año Google habilitó el servicio de traducción asistida a través de bots del servicio de GTalk.  Para utilizarlos se debe agregar como contacto la dirección del bot y posteriormente aceptarlo como contacto.

Las direcciones de los bots tienen el siguiente formato.

[lenguaje orígen] 2 [lenguaje destino]@bot.talk.google.com

Esto quiere decir que el bot que traduce de español a inglés es es2en@bot.talk.google.com y el que realiza el proceso contrario es en2es@bot.talk.google.com.

Las combinaciones de idiomas disponibles son las siguientes.

  1. Arabic – English:      ar2en      en2ar
  2. Bulgarian – English:     bg2en     en2bg
  3. Czech – English:     cs2en     en2cs
  4. Danish – English:     da2en     en2da
  5. German – English:     de2en     en2de
  6. German – French:     de2fr     fr2de
  7. Greek – English:     el2en     en2el
  8. Spanish – English:     es2en     en2es
  9. Finnish – English:     fi2en     en2fi
  10. French – English:     fr2en     en2fr
  11. Hindi – English:     hi2en     en2hi
  12. Croatian – English:     hr2en     en2hr
  13. Italian – English:     it2en     en2it
  14. Japanese – English:     ja2en     en2ja
  15. Korean – English:     ko2en     en2ko
  16. Dutch – English:     nl2en     en2nl
  17. Norwegian – English:     no2en     en2no
  18. Polish – English:     pl2en     en2pl
  19. Portuguese – English:     pt2en     en2pt
  20. Romanian – English:     ro2en     en2ro
  21. Russian – English:     ru2en     en2ru
  22. Swedish – English:     sv2en     en2sv
  23. Chinese – English:     zh2en     en2zh
  24. Traditional Chinese – English:     zh-hant2en     en2zh-hant
  25. Traditional Chinese – Chinese:     zh-hant2zh     zh2zh-hant

Este servicio se encuentra basado en el servicio de traducción de Google.

Enlaces:

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Internet, Software

Introducción a StaticMaps de Google

October 28th, 2008 — 10:47pm
Introducción

StaticMaps es una herramienta de Google que nos permite integrar en nuestras aplicaciones a imagenes estáticas de su cartografía de una manera muy simple.  Como se puede inferir, para utilizarlos es necesario que la aplicación tenga acceso a Internet y su acceso se realiza a través de un requerimiento HTTP convencional con ciertos parámetros que se verán a continuación y que permiten refinar el contenido de la imagen del mapa producido.

Esta herramienta la he utilizado varias veces en diferentes tipos de proyectos como Mi Primer Moblet (móviles), GeoReferenciación con Java (escritorio) y la demostración de MandarinaSocial (agentes de software).

Para su uso se requiere que el desarrollador registre de manera gratuita el dominio desde donde se va a utilizar el servicio.  El registro se materializa a través de una llave de API particular.  Esta llave se solicita a través del siguiente enlace.

http://code.google.com/apis/maps/signup.html

El servicio se restringe a un máximo de 1000 requerimientos únicos diarios, siendo este límite aplicado por solicitante (ubicación) y no por llave lo que disminuye el impacto de esta restricción, mas aún cuando las solicitudes repetidas de la misma imagen no son tomadas en cuenta para la estadística de la cuota.

Un primer acercamiento a la herramienta consiste en jugar un poco con ella utilizando el Static Map Wizard.

Forma de acceso

Como se mencionó anteriormente, la solicitud se inicia requiriendo un URL con ciertos parámetros a través de GET y el servicio retorna una imagen en un formato compatible con web que puede ser insertada en una página web con una etiqueta <img> o puede ser manipulada por una aplicación desarrollada en cualquier lenguaje de programación como Java o C#.

Los siguientes aspectos del StaticMap pueden ser parametrizados a través de los parámetros del URL.

  • La ubicación del mapa.
  • El tamaño de la imagen generada.
  • El nivel de acercamiento.
  • El tipo de mapa.
  • El lugar de los marcadores.
  • El lugar de las rutas trazadas.
Estructura general del URL

Esta es la estructura básica del URL sobre la cual se estructura el requerimiento del servicio.

http://maps.google.com/staticmap?PARÁMETROS

La lista de PARÁMETROS consiste en varias secciones separadas entre sí por & y que se encuentran construídas con un formato especial y que serán descritas a continuación.

Estos son los parámetros del servicio suceptibles de personalizarse.

  1. center.
  2. zoom.
  3. size.
  4. format.
  5. maptype.
  6. markers.
  7. path.
  8. frame.
  9. key.
Ubicaciones

Las ubicaciones georreferenciadas son especificadas de la forma latitud y longitud como dos valores reales con 6 dígitos decimales de precisión y separados por una coma: 5.07,-75.521.

Los valores válidos de una latitud varían desde -90 hasta 90 grados mientras que los valores válidos para una longitud varía desde -180 hasta 180 grados.

Parámetro Key

Es obligatorio y se utiliza para especificar la llave del API que se obtuvo inicialmente.  Sin esto, es imposible acceder al servicio.

http://maps.google.com/staticmap?center=5.07,-75.521&zoom=5&size=500×300&key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg

Parámetro Center

Es obligatorio pero se convierte en opcional bajo ciertas circunstancias.  Determina la ubicación al rededor de la cual se centrará el mapa generado.

http://maps.google.com/staticmap?center=5.07,-75.521

El mapa anterior se encuentra centrado al rededor de las coordenadas de Manizales, Caldas.

Parámetro Zoom

Es obligatorio pero se convierte en opcional bajo ciertas circunstancias.  Determina el nivel de acercamiento al mapa.

Es definido por un número entero que varía entre 0 (menor) hasta 19 (máxima).  Debe tenerse en cuenta que no todos los niveles de acercamiento están disponibles para todos los tipos de mapas.

http://maps.google.com/staticmap?center=5.07,-75.521&zoom=11

El mapa anterior determina un nivel 11 de acercamiento sobre Manizales.

Parámetro Size.

Es obligatorio.  Especifica el tamaño de la imagen generada.

Su valor se especifica por un ancho y un alto separados por la letra ‘x‘ y su unidad es en pixels: 500×300.  El valor máximo de estas dimensiones es 640×480.

http://maps.google.com/staticmap?center=5.07,-75.521&zoom=11&size=500×300

La imagen generada a partir del requerimiento anterior tiene un ancho de 500px y un alto de 300px.

Parámetro Format.

Es opcional y determina el tipo de formato de la imagen generada.  Su selección depende de la relación tamaño/calidad deseada.  Si se omite, su valor por defecto es GIF.

Los posibles valores para este parámetro son los siguientes.

  • gif (por defecto).
  • jpg
  • jpg-baseline (no progresivo)
  • png8 (8 bits)
  • png32 (32 bits)

http://maps.google.com/staticmap?center=5.07,-75.521&zoom=11&size=500×300&format=png8

El ejemplo anterior genera una imagen con formato PNG de 8 bits.

Parámetro MapType.

Es opcional y determina el tipo de cartografía a utilizarse para la generación de la imagen.  Si se omite, su valor por defecto es roadmap.

Los posibles valores para este parámetro son los siguientes.

  • roadmap (por defecto).
  • mobile.  Presenta mejoras gráficas para la visualización en dispositivos móviles.
  • satellite. Muestra las imagenes de satélite.
  • terrain. Muesta el mapa del relieve y la vegetación.
  • hybrid. Mezcla el contenido de los tipos roadmap y satellite.

http://maps.google.com/staticmap?center=5.07,-75.521&zoom=11&size=500×300&format=png8&maptype=hybrid

El ejemplo anterior modifica el tipo de mapa visto hasta ahora (roadmap) y presenta un mapa estilo híbrido de la misma ubicación.

Parámetro Markers.

Es opcional y permite especificar y personalizar los marcadores que referenciarán ubicaciones importantes en el mapa.  Es posible especificar hasta 50 marcadores diferentes por mapa.

Cuando se especifica el parámetro markers no es necesario especificar a los parámetros center y zoom ya que estos se pueden calcular automáticamente.

La información de los marcadores se especifica con una cadena separada por ‘|‘ (%7C) de la siguiente manera.

markers=infoMarcador1|infoMarcador2|infoMarcador3|…

La información de los marcadores incluye datos tanto de su ubicación como de su presentación.  Cada marcador se crea con la siguiente estructura.

{latitud},{longitud},{tamaño}{color}{identificador}

El siginificado de cada uno de estos campos se describe a continuación.

  • latitud (requerido).  Latitud de la ubicación del marcador.
  • longitud (requerido).  Longitud de la ubicación del marcador.
  • tamaño (opcional).  Tamaño de la imagen del marcador.  Puede tomar uno de los siguientes valores.
    • tiny
    • mid (por defecto)
    • small
  • color (opcional).  Determina el color de la imagen del marcador.  Puede tomar una de las siguientes constantes.
    • black
    • brown
    • green
    • purple
    • yellow
    • blue
    • gray
    • orange
    • red (por defecto)
    • white
  • identificador (opcional).  Permite especificar un carácter alfanumérico y en minúsculas para identificar al marcador.  Debe tenerse en cuenta que este identificador sólo aplica para marcadores tamaño mid.  Su valor por defecto es el punto.

http://maps.google.com/staticmap?size=500×300&format=png8&maptype=hybrid&markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda

El ejemplo anterior muestra el mapa del eje cafetero colombiano resaltando sus ciudades con marcadores de la siguiente manera: Manizales (amarillo), Pereira (azul) y Armenia (rojo).

Parámetro Path.

Es opcional y permite especificar y personalizar rutas sobre el mapa que conectan a dos o mas puntos georreferenciados.  El límite es el de máximo 100 puntos por ruta.

El parámetro se define de manera similar a markers siguiendo el siguiente formato.

path=tipoColor:#color,weight:pesoRuta|punto1|punto2|punto3|…

El siginificado de cada uno de estos campos se describe a continuación.

  • tipoColor.  Especifica el tipo de formato del color.  Puede tomar uno de los siguientes valores.
    • rgb.  Esquema RGB estándar con valores de 24 bits de la forma 0xffffff.  Su nivel de opacidad por defecto es de 50%.
    • rgba.  Utiliza valores de 32 bits de la forma 0xffffffff.  El nivel de opacidad está dado por el cuarto byte (últimos dos carácteres) que conforman el canal alfa de transparencia.
  • weight.  Especifica el grosor de la ruta en pixels.

http://maps.google.com/staticmap?size=500×300&format=png8&maptype=hybrid&markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&path=rgb:0×0000ff,weight:5|5.07,-75.521|4.813,-75.696|4.534,-75.681

En este ejemplo se agrega una ruta azul entre Armenia – Pereira – Manizales sobre el ejemplo inmediatamente anterior.

Parámetro Frame.

Es opcional y especifica si la imagen resultante se debe o no mostrar con un borde azul de 5px y con 55% de opacidad a su alrededor.  Por defecto no se muestra.

http://maps.google.com/staticmap?size=500×300&format=png8&maptype=hybrid&markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&path=rgb:0×0000ff,weight:5|5.07,-75.521|4.813,-75.696|4.534,-75.681&frame=true

Enlaces:

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

1 comment » | Desarrollo de software, Móvil, Software geográfico, Web

Acceso web al correo de GoogleAppsForDomains

August 4th, 2008 — 12:22pm

Por estos días debo estar cumpliendo un año desde que migré el correo de la Fundación al servicio de GoogleAppsForDomains.  Desde entonces ha sido una gran mejora frente al proveedor de servicio con que contaban antes de mi llegada: servicio siempre disponible, buen tamaño, buen cliente web y buen interconexión (POP3 y ahora IMAP).

Como puntos en contra sólo he encontrado algunas molestias que me produce el no poder enviar directamente archivos con la extensión ZIP desde la interfaz web y algunos problemas que se presentan cuando se envía correo uno mismo, sin embargo, a pesar de estas nimiedades el servicio es altamente recomendable.

Para acceder al correo desde un teléfono móvil no es posible utilizar aún la aplicación la aplicación de GMail.  Por lo pronto es posible accederlo a través de web con las restricciones de funcionalidad que esto conlleva.

El URL para acceder al servicio de correo a través de web es el siguiente.

http://mail.google.com/hosted/DOMINIO

Reemplace DOMINIO por el dominio registrado.  Por ejemplo midominio.com, sin las www por supuesto.

VN:F [1.8.5_1061]
Rating: 0 (from 0 votes)

Comment » | Móvil, Software, Web

Back to top