Archive for the ‘google’ Category

Antigua Roma 3D en Google Earth y videochat en Gmail

Jueves, Noviembre 13th, 2008

Google siempre nos ha cautivado con sus innovaciones desde el mismo momento que tuvimos nuestra primera experiencia con su buscador. El concepto de web 2.0 ha permitido a google poner en marcha toda una plataforma aprovechando al máximo el desarrollo de herramientas para web con un ambiente totalmente enriquecido.

De ahí que se pueden listar(desde hace rato no alcanzan los dedos de las manos para contarlas) una infinidad de desarrollos que han causado un gran impacto entre el mercado, entre muchos (y me perdonan si no menciono todos) están Gmail, Google Earth, Google Maps o Google Apps causando un cambio sobre paradigmas en el uso de aplicaciones en web.

Aunque últimamente google ha causado cierta incomodidad en cuanto a la ambición en su cobertura de información por todo el mundo, esa misma ambición es lo que ha hecho que por estos días nos llenen de nuevas sorpresas aquí solo dos de ellas.

Exploración de Roma Antigua en 3D


Por medio de esta aplicación, la cual esta basada en la maqueta del arquitecto Italo Gismondi (1887-1974), se puede tener una exploración con una experiencia totalmente virtual y en 3D.

Video Chat en Gmail

Y como si no fuera poco y para generar aun mas expectativa google hace anuncio de la integración de video y voz en el chat de gmail, de una forma bastante sencilla como todo lo de google. Solamente basta con presionar el vinculo que esta situado en la parte superior derecha ¡Nuevo! Chat de vídeo instales la aplicación y reinicies tu navegador y listo!. Aparecerá en tu chat del gmail tu nick con un icono de una cámara, al chatear con otra persona (si ya ha realizado la misma operación) podrán comenzar un chat con video.

Lo mejor de todo esto es que es muy limpio y agradable de usar, utiliza el flash player (con todos sus beneficios), cuando estas en el video chat puede hacer un "fullscreen" y mover el recuadro de tu video por toda la pantalla. No necesitas afanarte por instalar un programa en tu computadora ya que estas bajo la cuenta de gmail y en tu navegador, aunque con esto no es que se piense desplazar los tradicionales messenger de hotmail o yahoo y mucho menos depreciar las aplicaciones potentes para VoIp como Skype … o no por ahora Cool


Pues con todo esto y otras que se me quedan por fuera como Google Ocean, el mismo lanzamiento del navegador chrome (asi para muchos parezca inoficioso y redundante) y hasta la especulación de un mundo nuevo totalmente virtual tipo SecondLife , es inevitable no pensar en "Googlizarce" … ante tanto caramelo es imposible no salir untado de él.

Enviar comentario

Cómo cargar Google Maps de forma asíncrona.

Viernes, Octubre 31st, 2008

Google Maps ha sido uno de los grandes inventos que se sacó Google de la manga. Normalmente para cargar Google Maps situamos una etiqueta <script> dentro de nuestra página con nuestra id del api de Google Maps. Luego modificamos la etiqueta <body> para que cuando se cargue el documento, ejecute una función para inicializar el mapa.

El problema que ya comenté en un post anterior (Cargar Google Analytics una vez se haya cargado la página), es que esto, en según que momentos, puede ralentizar de una forma muy grave nuestra página, o por ejemplo, el mapa lo tenemos en una pestaña que por defecto no es visible. Por ello, podemos obtar por una solución que incrementará sustancialmente la velocidad de carga de nuestra página y que se encargará de que, una vez se haya cargado la página, proceder a la descarga y la inicialización del nuestro Google Map.

Esta no es la única utilidad, también podríamos cargar nuestro Google Map a voluntad mediante la pulsación de cualquier elemento. Esto nos permitiría que en una página no cargásemos el Google Map hasta que el usuario decidiese utilizarlo, aliviando la carga de nuestra página.

Veamos un ejemplo práctico llamando a Google Maps una vez se ha terminado la carga de nuestra página:

Lo primero de todo, veamos la estructura de nuestros ficheros:

Por un lado tenemos un fichero html en el cual hay una capa que utilizaremos para insertar nuestro Google Maps y las llamadas a los ficheros googleMaps.js y jquery.js.

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Ejemplo de carga de forma asíncrona de Google Maps</title>
</head>
<body>
   <div id="mapa" style="width:300px;height: 300px">
      <p style="text-align:center"><strong>Cargando</strong></p>
   </div>
   <script type="text/javascript" src="jquery.js"></script>
   <script type="text/javascript" src="googleMaps.js"></script>
