<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Alex Franco</title>
	
	<link>http://jafrancov.com</link>
	<description>Unlimited, Unstoppable, Unbreakable</description>
	<lastBuildDate>Fri, 15 Mar 2013 17:53:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jafrancov" /><feedburner:info uri="jafrancov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>jafrancov</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Geocode Inverso: Buscar direcciones a partir de Coordenadas con GMaps API v3</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/PM2l-QYNke8/</link>
		<comments>http://jafrancov.com/2012/10/reverse-geocode/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 22:46:03 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Codigo]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Direcciones]]></category>
		<category><![CDATA[Geocode]]></category>
		<category><![CDATA[Geocoding]]></category>
		<category><![CDATA[GMaps]]></category>
		<category><![CDATA[Maps]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2190</guid>
		<description><![CDATA[Si no tienes mucha experiencia o tienes dudas con respecto a algo que usemos en este post, puedes consultar los demás ejemplos que se han realizado anteriormente aquí. En un post anterior, vimos cómo hacer un Geocode Simple, donde obteníamos las coordenadas a partir de una dirección dada, es decir, podríamos poner cualquier combinación de calles, [...]]]></description>
				<content:encoded><![CDATA[<p>Si no tienes mucha experiencia o tienes dudas con respecto a algo que usemos en este post,<a href="http://jafrancov.com/tag/gmaps"> puedes consultar los demás ejemplos que se han realizado anteriormente aquí</a>.</p>
<p>En un post anterior, vimos cómo hacer un <a title="Geocode Simple: Buscar direcciones (coordenadas a partir de direcciones) con GMaps API v3" href="http://jafrancov.com/2011/06/geocode-gmaps-api-v3/">Geocode Simple</a>, donde obteníamos las coordenadas a partir de una dirección dada, es decir, podríamos poner cualquier combinación de calles, colonias, ciudad, etc. y obtener las coordenadas de esa dirección para colocarlas en un mapa. En este caso es al contrario,<strong> buscar direcciones (de acuerdo a la base de datos de Google) a partir de coordenadas</strong>.</p>
<p>Lo que haremos se resume en: escribir coordenadas (latitud, Longitud), verificar si existe, si existe, colocar un marcador, centrar y dar zoom en el mapa en la región de la dirección obtenida, si no existe la dirección arrojar un error diciendo que no existe.</p>
<p><a href="http://gmaps.alexfranco.mx/reverse-geocode"><img class="aligncenter" title="Ver Demo Geocoding" src="http://sites.google.com/site/jafrancov/stuff/ver-demo.png" alt="Ver Demo Geocoding" width="140" height="57" /></a></p>
<p>Al igual que el ejemplo anterior, es necesario crear un objeto Geocoder, que nos permitirá hacer la interpretación de lo que intentemos buscar.</p>
<pre class="brush: jscript; title: ; notranslate">var geocoder = new google.maps.Geocoder();</pre>
<p>El objeto que se obtiene de respuesta es un JSON, donde lo manejaríamos como regularmente se hace en javascript, el resultado es algo como esto:</p>
<pre class="brush: jscript; title: ; notranslate">
{
  &quot;status&quot;: &quot;OK&quot;,
  &quot;results&quot;: [ {
    &quot;types&quot;: [ &quot;street_address&quot; ],
    &quot;formatted_address&quot;: &quot;1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA&quot;,
    &quot;address_components&quot;: [ {
      &quot;long_name&quot;: &quot;1600&quot;,
      &quot;short_name&quot;: &quot;1600&quot;,
      &quot;types&quot;: [ &quot;street_number&quot; ]
    }, {
      &quot;long_name&quot;: &quot;Amphitheatre Pkwy&quot;,
      &quot;short_name&quot;: &quot;Amphitheatre Pkwy&quot;,
      &quot;types&quot;: [ &quot;route&quot; ]
    }, {
      &quot;long_name&quot;: &quot;Mountain View&quot;,
      &quot;short_name&quot;: &quot;Mountain View&quot;,
      &quot;types&quot;: [ &quot;locality&quot;, &quot;political&quot; ]
    }, {
      &quot;long_name&quot;: &quot;California&quot;,
      &quot;short_name&quot;: &quot;CA&quot;,
      &quot;types&quot;: [ &quot;administrative_area_level_1&quot;, &quot;political&quot; ]
    }, {
      &quot;long_name&quot;: &quot;United States&quot;,
      &quot;short_name&quot;: &quot;US&quot;,
      &quot;types&quot;: [ &quot;country&quot;, &quot;political&quot; ]
    }, {
      &quot;long_name&quot;: &quot;94043&quot;,
      &quot;short_name&quot;: &quot;94043&quot;,
      &quot;types&quot;: [ &quot;postal_code&quot; ]
    } ],
    &quot;geometry&quot;: {
      &quot;location&quot;: {
        &quot;lat&quot;: 37.4219720,
        &quot;lng&quot;: -122.0841430
      },
      &quot;location_type&quot;: &quot;ROOFTOP&quot;,
      &quot;viewport&quot;: {
        &quot;southwest&quot;: {
          &quot;lat&quot;: 37.4188244,
          &quot;lng&quot;: -122.0872906
        },
        &quot;northeast&quot;: {
          &quot;lat&quot;: 37.4251196,
          &quot;lng&quot;: -122.0809954
        }
      }
    }
  } ]
}
</pre>
<p>Lo único que nos faltaría es el código para validar, interpretar y dibujar. Para esto, hay 3 cosas importantes que debemos tomar en cuenta del JSON que tenemos de respuesta:</p>
<ul>
<li><em>status</em>: contiene la respuesta del estado de la petición, si fue satisfactoria o si hubo algún error y que tipo de error.</li>
<li><em>geometry.location</em>: la ubicación de la dirección solicitada.</li>
<li><em>geometry.viewport</em>: los límites recomendados para ajustar el zoom del mapa, haciendo un cuadrante con las esquinas Noreste (superior derecha) y Suroeste (inferior izquierda).</li>
</ul>
<p>Con esto en presente, la función siguiente nos mostrará solamente el primer resultado obtenido, quedando así :</p>
<pre class="brush: jscript; title: ; notranslate">
function codeLatLng() {
   var input = $('#latlng').val();
   var latlngStr = input.split(',', 2);
   var lat = parseFloat(latlngStr[0]);
   var lng = parseFloat(latlngStr[1]);
   var latlng = new google.maps.LatLng(lat, lng);
   geocoder.geocode({'latLng': latlng}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
         if (results[0]) {
            map.fitBounds(results[0].geometry.viewport);
            marker.setMap(map);
            marker.setPosition(latlng);
            $('#address').text(results[0].formatted_address);
            infowindow.setContent(results[0].formatted_address);
            infowindow.open(map, marker);
            google.maps.event.addListener(marker, 'click', function(){
               infowindow.setContent(results[0].formatted_address);
               infowindow.open(map, marker);
            });
         } else {
            alert('No results found');
         }
      } else {
         alert('Geocoder failed due to: ' + status);
      }
   });
}
</pre>
<p>Los primeros 4 renglones de la función realizan la validación y separación de latitud y longitud, para poder formar el objeto latLng, y listo con esto tenemos terminado nuestro ejercicio, puedes verificarlo en funcionamiento en la página de demos:</p>
<p><a href="http://gmaps.alexfranco.mx/reverse-geocode"><img class="aligncenter" title="Ver Demo Geocoding" src="http://sites.google.com/site/jafrancov/stuff/ver-demo.png" alt="Ver Demo Geocoding" width="140" height="57" /></a></p>
<p>El código completo quedaría así:</p>
<pre class="brush: jscript; title: ; notranslate">
var geocoder;
var map;
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker();

function closeInfoWindow() {
      	infowindow.close();
   }

function initialize() {
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(20.68009, -101.35403);
  var mapOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: 'roadmap'
  }
  map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

  google.maps.event.addListener(map, 'click', function(){
        	closeInfoWindow();
     	  });
}

function codeLatLng() {
  var input = $('#latlng').val();
  var latlngStr = input.split(',', 2);
  var lat = parseFloat(latlngStr[0]);
  var lng = parseFloat(latlngStr[1]);
  var latlng = new google.maps.LatLng(lat, lng);
  geocoder.geocode({'latLng': latlng}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
		ObjectDump(results, &quot;description&quot;);
      if (results[0]) {
		map.fitBounds(results[0].geometry.viewport);
                marker.setMap(map);
                marker.setPosition(latlng);
		$('#address').text(results[0].formatted_address);
		infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
		google.maps.event.addListener(marker, 'click', function(){
            infowindow.setContent(results[0].formatted_address);
	        infowindow.open(map, marker);
        });
      } else {
        alert('No results found');
      }
    } else {
      alert('Geocoder failed due to: ' + status);
    }
  });
}

