2007/05/09

Averigua las coordenadas de google maps

De google maps (la página web), no de google earth (el programa de escritorio).

El caso es que hace un tiempo se me ocurrió que el lugar donde aparco el coche y la hora de aparcamiento tenían algún tipo de relación estadística (a mí nunca se me dio bien la estadística... no debería haber visto Numb3rs XD), y se me ocurrió apuntar fecha, hora y coordenadas en un fichero de texto con el objetivo de tener un puñado de datos sobre el que poder trastear en un futuro (que conociéndome, no llegará nunca). Así que me he "inventado" un bookmarklet para sacar fecha hora y coordenadas de google maps, en un formato fácil de automatizar.

Un bookmarklet es un bookmark (marcador o favorito) que en lugar de abrir una página que tengas guardada, realiza una acción. Imagino que se podría traducir como "favorito activo", o "marcador activo" o algo así. Las acciones se escriben en JavaScript, así que cualquiera que haya hecho algo de páginas web medianamente complejas debería poder manejarse con el tema, a pesar de las pequeñas limitaciones que impone el formato bookmarklet (número de caracteres, p.ej.).

Importantes ayudas son:

El código embellecido es el siguiente (salvo la expresión regular, el resto me parece bastante legible):

javascript:
(function(){
  if(document.location.toString().substr(7,11)!="maps.google")
    return;
  function p(x){
    return (x<10)?"0"+x:x;
  }
  var c=new String(document.getElementById("link")).match(/ll=([^&]*)&/)[1];
  var t=new Date();
  var w=["Do","Lu","Ma","Mi","Ju","Vi","Sa"];
  prompt("fecha dia hr coord",
         t.getFullYear()+"-"+p(t.getMonth()+1)+"-"+p(t.getDate())+" "+
         w[t.getDay()]+" "+p(t.getHours())+":"+t.getMinutes()+" "+c);
}
)()

Y el código comprimido este otro:

javascript:(function(){if(document.location.toString().substr(7,11)!="maps.google")return;function p(x){return (x<10)?"0"+x:x;}var c=new String(document.getElementById("link")).match(/ll=([^&]*)&/)[1];var t=new Date();var w=["Do","Lu","Ma","Mi","Ju","Vi","Sa"];prompt("fecha dia hr coord",t.getFullYear()+"-"+p(t.getMonth()+1)+"-"+p(t.getDate())+" "+w[t.getDay()]+" "+p(t.getHours())+":"+t.getMinutes()+" "+c);})()

Para guardarlo, en Firefox:

  • pulsais con el botón secundario en este enlace y elegís "Añadir este enlace a marcadores...".
  • O bien arrastrais el enlace a la barra de favoritos.
  • O bién copiais el código comprimido en un marcador nuevo ("Marcadores" -> "Administrar marcadores..." -> "Nuevo marcador", escribis un nombre que os guste, y pegais en donde pone "Ubicación").

Y para usarlo, cuando esteis en google maps (si estais en otra web no sucederá nada), y tengais en el centro del mapa el sitio que os interesa, pulsais en el marcador, y copiais al portapapeles lo que os aparezca en el cuadro de diálogo.

PD: Por si alguno se pregunta, acceder al portapapeles para poner o coger datos, es un fallo de seguridad bastante simpático (imagina que tienes un número de tarjeta de crédito, o una contraseña importante). Hasta donde yo sé, Firefox no te deja acceder, pero IE sí (otro motivo más por el que no usar IE).

PPD: Y encontré un bookmarlket que decía hacer lo mismo, pero no parecía funcionar.

2 comentarios:

  1. Parece que este es menos complicado:
    javascript:void(prompt('',gApplication.getMap().getCenter()));

    ResponderEliminar
  2. sí, ya lo miré por febrero

    parece que blogger no ha tomado mi artículo como enlace/retroenlace/trackback o como sea lo que use :-/

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.