</body>
</html>

Cómo podemos ver, el div con id "mapa" tiene un texto interior que pone "Cargando". Esto es para que mientras se carga nuestro Google Maps el visitante pueda saber que el navegador está trabajando. Después del div, insertamos las dos llamadas a nuestros ficheros javascript. El primero es la librería jQuery que nos ayudará realizar la petición de carga del conjunto de ficheros necesarios para cargar Google Maps.

En el fichero googleMaps.js tenemos el código necesario para realizar la carga del mapa:

Código :

function cargarMapa(){
   if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("mapa"));
      map.setCenter(new GLatLng(39.578678,2.646021), 16);
   }
};

$(document).ready(function(){
   var api='ABQIAAAAOxTvdJxbyGuGB8_UUEe52xRHT0E5MDpBZnfhvo0jhLIefK70hRTYIol4_Lr75EWTtT9VjcaZzY2QWg';
   $.getScript('http://maps.google.com/maps?file=api&amp;v=2.x&amp;key='+api+'&amp;async=2&amp;callback=cargarMapa');
});

Lo primero que vemos es una función llamada "cargarMapa" la cual será llamada una vez tengamos cargada la librería de Google Maps. Esta función únicamente se encarga de mostrar nuestro Google Maps en un determinado div (en nuestro caso el div llamado "mapa") y situarlo en una coordenada (new GLatLng(39.578678,2.646021)) con un determinado zoom (16).

La parte interesante viene justo después. Vemos el comienzo típico de cualquier fichero js que jQuery ( $(document).ready(function(){ ) y justo después dos líneas de código; la primera es una variable en la cual, por cuestiones de tener un código más legible, guardo la clave del api de Google Maps. Y en el segundo realizo la petición, que a simple vista, es la misma url que normalmente nos da google para poner en las etiquetas <script>. Pero si nos fijamos, existe dos diferencias. Justo al final de la línea vemos que hay dos parámetros de url nuevos: &asyn=2&callback=cargarMapa. El primero (async=2) permite llamar de forma asíncrona (cuando nosotros queramos y no siempre cuando se carga el documento al completo), y el segundo (callback=cargarMapa) es el parámetro que le dice a Google Maps que función debe ejecutar una vez tenga todo lo necesario cargado para ser ejecutado.

Ponerlo en práctica es tremendamente sencillo y podemos sacarle mucha utilidad al tema, como por ejemplo, la siguiente demostración dónde cargamos el mapa cuando alguien hace clic sobre un botón:

http://www.marcosdev.com/ejemplos/googlemaps_async/index2.html

La diferencia entre el primer ejemplo y este segundo, reside en que la capa "mapa" la tengo escondida y que en vez de cargar el mapa directamente, le agrego una funcionalidad al botón para que este lo carge cuando hagan clic sobre él, y además, haga visible la capa:

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Ejemplo de carga de forma asíncrona de Google Maps</title>
</head>
<body>
   <div id="mapa" style="width:300px;height:300px;display:none;">
      <p style="text-align:center"><strong>Cargando</strong></p>
   </div>
   <input type="button" name="bCargar" id="bCargar" value="Cargar Mapa" />
   <script type="text/javascript" src="jquery.js"></script>
   <script type="text/javascript" src="googleMaps.js"></script>
</body>
</html>

Código :

function cargarMapa(){
   if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("mapa"));
      map.setCenter(new GLatLng(39.578678,2.646021), 16);
  }
};

$(document).ready(function(){

   //Agregamos evento click al botón
   $('#bCargar').click(function(){
      //Mostramos la capa mapa
      $('#mapa').show();
      var api='ABQIAAAAOxTvdJxbyGuGB8_UUEe52xRHT0E5MDpBZnfhvo0jhLIefK70hRTYIol4_Lr75EWTtT9VjcaZzY2QWg';
      $.getScript('http://maps.google.com/maps?file=api&amp;v=2.x&amp;key='+api+'&amp;async=2&amp;callback=cargarMapa');
   });
});

Espero que les sea útil

P.D.: Los estilos de la capa "mapa" están escritos utilizando el atributo style. Esto no es una buena práctica; hay que utilizar ficheros CSS de estilos. Lo he hecho así para hacerlo más visible para todos.

P.D2.: En el segundo ejemplo se podría insertar la capa "mapa" en tiempo real sin necesidad de que esté en el código, pero sería menos didácticos para aquellas personas que tengan un nivel bajo de Javascript.

Enviar comentario