$(document).ready(function(){
   initialize();
});
</pre>
<p>Y en el Body solamente esto:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div&gt;
   &lt;input id=&quot;latlng&quot; type=&quot;textbox&quot; value=&quot;20.68009, -101.35403&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
   &lt;input type=&quot;button&quot; value=&quot;Reverse Geocode&quot; onclick=&quot;codeLatLng()&quot;&gt;
&lt;/div&gt;
&lt;table class=&quot;width2&quot;&gt;
   &lt;tr&gt;&lt;td class=&quot;unitx1&quot;&gt;&lt;strong&gt;Dirección:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;div id=&quot;address&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;div id=&quot;map_canvas&quot; style=&quot;width: 990px; height: 500px&quot;&gt;&lt;/div&gt;
</pre>
<p>Espero les sirva y cualquier cosa, ya saben cómo contactarme&#8230;</p>
<p style="text-align: right;"><em>Enjoy this Life!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" id="wp_rp_first"><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2011/06/geocode-gmaps-api-v3/" class="wp_rp_title">Geocode Simple: Buscar direcciones (coordenadas a partir de direcciones) con GMaps API v3</a></li><li ><a href="http://jafrancov.com/2011/12/trazar-rutas-gmaps-api-v3/" class="wp_rp_title">Buscar y trazar rutas con GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/09/info-window-gmaps-api-v3/" class="wp_rp_title">Info Window en GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/07/geolocalizacion-mediante-la-api-de-firefox/" class="wp_rp_title">Geolocalización mediante la API de Firefox</a></li><li ><a href="http://jafrancov.com/2010/09/draggable-marker-getting-lat-lng-gmaps-api-v3/" class="wp_rp_title">Marcador arrastrable y cómo obtener su Lat/Lng GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/09/single-infowindow/" class="wp_rp_title">Mostrar sólo un InfoWindow y cerrarlo automáticamente GMaps API v3</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/PM2l-QYNke8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2012/10/reverse-geocode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2012/10/reverse-geocode/</feedburner:origLink></item>
		<item>
		<title>¡De regreso a bloggear!</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/BxtS7pg5dQ8/</link>
		<comments>http://jafrancov.com/2012/08/regreso-a-bloggear/#comments</comments>
		<pubDate>Fri, 03 Aug 2012 20:40:45 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Blogger]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2178</guid>
		<description><![CDATA[Desde hace un rato he estado un tanto alejado de mi blog, muchas razones de tiempo, trabajo, más trabajo y cosas por el estilo, sin embargo, ya estoy de regreso y con tiempo más o menos suficiente para seguir dándole vida al blog. Una disculpa enorme a quienes me han escrito comentarios o correos desde [...]]]></description>
				<content:encoded><![CDATA[<p>Desde hace un rato he estado un tanto alejado de mi blog, muchas razones de tiempo, trabajo, más trabajo y cosas por el estilo, sin embargo, ya estoy de regreso y con tiempo más o menos suficiente para seguir dándole vida al blog.</p>
<p>Una disculpa enorme a quienes me han escrito comentarios o correos desde aquí, en esta semana intentaré dar respuesta a todo y empezar a publicar nuevamente.</p>
<p>Así que manos a la obra&#8230;</p>
<p style="text-align: center;"><img class="aligncenter" title="Storm Trooper - Moonwalk" src="http://jafrancov.com/wp-content/uploads/2012/08/stormtrooper_moonwalk.jpeg" alt="" width="536" height="199" /></p>
<p style="text-align: right;"><em>Enjoy!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2009/01/escribir-codigo-en-posts/" class="wp_rp_title">Escribir código en posts</a></li><li ><a href="http://jafrancov.com/2009/03/blogumus-nube-de-etiquetas-en-movimiento/" class="wp_rp_title">Blogumus: Nube de etiquetas en movimiento [SOLUCIONADO]</a></li><li ><a href="http://jafrancov.com/2009/01/tags-cloud-en-blogger/" class="wp_rp_title">Tags Cloud en Blogger</a></li><li ><a href="http://jafrancov.com/2010/03/registrate-y-participa-en-el-google-developer-fest-2010/" class="wp_rp_title">Regístrate y participa en el Google Developer Fest 2010</a></li><li ><a href="http://jafrancov.com/2009/12/gracias-a-todos-mis-followers-mas-de-500-woohoo/" class="wp_rp_title">Gracias a todos mis followers (más de 500 ¡¡woohoo!!)</a></li><li ><a href="http://jafrancov.com/2009/02/ahora-sin-ti/" class="wp_rp_title">Ahora sin ti</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/BxtS7pg5dQ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2012/08/regreso-a-bloggear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2012/08/regreso-a-bloggear/</feedburner:origLink></item>
		<item>
		<title>Descargar canciones de Grooveshark con Groovedown (Windows/Mac/Linux)</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/ckLDPLpHpc4/</link>
		<comments>http://jafrancov.com/2012/01/descargar-musica-groovedown-windows-mac-osx-linux/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 20:30:10 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Nativas]]></category>
		<category><![CDATA[Decargas]]></category>
		<category><![CDATA[Groovedown]]></category>
		<category><![CDATA[Grooveshark]]></category>
		<category><![CDATA[Música]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2159</guid>
		<description><![CDATA[Ya hemos hablado de Grooveshark como una excelente alternativa para escuchar música a través de la web, más ahora que todo empieza a ir hacia la nube les comparto una herramienta para quienes de cualquier manera quieren tener una copia en sus equipos. La herramienta se llama Groovedown y es sumamente sencilla de utilizar, hace [...]]]></description>
				<content:encoded><![CDATA[<p>Ya hemos hablado de <a title="Grooveshark – Listen to Free Music" href="http://jafrancov.com/2009/03/grooveshark-listen-to-free-music/">Grooveshark</a> como una excelente alternativa para escuchar música a través de la web, más ahora que todo empieza a ir hacia la nube les comparto una herramienta para quienes de cualquier manera quieren tener una copia en sus equipos.</p>
<p style="text-align: center;"><a title="Groovedown" href="http://groovedown.me"><img title="Groovedown Logo" src="http://jafrancov.com/wp-content/uploads/2012/01/groovedown-logo.png" alt="Groovedown Logo" width="128" height="128" /></a></p>
<p>La herramienta se llama <a title="Groovedown" href="http://groovedown.me">Groovedown</a> y es sumamente sencilla de utilizar, hace un tiempo encontré esta aplicación, permitiéndonos descargar las canciones que se encuentran en Grooveshark, pero, su limitante es que era únicamente para Windows, que podía ser emulado desde Mac o Linux con Wine, pero en ocasiones no funcionaba del todo bien. Ahora han mejorado y cerrando el 2011 han hecho la aplicación multiplataforma, para windows es un instalador, para Mac y Linux la aplicación está desarrollada en Java, así que con un doble click tendremos funcionando el programa.</p>
<p style="text-align: center;"><img class="aligncenter" title="Groovedown Search" src="http://jafrancov.com/wp-content/uploads/2012/01/groovedown-search.png" alt="Groovedown Search" width="522" height="333" /></p>
<p>Su uso es bastante sencillo, colocamos lo que estamos buscando y hacemos click en &#8220;Search&#8221;, de forma opcional podemos seleccionar en los botones de arriba de la caja de búsqueda, que le de prioridad a buscar bajo el concepto que hayamos buscado, el nombre de la canción/artista/álbum o incluso lista de reproducción. Ya que nos aparecen los resultados, seleccionamos la canción y hacemos click en el signo &#8220;más&#8221; (+) que nos aparece a la izquierda, esto la descargará automáticamente y podremos visualizar su avance en la lista de descargas. Además nos deja un historial de lo que hemos descargado.</p>
<p style="text-align: center;"><img class="aligncenter" title="Groovedown Settings" src="http://jafrancov.com/wp-content/uploads/2012/01/groovedown-settings.png" alt="Groovedown Settings" width="522" height="333" /></p>
<p>Por último tenemos la opción de configuraciones, dónde guardar los archivos descargados, máximo de descargas en paralelo y cómo y dónde queremos que se guarden las descargas.</p>
<p>Cabe mencionar que la aplicación sigue en desarrollo y de repente tiene algunos detalles, otro detalle es que está <strong>libre de virus</strong>, es una aplicación que se conecta a un servicio de música exclusivamente, así que no encontraremos sorpresas con las descargas, además es de uso bajo propio riesgo conforme a sus términos de uso.</p>
<p><strong>Sitio y descarga: <a title="Groovedown" href="http://groovedown.me/download/" target="_blank">Groovedown.me</a></strong></p>
<p style="text-align: right;"><em>Enjoy this Life!!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2009/07/musica-electronica-para-julio-09/" class="wp_rp_title">Música electrónica para Julio &#039;09</a></li><li ><a href="http://jafrancov.com/2011/01/reducir-tamano-mp3-mac/" class="wp_rp_title">Cómo reducir el tamaño de MP3 en Mac</a></li><li ><a href="http://jafrancov.com/2009/03/grooveshark-listen-to-free-music/" class="wp_rp_title">Grooveshark &#8211; Listen to Free Music</a></li><li ><a href="http://jafrancov.com/2009/07/tocame-el-windous-cancion-del-verano-2009/" class="wp_rp_title">Tócame el Windows (Canción del Verano 2009)</a></li><li ><a href="http://jafrancov.com/2008/11/la-mejor-version-de-thriller-que-escuchaste/" class="wp_rp_title">La mejor versión de “Thriller” que escuchaste</a></li><li ><a href="http://jafrancov.com/2010/06/las-canciones-videos-del-mundial-fifa-sudafrica-2010/" class="wp_rp_title">Las canciones-videos del Mundial FIFA Sudáfrica 2010</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/ckLDPLpHpc4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2012/01/descargar-musica-groovedown-windows-mac-osx-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2012/01/descargar-musica-groovedown-windows-mac-osx-linux/</feedburner:origLink></item>
		<item>
		<title>Buscar y trazar rutas con GMaps API v3</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/PLKAllozth4/</link>
		<comments>http://jafrancov.com/2011/12/trazar-rutas-gmaps-api-v3/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 19:41:28 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Codigo]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Direcciones]]></category>
		<category><![CDATA[GMaps]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[Rutas]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2143</guid>
		<description><![CDATA[Si no tienes mucha experiencia o tienes dudas con respecto a algo que usemos en este post, puedes consultar los demás ejemplos que se han realizado anteriormente aquí. En esta ocasión veremos un ejemplo buscado por muchos, y que puede llegar a tener gran utilidad dependiendo de nuestra aplicación, estamos hablando de trazar rutas&#8230; dije [...]]]></description>
				<content:encoded><![CDATA[<p>Si no tienes mucha experiencia o tienes dudas con respecto a algo que usemos en este post, <a href="http://jafrancov.com/tag/gmaps">puedes consultar los demás ejemplos que se han realizado anteriormente aquí</a>.</p>
<p>En esta ocasión veremos un ejemplo buscado por muchos, y que puede llegar a tener gran utilidad dependiendo de nuestra aplicación, estamos hablando de trazar rutas&#8230; dije ¿rutas?, si, rutas, direcciones, un pequeño GPS en web.</p>
<p>Lo que haremos es bastante sencillo de entender y lo pondremos de la manera más básica, esto para darte la amplitud a que lo mejores y le pongas la cara que desees.</p>
<p>El proceso es entendido por todos, es proporcionar 2 puntos, un origen y un destino, a partir de esto, que nos proporcione una ruta para ir de un lado a otro. Sin más preámbulo manos a la obra.</p>
<p style="text-align: center;"><a href="http://gmaps.alexfranco.mx/routes-directions" target="_blank"><img class="alignnone" title="Ver Demo Trazar Rutas" src="http://sites.google.com/site/jafrancov/stuff/ver-demo.png" alt="Ver Demo Single InfoWindow" width="140" height="57" /></a></p>
<p>Lo primero (siempre usaremos los scripts de jQuery y GMaps) que haremos será crear el html sobre el cuál vamos a trabajar, para esto solamente requerimos 2 cajas de texto para escribir el origen y el destino, un botón para ejecutar el proceso, 2 combobox donde uno será para elegir el modo de viaje (auto, bicicleta, caminando) y el otro para elegir el sistema de medición (Métrico -mts, Km-, Imperial -ft, Mi-), por último 2 divs, uno para el espacio del mapa y otro para el panel de direcciones.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div&gt;
	&lt;label for=&quot;origen&quot;&gt;Origen&lt;/label&gt;
	&lt;input type=&quot;text&quot; name=&quot;origen&quot; id=&quot;origen&quot; placeholder=&quot;calle, ciudad, estado...&quot; /&gt;
	&lt;br /&gt;
	&lt;label for=&quot;destino&quot;&gt;Destino&lt;/label&gt;
	&lt;input type=&quot;text&quot; name=&quot;destino&quot; id=&quot;destino&quot; placeholder=&quot;calle, ciudad, estado...&quot; /&gt;
	&lt;br /&gt;
	&lt;input type=&quot;button&quot; id=&quot;buscar&quot; value=&quot;Buscar ruta&quot;  /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;Opciones&lt;/h3&gt;
&lt;div id=&quot;rutaOps&quot;&gt;
	&lt;select id=&quot;modo_viaje&quot; class=&quot;opciones_ruta&quot;&gt;
		&lt;option value=&quot;DRIVING&quot; selected=&quot;selected&quot;&gt;Auto&lt;/option&gt;
      	&lt;option value=&quot;BICYCLING&quot;&gt;Bicicleta&lt;/option&gt;
      	&lt;option value=&quot;WALKING&quot;&gt;Caminando&lt;/option&gt;
  	&lt;/select&gt;
  	&lt;select id=&quot;tipo_sistema&quot; class=&quot;opciones_ruta&quot;&gt;
      	&lt;option value=&quot;METRIC&quot; selected=&quot;selected&quot;&gt;Métrico&lt;/option&gt;
      	&lt;option value=&quot;IMPERIAL&quot;&gt;Imperial&lt;/option&gt;
  	&lt;/select&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
	&lt;div id=&quot;map_canvas&quot; style=&quot;float:left; width:70%; height:500px&quot;&gt;&lt;/div&gt;
	&lt;div id=&quot;panel_ruta&quot; style=&quot;float:right; overflow: auto; width:30%; height: 500px&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Una vez que tenemos el HTML nos enfocaremos en el la API y JS completamente, declaramos 2 objetos globales, uno es <em>DirectionsRenderer</em> y otro es <em>DirectionsService</em>. El primero nos dará las herramientas necesarias para que visualicemos en el navegador toda la información obtenida, el segundo es el servicio que buscará en las bases de datos de Google Maps tanto los puntos como la(s) rutas existentes.</p>
<pre class="brush: jscript; title: ; notranslate">
var directionsDisplay = new google.maps.DirectionsRenderer();
var directionsService = new google.maps.DirectionsService();
</pre>
<p>Una vez hecho esto, escribimos el código para ya tener inicializado y dibujado el mapa en nuestra página, creamos una función con el nombre que nosotros queramos, dentro de ella, vamos a colocar lo siguiente:</p>
<pre class="brush: jscript; title: ; notranslate">
var request = {
 origin: $('#origen').val(),
 destination: $('#destino').val(),
 travelMode: google.maps.DirectionsTravelMode[$('#modo_viaje').val()],
 unitSystem: google.maps.DirectionsUnitSystem[$('#tipo_sistema').val()],
 provideRouteAlternatives: true
 };
</pre>
<p>Línea por línea:</p>
<ol>
<li>Declaramos una variable con las opciones con las que se va a solicitar la información al objeto <em>DirectionsServices</em>, lo siguiente son parámetros para hacer la búsqueda de acuerdo a los datos introducidos.</li>
<li>A <em>origin</em> se le asigna el valor de  la caja de texto <em>origen</em> estableciendo el punto de partida de la ruta.</li>
<li>A <em>destination</em> se le asigna el valor de la caja de texto <em>destino</em> con el que se especifica el punto final de la ruta.</li>
<li>En la opción <em>travelMode</em> se asigna la opción elegida para el modo de viaje (<em>modo_viaje</em>), por esta razón en el valor de cada opción se definió de acuerdo al valor asignado en la API.</li>
<li>unitSystem se refiere al tipo de unidades que se utilizarán para mostrar distancias, obteniendo el valor del <em>tipo_sistema</em>.</li>
<li>Con la opción provideRouteAlternatives establecemos en verdadero o falso (por default <em>false</em>), para indicar que puede ofrecernos más resultados para las rutas (rutas alternativas).</li>
</ol>
<p>Una vez declarada la variable con el arreglo de los parámetros, con unas cuántas líneas vamos a hacer la solicitud y plasmar el resultado:</p>
<pre class="brush: jscript; title: ; notranslate">
directionsService.route(request, function(response, status) {
	if (status == google.maps.DirectionsStatus.OK) {
		directionsDisplay.setMap(map);
		directionsDisplay.setPanel($(&quot;#panel_ruta&quot;).get(0));
		directionsDisplay.setDirections(response);
	} else {
	        alert(&quot;No existen rutas entre ambos puntos&quot;);
	}
});
</pre>
<p>Recordemos que al inicio declaramos 2 objetos, teniendo en cuenta su función, les explico línea a línea:</p>
<ol>
<li><em>directionsService.route</em> hace la solicitud a la API con los datos que previamente establecimos (<em>request</em>), creamos una una función interna, que recibe los parámetros de respuesta (<em>response</em>) que es donde vendrían contenidos los datos y un estatus (<em>status</em>) que indica si fue exitosa la solicitud.</li>
<li>Si el estatus es <em>OK</em> procedemos, si no, mandamos un mensaje de error diciendo que no se pudo encontrar ruta entre ambos puntos. Existe una serie de estatus distintos, sin embargo y para efectos prácticos solamente usamos aquí el OK (para ver más tipos de status, hay que ir directamente a la documentación de la API).</li>
<li><em>directionsDisplay.setMap(map)</em> establece el mapa sobre el cuál será trazada la ruta, la variable <em>map</em> debe ser un objeto tipo <a title="Primeros pasos con la API v3 de Google Maps (Mapa y Marcador)" href="http://jafrancov.com/2010/08/bases-gmaps-api-v3/" target="_blank">Mapa</a>, además de global.</li>
<li><em>directionsDisplay.setPanel($(&#8220;#panel_ruta&#8221;).get(0))</em> indica dónde van a ser escritas las indicaciones de la ruta, aquí es necesario indicar un div disponible (<em>panel_ruta</em>).</li>
<li>directionsDisplay.setDirections(response) hace la magia, imprime en el mapa la ruta y escribe las indicaciones de acuerdo a las 2 instrucciones anteriores.</li>
</ol>
<p>Por último solamente creamos un par de funciones para que al hacer click en el botón busque la ruta o la redibuje si se eligen diferentes opciones, esto es opcional, si no lo quieren así hay que hacer que indicar que al hacer click, la función central se ejecute, para mi caso, la función la llamé <em>rockAndRoll</em>  <img src='http://jafrancov.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<pre class="brush: jscript; title: ; notranslate">
$('#buscar').live('click', function(){
	rockAndRoll();
});

$('.opciones_ruta').live('change', function(){
	rockAndRoll();
});
</pre>
<p style="text-align: center;"><a href="http://gmaps.alexfranco.mx/routes-directions" target="_blank"><img title="Ver Demo Trazar Rutas" src="http://sites.google.com/site/jafrancov/stuff/ver-demo.png" alt="Ver Demo Single InfoWindow" width="140" height="57" /></a></p>
<p>Es todo por esta ocasión, espero les ayude en sus proyectos o simplemente para jugar un rato, si quieren verlo en función denle click en el botón verde, dudas y comentarios son bien recibidos, o pueden encontrarme en twitter @<a href="http://twitter.com/jafrancov" target="_blank">jafrancov</a></p>
<p style="text-align: right;"><em>Enjoy this Life!!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2011/06/geocode-gmaps-api-v3/" class="wp_rp_title">Geocode Simple: Buscar direcciones (coordenadas a partir de direcciones) con GMaps API v3</a></li><li ><a href="http://jafrancov.com/2012/10/reverse-geocode/" class="wp_rp_title">Geocode Inverso: Buscar direcciones a partir de Coordenadas con GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/09/info-window-gmaps-api-v3/" class="wp_rp_title">Info Window en GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/07/geolocalizacion-mediante-la-api-de-firefox/" class="wp_rp_title">Geolocalización mediante la API de Firefox</a></li><li ><a href="http://jafrancov.com/2010/09/draggable-marker-getting-lat-lng-gmaps-api-v3/" class="wp_rp_title">Marcador arrastrable y cómo obtener su Lat/Lng GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/09/single-infowindow/" class="wp_rp_title">Mostrar sólo un InfoWindow y cerrarlo automáticamente GMaps API v3</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/PLKAllozth4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/12/trazar-rutas-gmaps-api-v3/feed/</wfw:commentRss>
		<slash:comments>59</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/12/trazar-rutas-gmaps-api-v3/</feedburner:origLink></item>
		<item>
		<title>Auto4sq: La mejor manera de hacer trampa en Foursquare</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/F0KdST47g8k/</link>
		<comments>http://jafrancov.com/2011/12/auto4sq-trampa-foursquare-4sq/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 21:52:35 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Opiniones]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[4sq]]></category>
		<category><![CDATA[Foursquare]]></category>
		<category><![CDATA[trampa]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2122</guid>
		<description><![CDATA[Foursquare, hoy por hoy sigue siendo el rey de los Checkins Geolocalizables, además me considero un gran partidario de esta red, en los últimos meses he estado haciendo las funciones de SuperUser L2, arreglando venues, categorías, eliminando cosas que no deben ir y bueno intentando asemejar lo más posible lo virtual a lo real. Todo [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://jafrancov.com/tag/foursquare">Foursquare</a>, hoy por hoy sigue siendo el rey de los Checkins Geolocalizables, además me considero un gran partidario de esta red, en los últimos meses he estado haciendo las funciones de <em>SuperUser L2</em>, arreglando venues, categorías, eliminando cosas que no deben ir y bueno intentando asemejar lo más posible lo virtual a lo real.</p>
<p>Todo iba correctamente hasta que algo me saltó, algo no estaba cuadrando en mi grupo de amigos y conocidos en Foursquare, uno de ellos (<del>RubenAlgo</del>) veía que siempre tenía un <em>puntaje mayor a 700, 245 Mayorships y 5428 checkins en 340 días (datos a la fecha de este post)</em>, esto es una cantidad realmente impresionante, ya que diariamente y sin fallar debe hacer alrededor de 15 checkins, más o menos distribuidos para que la API no le bloquee y siga manteniendo sus Mayorships. Ocasionalmente coincidía que hacía checkins donde se supone yo estaba, para mi sorpresa, no estaba él allí (¿checkins falsos?). Hasta hace un par de días, me puse a investigar un poco al respecto y descubrí el truco (además descubrí que una de dos, o descubrió la teletransportación o es Jumper), en cada checkin, se registra desde qué aplicación se realizó dicho check-in, y para la gran mayoría de este caso particular, fueron desde una aplicación llamada <strong><a title="Auto4Sq" href="http://www.auto4sq.com/" target="_blank">Auto4Sq</a></strong>.</p>
<p style="text-align: center;"><img class="aligncenter" title="Auto4Sq" src="http://jafrancov.com/wp-content/uploads/2011/12/auto4sq.png" alt="Auto4Sq" width="195" height="196" /></p>
<p><strong><a title="Auto4Sq" href="http://www.auto4sq.com/" target="_blank">Auto4Sq</a></strong> nos dice que su intención es esta:</p>
<blockquote><p>Programación Automática de Check-ins<br />
CÓMO FUNCIONA<br />
Es un concepto simple. Hace check-in en Foursquare en el mismo lugar todos los días. Tal vez el trabajo, tal vez la escuela, tal vez en su club deportivo favorito. Pero a veces se olvida ¡hacer check-in! Pues no más. Programe sus check-ins de Foursquare con nosotros y automáticamente haremos sus check-ins día a día!</p>
<ol>
<li>Ingresar a través de Foursquare</li>
<li>Elegir un lugar de su historial</li>
<li>Seleccione el día/hora para programar sus check-ins</li>
<li>¡Siéntese y deje el auto check-ins de comience!</li>
</ol>
</blockquote>
<p>La intención es bastante buena y de hecho la aplicación en sí, lo es, sin embargo, muchos usuarios han encontrado que es la mejor manera de &#8220;hacer trampa&#8221; en Foursquare, ya que, dejan programados una gran cantidad de checkins a lo largo del día en innumerables lugares, además de que la aplicación toma el lugar donde hiciste checkin de tu historial y usa los mismos datos de geolocalización para hacer que el checkin cuente para obtener el Mayor, con esto, a mi punto de vista, se rompe por completo la dinámica del juego.</p>
<p>Tengamos algo en cuenta, todo este rollo de Foursquare es un graaaaaan juego, pero, <strong>hacer trampa en lo que sea, no es tan cool</strong>, dirían los comerciales de TV &#8220;<em>Tienes el Valor o ¿Te Vale?</em>&#8221; jaja.</p>
<p>Link: <a title="Auto4Sq" href="http://www.auto4sq.com/" target="_blank">Auto4Sq</a></p>
<div style="text-align: right;"><em>Enjoy this life!!</em></div>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2010/06/como-obtener-badges-en-foursquare/" class="wp_rp_title">¿Cómo obtener Badges en Foursquare?</a></li><li ><a href="http://jafrancov.com/2010/06/que-es-y-como-usar-foursquare/" class="wp_rp_title">¿Qué es y cómo usar Foursquare? Conceptos y pasos básicos</a></li><li ><a href="http://jafrancov.com/2010/06/cuando-sere-mayor-en-foursquare/" class="wp_rp_title">¿Cómo ser Mayor en Foursquare?</a></li><li ><a href="http://jafrancov.com/2010/08/quick-proxy-php/" class="wp_rp_title">Obtener un JSON Cross-Domain con jQuery (rápido Proxy con PHP)</a></li><li ><a href="http://jafrancov.com/2010/08/soporte-navegadores-html5/" class="wp_rp_title">Qué características de HTML5 soporta tu navegador</a></li><li ><a href="http://jafrancov.com/2010/09/cuevana-peliculas-y-series-online/" class="wp_rp_title">Cuevana, el mejor sitio para ver películas y series online en calidad DVD</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/F0KdST47g8k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/12/auto4sq-trampa-foursquare-4sq/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/12/auto4sq-trampa-foursquare-4sq/</feedburner:origLink></item>
		<item>
		<title>Geocode Simple: Buscar direcciones (coordenadas a partir de direcciones) con GMaps API v3</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/v6rCCZqixZs/</link>
		<comments>http://jafrancov.com/2011/06/geocode-gmaps-api-v3/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 01:29:33 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Codigo]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Direcciones]]></category>
		<category><![CDATA[Geocode]]></category>
		<category><![CDATA[Geocoding]]></category>
		<category><![CDATA[GMaps]]></category>
		<category><![CDATA[Maps]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2091</guid>
		<description><![CDATA[Si no tienes mucha experiencia o tienes dudas con respecto a algo que usemos en este post, puedes consultar los demás ejemplos que se han realizado anteriormente aquí. Ya hemos visto el cómo obtener geolocalización para ubicar el lugar donde nos encontramos, pero, ¿qué pasa cuando buscamos una dirección diferente a donde nos encontramos?, sería [...]]]></description>
				<content:encoded><![CDATA[<p>Si no tienes mucha experiencia o tienes dudas con respecto a algo que usemos en este post,<a href="http://jafrancov.com/tag/gmaps"> puedes consultar los demás ejemplos que se han realizado anteriormente aquí</a>.</p>
<p>Ya hemos visto el <a href="http://jafrancov.com/2010/07/geolocalizacion-con-html5/">cómo obtener geolocalización</a> para ubicar el lugar donde nos encontramos, pero, ¿qué pasa cuando buscamos una dirección diferente a donde nos encontramos?, sería necesario escribir y buscar la dirección deseada, bien pues el proceso es relativamente sencillo. (Para esto requeriremos que agregues los scripts de GMaps y de jQuery, consulta los anteriores post si tienes duda de esto).</p>
<p>Lo que haremos se resume en: escribir una dirección, verificar si existe, si existe, colocar un marcador, centrar y dar zoom en el mapa en la región de la dirección obtenida, si no existe la dirección arrojar un error diciendo que no existe.</p>
<p style="text-align: center;"><a href="http://gmaps.alexfranco.mx/geocode-simple"><img class="alignnone" title="Ver Demo Geocoding" src="http://sites.google.com/site/jafrancov/stuff/ver-demo.png" alt="Ver Demo Geocoding" width="140" height="57" /></a></p>
<p>La parte importante del código es generar un objeto que nos permita comunicarnos con la API  de Google Maps y nos convierta la dirección en latitud y longitud de manera que podamos maniobrarlas a placer.</p>
<pre class="brush: jscript; title: ; notranslate">var geocoder = new google.maps.Geocoder();</pre>
<p>Cuando se genera una petición de Geocoding, pueden enviarse varios parámetros para obtener resultados más específicos, un objeto de solicitud completa comprendería:</p>
<ul>
<li><em>address</em> (obligatorio *): es la dirección que deseas codificar de forma geográfica.</li>
<li><em>latLng</em> (obligatorio *): la latitud y la longitud (LatLng ) para las que deseas obtener la dirección interpretable por humanos más cercana.</li>
<li>bounds (opcional): los límites de latitud y de longitud (LatLngBounds) dentro de los que quieres predeterminar los resultados de codificación geográfica con mayor importancia. Para obtener más información, consulta la sección Especificación de la ventana gráfica que encontrarás a continuación.</li>
<li>language (opcional): es el idioma en el que se devuelven los resultados.</li>
<li>region (opcional): el código de región, especificado como una subetiqueta region del lenguaje IANA. En la mayoría de los casos, estas etiquetas se asignan directamente a valores de dos caracteres ccTLD (&#8220;dominio de nivel superior&#8221;) ya conocidos. Para obtener más información, consulta la sección Especificación del código de región que encontrarás a continuación.</li>
</ul>
<p>* <em>Nota</em>: la búsqueda funciona incluyendo solamente el campo address, aunque siempre es requisito incluir un campo address o un campo latLng obligatoriamente, si se coloca un campo latLng, el geocoder realizará el proceso conocido como codificación geográfica inversa, o sea, convertir coordenadas en direcciones, pero, eso lo veremos en otro post.</p>
<p>La solicitud se hace de la siguiente manera:</p>
<pre class="brush: jscript; title: ; notranslate">
// Obtenemos la dirección y la asignamos a una variable
var address = $('#address').val();
// Creamos el Objeto Geocoder
var geocoder = new google.maps.Geocoder();
// Hacemos la petición indicando la dirección e invocamos la función
// geocodeResult enviando todo el resultado obtenido
geocoder.geocode({ 'address': address}, geocodeResult);
</pre>
<p>El objeto que se obtiene de respuesta es un JSON, donde lo manejaríamos como regularmente se hace en javascript, el resultado es algo como esto:</p>
<pre class="brush: jscript; title: ; notranslate">
{
  &quot;status&quot;: &quot;OK&quot;,
  &quot;results&quot;: [ {
    &quot;types&quot;: [ &quot;street_address&quot; ],
    &quot;formatted_address&quot;: &quot;1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA&quot;,
    &quot;address_components&quot;: [ {
      &quot;long_name&quot;: &quot;1600&quot;,
      &quot;short_name&quot;: &quot;1600&quot;,
      &quot;types&quot;: [ &quot;street_number&quot; ]
    }, {
      &quot;long_name&quot;: &quot;Amphitheatre Pkwy&quot;,
      &quot;short_name&quot;: &quot;Amphitheatre Pkwy&quot;,
      &quot;types&quot;: [ &quot;route&quot; ]
    }, {
      &quot;long_name&quot;: &quot;Mountain View&quot;,
      &quot;short_name&quot;: &quot;Mountain View&quot;,
      &quot;types&quot;: [ &quot;locality&quot;, &quot;political&quot; ]
    }, {
      &quot;long_name&quot;: &quot;California&quot;,
      &quot;short_name&quot;: &quot;CA&quot;,
      &quot;types&quot;: [ &quot;administrative_area_level_1&quot;, &quot;political&quot; ]
    }, {
      &quot;long_name&quot;: &quot;United States&quot;,
      &quot;short_name&quot;: &quot;US&quot;,
      &quot;types&quot;: [ &quot;country&quot;, &quot;political&quot; ]
    }, {
      &quot;long_name&quot;: &quot;94043&quot;,
      &quot;short_name&quot;: &quot;94043&quot;,
      &quot;types&quot;: [ &quot;postal_code&quot; ]
    } ],
    &quot;geometry&quot;: {
      &quot;location&quot;: {
        &quot;lat&quot;: 37.4219720,
        &quot;lng&quot;: -122.0841430
      },
      &quot;location_type&quot;: &quot;ROOFTOP&quot;,
      &quot;viewport&quot;: {
        &quot;southwest&quot;: {
          &quot;lat&quot;: 37.4188244,
          &quot;lng&quot;: -122.0872906
        },
        &quot;northeast&quot;: {
          &quot;lat&quot;: 37.4251196,
          &quot;lng&quot;: -122.0809954
        }
      }
    }
  } ]
}
</pre>
<p>Lo único que nos faltaría es el código para validar, interpretar y dibujar. Para esto, hay 3 cosas importantes que debemos tomar en cuenta del JSON que tenemos de respuesta:</p>
<ul>
<li><em>status</em>: contiene la respuesta del estado de la petición, si fue satisfactoria o si hubo algún error y que tipo de error.</li>
<li><em>geometry.location</em>: la ubicación de la dirección solicitada</li>
<li><em>geometry.viewport</em>: los límites recomendados para ajustar el zoom del mapa, haciendo un cuadrante con las esquinas Noreste (superior derecha) y Suroeste (inferior izquierda).</li>
</ul>
<p>Con esto en presente, la función siguiente nos mostrará solamente el primer resultado obtenido, quedando así :</p>
<pre class="brush: jscript; title: ; notranslate">
function geocodeResult(results, status) {
    // Verificamos el estatus
    if (status == 'OK') {
        // Si hay resultados encontrados, centramos y repintamos el mapa
        // esto para eliminar cualquier pin antes puesto
        var mapOptions = {
            center: results[0].geometry.location,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map($(&quot;#map_canvas&quot;).get(0), mapOptions);
        // fitBounds acercará el mapa con el zoom adecuado de acuerdo a lo buscado
        map.fitBounds(results[0].geometry.viewport);
        // Dibujamos un marcador con la ubicación del primer resultado obtenido
        var markerOptions = { position: results[0].geometry.location }
        var marker = new google.maps.Marker(markerOptions);
        marker.setMap(map);
    } else {
        // En caso de no haber resultados o que haya ocurrido un error
        // lanzamos un mensaje con el error
        alert(&quot;Geocoding no tuvo éxito debido a: &quot; + status);
    }
}
</pre>
<p>Y listo con esto tenemos terminado nuestro ejercicio, puedes verificarlo en funcionamiento en la página de demos:</p>
<p style="text-align: center;"><a href="http://gmaps.alexfranco.mx/geocode-simple"><img class="alignnone" title="Ver Demo Geocoding" src="http://sites.google.com/site/jafrancov/stuff/ver-demo.png" alt="Ver Demo Geocoding" width="140" height="57" /></a></p>
<p>El código completo quedaría así:</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function() {
    load_map();
});

var map;

function load_map() {
    var myLatlng = new google.maps.LatLng(20.68009, -101.35403);
    var myOptions = {
        zoom: 4,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map($(&quot;#map_canvas&quot;).get(0), myOptions);
}

$('#search').live('click', function() {
    // Obtenemos la dirección y la asignamos a una variable
    var address = $('#address').val();
    // Creamos el Objeto Geocoder
    var geocoder = new google.maps.Geocoder();
    // Hacemos la petición indicando la dirección e invocamos la función
    // geocodeResult enviando todo el resultado obtenido
    geocoder.geocode({ 'address': address}, geocodeResult);
});

function geocodeResult(results, status) {
    // Verificamos el estatus
    if (status == 'OK') {
        // Si hay resultados encontrados, centramos y repintamos el mapa
        // esto para eliminar cualquier pin antes puesto
        var mapOptions = {
            center: results[0].geometry.location,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map($(&quot;#map_canvas&quot;).get(0), mapOptions);
        // fitBounds acercará el mapa con el zoom adecuado de acuerdo a lo buscado
        map.fitBounds(results[0].geometry.viewport);
        // Dibujamos un marcador con la ubicación del primer resultado obtenido
        var markerOptions = { position: results[0].geometry.location }
        var marker = new google.maps.Marker(markerOptions);
        marker.setMap(map);
    } else {
        // En caso de no haber resultados o que haya ocurrido un error
        // lanzamos un mensaje con el error
        alert(&quot;Geocoding no tuvo éxito debido a: &quot; + status);
    }
}
</pre>
<p>Y en el Body solamente esto:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div&gt;&lt;input type=&quot;text&quot; maxlength=&quot;100&quot; id=&quot;address&quot; placeholder=&quot;Dirección&quot; /&gt; &lt;input type=&quot;button&quot; id=&quot;search&quot; value=&quot;Buscar&quot; /&gt;&lt;/div&gt;&lt;br/&gt;
&lt;div id='map_canvas' style=&quot;width:600px; height:400px;&quot;&gt;&lt;/div&gt;
</pre>
<p>Espero les sirva y cualquier cosa, ya saben cómo contactarme&#8230;</p>
<p style="text-align: right;"><em>Enjoy this Life!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2012/10/reverse-geocode/" class="wp_rp_title">Geocode Inverso: Buscar direcciones a partir de Coordenadas con GMaps API v3</a></li><li ><a href="http://jafrancov.com/2011/12/trazar-rutas-gmaps-api-v3/" class="wp_rp_title">Buscar y trazar rutas con GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/09/info-window-gmaps-api-v3/" class="wp_rp_title">Info Window en GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/07/geolocalizacion-mediante-la-api-de-firefox/" class="wp_rp_title">Geolocalización mediante la API de Firefox</a></li><li ><a href="http://jafrancov.com/2010/09/draggable-marker-getting-lat-lng-gmaps-api-v3/" class="wp_rp_title">Marcador arrastrable y cómo obtener su Lat/Lng GMaps API v3</a></li><li ><a href="http://jafrancov.com/2010/09/single-infowindow/" class="wp_rp_title">Mostrar sólo un InfoWindow y cerrarlo automáticamente GMaps API v3</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/v6rCCZqixZs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/06/geocode-gmaps-api-v3/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/06/geocode-gmaps-api-v3/</feedburner:origLink></item>
		<item>
		<title>Activar actualizaciones de WordPress vía SSH/SFTP</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/u_a6jD3F5Ng/</link>
		<comments>http://jafrancov.com/2011/06/actualizaciones-wordpress-ssh-sftp/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 19:48:47 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2086</guid>
		<description><![CDATA[Como todos bien sabemos, una configuración tradicional de un servidor web al que le ponemos un sitio de WordPress solamente nos mostrará opciones para actualizarlo (el sistema, plugins y demás) por medio de FTP y FTPS (SSL), sin embargo, FTP aunque es el más usado, es un tanto inseguro y FTPS sencillamente no es muy [...]]]></description>
				<content:encoded><![CDATA[<p>Como todos bien sabemos, una configuración tradicional de un servidor web al que le ponemos un sitio de WordPress solamente nos mostrará opciones para actualizarlo (el sistema, plugins y demás) por medio de FTP y FTPS (SSL), sin embargo, FTP aunque es el más usado, es un tanto inseguro y FTPS sencillamente no es muy conocido.</p>
<p>Por un rato creí que iba a sufrir el largo camino de las actualizaciones manuales y hacer circo maroma y teatro para lograrlo, hasta que encontré la solución, <strong>activar SSH2 para las actualizaciones de WordPress</strong>&#8230; parece como muy difícil pero la verdad es que es <em>sumamente sencillo</em> realizarlo.</p>
<p>Los servidores en los que hice esto son <em>Ubuntu/Debian</em>, pero puedes realizar lo equivalente según tu caso, entra a la consola de tu servidor y ejecutamos esto:</p>
<ul>
<li><em><strong>apt-get install libssh2-php</strong></em></li>
<li><em><strong>/etc/init.d/apache2 restart</strong></em></li>
</ul>
<p>En resumen es <em>instalar la librería de PHP libssh2-php y reiniciar nuestro servidor web</em>, si, así de sencillo es, una vez que entres a WordPress, te diriges a la sección de actualizaciones y seleccionamos que actualice de forma automática, veremos una opción que dice SSH2 la seleccionamos, ponemos nuestros datos de acceso y ¡listo! Espero les sirva tanto como a este servidor.</p>
<p style="text-align: right;"><em>Enjoy this Life!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2010/06/convierte-aplicaciones-web-en-aplicaciones-de-escritorio/" class="wp_rp_title">Convierte aplicaciones Web en aplicaciones &quot;de escritorio&quot;</a></li><li ><a href="http://jafrancov.com/2010/06/limpia-y-optimiza-tu-wordpress-con-wp-optimize/" class="wp_rp_title">Limpia y optimiza tu WordPress con WP-Optimize</a></li><li ><a href="http://jafrancov.com/2010/06/protege-la-entrada-al-wp-admin-de-wordpress/" class="wp_rp_title">Protege la entrada al wp-admin de WordPress</a></li><li ><a href="http://jafrancov.com/2010/06/codigos-para-anadir-marcadores-sociales-a-tu-blog-o-sitio-web/" class="wp_rp_title">Códigos para añadir marcadores sociales a tu Blog o Sitio</a></li><li ><a href="http://jafrancov.com/2010/06/activar-mod_rewrite-en-apache2-ubuntu/" class="wp_rp_title">Activar mod_rewrite en Apache2 Ubuntu</a></li><li ><a href="http://jafrancov.com/2009/03/blogumus-nube-de-etiquetas-en-movimiento/" class="wp_rp_title">Blogumus: Nube de etiquetas en movimiento [SOLUCIONADO]</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/u_a6jD3F5Ng" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/06/actualizaciones-wordpress-ssh-sftp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/06/actualizaciones-wordpress-ssh-sftp/</feedburner:origLink></item>
		<item>
		<title>Tip para Chrome OSX: Tab overview con gestos del trackpad</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/4q0gRp1txYI/</link>
		<comments>http://jafrancov.com/2011/04/tab-overview-chrome-osx/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 20:52:21 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Trucos]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2079</guid>
		<description><![CDATA[Esta es una función que a mi se me activó por default, no sabía cómo pasar el tip por la misma razón, pero ahora ya supe y ahí les va, un poco de limpieza y visión entre tantas pestañas seguro aumenta la productividad, lo que tienen que hacer es lo siguiente: En Chrome para Mac [...]]]></description>
				<content:encoded><![CDATA[<p>Esta es una función que a mi se me activó por default, no sabía cómo pasar el tip por la misma razón, pero ahora ya supe y ahí les va, un poco de limpieza y visión entre tantas pestañas seguro aumenta la productividad, lo que tienen que hacer es lo siguiente:</p>
<ol>
<li>En Chrome para Mac OSX, en la barra de direcciones escribe <em><strong>about:flags</strong></em></li>
<li>Activa o habilita una función que se llama <em><strong>Descripción general de pestaña </strong></em>o<em> <strong>Tab Overview</strong></em></li>
<li>Al activarlo, al final de esa página aparecerá un botón que dice <em><strong>Reiniciar Ahora</strong></em>, les cerrará y abrirá Chrome tal cual lo tenían, pero ahora con la función habilitada.</li>
<li>En el trackpad <em>deslicen 3 dedos verticalmente hacia abajo</em> y ¡¡voilá!! tendrás algo como esto:</li>
</ol>
<p style="text-align: center;"><img class="aligncenter" title="Tab Overview - Chrome for OSX" src="http://jafrancov.com/wp-content/uploads/2011/04/tab-overview-chrome.jpg" alt="Tab Overview - Chrome for OSX" width="503" height="304" /></p>
<p>Lamentablemente no hay esta función para usuarios de Windows y Linux, por la misma razón de que no existen gestos multitáctiles en los trackpads de la mayoría de las PCs, en algunas si, pero no funciona del todo, puede darse el caso de que se pueda con combinación de teclas pero por el momento no hay nada&#8230; sorry.</p>
<p style="text-align: right;"><em>Enjoy this Life!!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2011/02/recuperar-claves-en-mac-osx/" class="wp_rp_title">Recuperar o ver las claves de las redes inalámbricas en tu Mac (o cualquier App)</a></li><li ><a href="http://jafrancov.com/2009/12/hacer-una-capturar-de-una-pagina-web-completa/" class="wp_rp_title">Hacer una capturar de una página web completa</a></li><li ><a href="http://jafrancov.com/2010/07/divvy-organizador-de-ventanas-en-mac-osx/" class="wp_rp_title">Mantén organizadas tus ventanas en Mac OS X</a></li><li ><a href="http://jafrancov.com/2010/06/los-mejores-programas-para-bajar-videos-de-youtube-windows-mac/" class="wp_rp_title">Los mejores programas para bajar videos de YouTube (Windows/Mac)</a></li><li ><a href="http://jafrancov.com/2010/06/crear-tareas-programadas-en-mac-os-x/" class="wp_rp_title">Crear Tareas Programadas en Mac OS X</a></li><li ><a href="http://jafrancov.com/2010/06/como-obtener-badges-en-foursquare/" class="wp_rp_title">¿Cómo obtener Badges en Foursquare?</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/4q0gRp1txYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/04/tab-overview-chrome-osx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/04/tab-overview-chrome-osx/</feedburner:origLink></item>
		<item>
		<title>¿Qué es mejor… Twitter o Facebook?</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/vQEPHZ6YAb8/</link>
		<comments>http://jafrancov.com/2011/02/twitter-o-facebook/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 05:53:12 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Opiniones]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Redes Sociales]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2060</guid>
		<description><![CDATA[Esa parece ser la pregunta del millón, por todos lados escucho y veo la misma pregunta cuando se ponen a hablar de internet y la web, entonces la respuesta realmente adecuada es la siguiente: Los dos, dependiendo el uso que pretendas darle al servicio. Veamos y aclaremos primeramente cuáles son las reglas básicas de lo [...]]]></description>
				<content:encoded><![CDATA[<p>Esa parece ser la pregunta del millón, por todos lados escucho y veo la misma pregunta cuando se ponen a hablar de internet y la web, entonces la respuesta realmente adecuada es la siguiente:</p>
<blockquote><p>Los dos, dependiendo el uso que pretendas darle al servicio.</p></blockquote>
<p>Veamos y aclaremos primeramente cuáles son las reglas básicas de lo que es cada cosa.</p>
<p>La primera y la más importante de todas, qué es una Red Social, según la wikipedia nos dice:</p>
<blockquote><p>Las <strong>redes sociales</strong> son <em>estructuras sociales</em> compuestas de grupos de personas, las cuales están <strong>conectadas por uno o varios tipos de relaciones</strong>, tales como amistad, parentesco, intereses comunes o que comparten conocimientos.</p></blockquote>
<p>Ahora, todos sabemos o al menos tenemos idea de lo que es un</p>
<blockquote><p><strong>Blog</strong> es un sitio web periódicamente actualizado que recopila cronológicamente textos o artículos de uno o varios autores, apareciendo primero el más reciente.</p></blockquote>
<p>Entonces si un Blog, el autor del artículo explayarse tanto como quiera, un sistema de <strong>microblogging</strong>, es como un blog limitado a una extensión predefinida de contenido.</p>
<p>Ya con esas dos definiciones podemos continuar, entendamos algo, Twitter y Facebook cumplen propósitos MUY diferentes.</p>
<p style="text-align: center;"><img class="aligncenter" title="Twitter vs Facebook" src="http://jafrancov.com/wp-content/uploads/2011/02/facebook-vs-twitter-box.jpg" alt="" width="560" height="389" /></p>
<p><img style="float: left;" title="Facebook" src="http://sites.google.com/site/jafrancov/stuff/facebook.png" alt="" width="60" height="60" /><strong><a href="http://jafrancov.com/tag/facebook">Facebook</a></strong> SI es una <em>Red Social</em>, la razón es muy sencilla, nos conecta con personas con las que tenemos algún tipo de relación o con la que <em>queremos tener un tipo de relación</em>. Además de que para que una relación sea considerada como relación, debe ser <strong>recíproca</strong>, acción que realizamos en el momento en que aceptamos esa &#8220;amistad&#8221;. Facebook nos puede servir para conocer más a detalle lo que hacen nuestros amigos, dónde estudiaron, a qué fiesta fueron, qué amistades tenemos en común, qué les gusta o no les gusta, jugar colaborativamente y puff&#8230; muchísimas cosas más que sin darnos cuenta, son detalles que vamos conociendo día a día que revisamos aquellos muros, perfiles o fotografías de aquellas personas que tenemos en nuestra lista de &#8220;amigos&#8221;.</p>
<p>Facebook va más allá de simplemente tener a todos tus conocidos y amigos en un círculo socio-virtual, es un mounstruo de aplicaciones, como una agenda, planeación de eventos, juegos&#8230;¿pero y todo esto de qué nos sirve? quizá a muchos de nosotros como simples usuarios solamente para tener un punto más de interconexión con nuestras amistades, pero para las empresas, toda aquella información que proporcionamos o que hacemos en la Red Social pueden convertirse en datos sumamente jugosos y preciados para analizar.</p>
<p>En la categoría de Redes Sociales podemos encontrar <strong>Facebook</strong>, <strong>LinkedIn</strong>, <strong>Bebo</strong>, <strong>MySpace</strong>, <strong>Hi5</strong>, <strong>Orkut</strong>, pero bueno, en fin, <em>Facebook en resumidas cuentas es una <strong>conexión recíproca</strong></em>, es decir para estar conectados hay que tener una aceptación de ambas partes para ser &#8220;amigos&#8221;.</p>
<p><img style="float: left;" title="Twitter" src="http://sites.google.com/site/jafrancov/stuff/twitter.png" alt="" width="60" height="60" /><strong><a href="http://jafrancov.com/tag/twitter">Twitter</a></strong> para empezar <em>NO es una Red Social</em>, mucha gente cree que si, pero no lo es, es un sistema de microblogging. Para explicarlo mejor, imaginemos que todos somos los editores de un periódico personal, yo publico y distribuyo aquello que yo he escrito, asimismo cada uno de ustedes, la gente a la que le interesan mis publicaciones, comienza a seguir más de cerca mis artículos (me da Follow), sin embargo, yo no estoy obligado a retornarle el favor a menos que me guste lo que publica (<a title="La teoría del #Followback" href="http://jafrancov.com/2010/09/la-teoria-del-followback/">Followback</a>).  Pues así es como funciona Twitter, <strong>tú decides a quién seguir</strong> y cuando alguien te sigue, es <em>op-cio-nal</em> regresar el follow, esto rompe con el esquema de una Red Social ya que <strong>no es obligatoriamente recíproco</strong>, solo pensemos, ¿te seguirías a ti mismo?</p>
<p>Muchos pensaríamos al inicio, que Twitter es algo como Facebook pero sin esteroides, más ahora con los cambios en la versión web, que tiene una semejanza mayor por las previsualizaciones de links, ya sean imágenes, videos, o cualquier otra publicación, pero sigue sin ser igual o similar, solamente es una vista diferente, <em>la esencia son los 140 caracteres</em>. Entre los microblogging podremos encontrar a <strong>Twitter</strong>, <strong>Jaiku</strong>, <strong>Identi.ca</strong>, <strong>Yammer</strong>.</p>
<p>Pero ¿como para qué se usa Twitter? tan grande puede ser su impacto, que es un punto donde puede explotar una comunicación viral impresionante. Es abierto, es como leer el blog de alguien, como un sitio web personal. Servicios como los botones para compartir, publicar imágenes o videos, entre muchas otras aplicaciones que usan como fuente de información los tweets que todos nosotros publicamos, han hecho de twitter un gran medio y/o vía de comunicación instantánea.</p>
<p>Quizá por ahí se me fue uno que otro punto pero traté de no extenderme demasiado, ahora si, podremos volver a la pregunta inicial <em>¿Twitter o Facebook?</em> &#8230; Para mi la respuesta más acertada es <strong>AMBAS</strong>.</p>
<p>Imágenes: <a href="http://soxialmedia.com/redes-sociales-informacion-diferencia-facebook-twitter/" target="_blank">SoxialMedia</a>, <a href="http://blog.espol.edu.ec/paosaltos/2010/11/18/twitter-vs-facebook/" target="_blank">Paola&#8217;s Blog</a></p>
<p style="text-align: right;"><em>Enjoy this Life!!</em></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2009/11/social-media-bla-bla/" class="wp_rp_title">Social Media ≠ Bla Bla</a></li><li ><a href="http://jafrancov.com/2009/10/actualiza-tu-estatus-de-facebook-con-twitter/" class="wp_rp_title">Actualiza tu estatus de Facebook con Twitter</a></li><li ><a href="http://jafrancov.com/2010/06/que-es-y-como-usar-foursquare/" class="wp_rp_title">¿Qué es y cómo usar Foursquare? Conceptos y pasos básicos</a></li><li ><a href="http://jafrancov.com/2010/09/la-teoria-del-followback/" class="wp_rp_title">La teoría del #Followback</a></li><li ><a href="http://jafrancov.com/2009/12/gracias-a-todos-mis-followers-mas-de-500-woohoo/" class="wp_rp_title">Gracias a todos mis followers (más de 500 ¡¡woohoo!!)</a></li><li ><a href="http://jafrancov.com/2009/10/video-esteman-no-te-metas-a-mi-facebook/" class="wp_rp_title">[Video] Esteman &#8211; No te metas a mi facebook</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/vQEPHZ6YAb8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/02/twitter-o-facebook/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/02/twitter-o-facebook/</feedburner:origLink></item>
		<item>
		<title>Recuperar o ver las claves de las redes inalámbricas en tu Mac (o cualquier App)</title>
		<link>http://feedproxy.google.com/~r/jafrancov/~3/QHVRdbTejiI/</link>
		<comments>http://jafrancov.com/2011/02/recuperar-claves-en-mac-osx/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 04:59:26 +0000</pubDate>
		<dc:creator>Alex Franco</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Trucos]]></category>
		<category><![CDATA[WEP]]></category>

		<guid isPermaLink="false">http://jafrancov.com/?p=2049</guid>
		<description><![CDATA[Este es un sencillo truco que me pasó @jcan87 que me parece bastante útil y que creo que pocas personas saben (o esa fue la impresión que tengo después de preguntar en twitter y foros), mi cuestión era saber cómo recuperar la clave de una red inalámbrica a la cual con anterioridad me había conectado, [...]]]></description>
				<content:encoded><![CDATA[<p>Este es un sencillo truco que me pasó @<a href="http://twitter.com/jcan87" target="_blank">jcan87</a> que me parece bastante útil y que creo que pocas personas saben (o esa fue la impresión que tengo después de preguntar en twitter y foros), mi cuestión era saber cómo recuperar la clave de una red inalámbrica a la cual con anterioridad me había conectado, y pues deambulando en la web solamente un reply de <a href="http://jafrancov.com/tag/twitter">Twitter</a> me dio la respuesta.</p>
<p>En OSX a veces las cosas que parecen complicadas pueden llegar a ser las más sencillas, para recuperar las claves haremos lo siguiente:</p>
<ol>
<li>Abrimos la aplicación de <strong>Keychain Access</strong> (Acceso a llaveros), la podemos encontrar en <strong><em>/Aplicaciones/Utilidades/Acceso a Llaveros.app</em></strong></li>
<li>Una ves abierta, en la barra izquierda identificamos donde dice &#8220;<em>Contraseñas</em>&#8221; esto nos mostrará todas las aplicaciones, redes y conexiones que hayamos hecho con nuestra Mac. Ahora identificamos la red o aplicación de la cuál queremos descubrir su clave y le damos un doble click.</li>
<li>Al hacer doble click nos muestra una ventana con la información concentrada del elemento, y chequeamos la opción de &#8220;<em>Mostrar contraseña</em>&#8220;, nos pedirá nuestra contraseña de usuario, se la otorgamos y tatáaaaa&#8230; tendremos revelada la contraseña del elemento, sea red, aplicación, conexión o hasta sitio web al que le hayamos dado permiso de guardar la contraseña.</li>
</ol>
<p style="text-align: center;"><img class="aligncenter" title="Obtener claves guardadas con Keychain" src="http://jafrancov.com/wp-content/uploads/2011/02/keychain-wep.jpg" alt="Obtener claves guardadas con Keychain" width="554" height="334" /></p>
<p style="text-align: center;">
<p>Es todo, espero les sirva para cuando requieran aquella contraseña casi imposible de recordar =P</p>
<p style="text-align: right;">Enjoy this Life!!</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">Quizá también te interese...</h3><ul class="related_post wp_rp" style="visibility: visible"><li ><a href="http://jafrancov.com/2011/04/tab-overview-chrome-osx/" class="wp_rp_title">Tip para Chrome OSX: Tab overview con gestos del trackpad</a></li><li ><a href="http://jafrancov.com/2010/07/divvy-organizador-de-ventanas-en-mac-osx/" class="wp_rp_title">Mantén organizadas tus ventanas en Mac OS X</a></li><li ><a href="http://jafrancov.com/2009/12/hacer-una-capturar-de-una-pagina-web-completa/" class="wp_rp_title">Hacer una capturar de una página web completa</a></li><li ><a href="http://jafrancov.com/2010/06/crear-tareas-programadas-en-mac-os-x/" class="wp_rp_title">Crear Tareas Programadas en Mac OS X</a></li><li ><a href="http://jafrancov.com/2010/06/los-mejores-programas-para-bajar-videos-de-youtube-windows-mac/" class="wp_rp_title">Los mejores programas para bajar videos de YouTube (Windows/Mac)</a></li><li ><a href="http://jafrancov.com/2010/03/romper-seguridad-de-redes-inalambricas-wifi-con-tu-ipod-iphone/" class="wp_rp_title">Romper seguridad de redes inalámbricas (WiFi) con tu iPod Touch o iPhone</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/jafrancov/~4/QHVRdbTejiI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jafrancov.com/2011/02/recuperar-claves-en-mac-osx/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://jafrancov.com/2011/02/recuperar-claves-en-mac-osx/</feedburner:origLink></item>
	</channel>
</rss>
