<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>HiperGalaxia &#187; HTML</title>
	<atom:link href="http://www.hipergalaxia.org/blog/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hipergalaxia.org/blog</link>
	<description>El conocimiento, la frontera final.</description>
	<lastBuildDate>Thu, 09 Feb 2012 07:23:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Georreferenciar inversamente con el API v3 de Google Maps utilizando Javascript</title>
		<link>http://blog.jorgeivanmeza.com/2010/10/georreferenciar-inversamente-con-el-api-v3-de-google-maps-utilizando-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=georreferenciar-inversamente-con-el-api-v3-de-google-maps-utilizando-javascript</link>
		<comments>http://blog.jorgeivanmeza.com/2010/10/georreferenciar-inversamente-con-el-api-v3-de-google-maps-utilizando-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=georreferenciar-inversamente-con-el-api-v3-de-google-maps-utilizando-javascript#comments</comments>
		<pubDate>Wed, 27 Oct 2010 01:54:58 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[georreferenciación]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software geográfico]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=10861</guid>
		<description><![CDATA[Introducción. La georreferenciación inversa es el proceso contrario al descrito anteriormente, corresponde al obtener el nombre de una ubicación (topónimo) a partir de su ubicación geográfica, en términos de latitud y longitud. La aplicación de demostración. En el ejemplo equivale a conocer la ubicación del sitio: latitud = 5.073375 y longitud = -75.495155, y con esta información [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p>La georreferenciación inversa es el proceso contrario al descrito anteriormente, corresponde al obtener el nombre de una ubicación (topónimo) a partir de su ubicación geográfica, en términos de latitud y longitud.</p><h2>La aplicación de demostración.</h2><div id="attachment_10862" class="wp-caption aligncenter" style="width: 983px"><a href="http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/reverse.html"><img class="size-full wp-image-10862" title="Selection_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/Selection_002.png" alt="Aplicación de demostración para la georreferenciación inversa con el API 3 de Google Maps" width="973" height="641" /></a><p class="wp-caption-text">Aplicación de demostración para la georreferenciación inversa con el API 3 de Google Maps</p></div><p>En el ejemplo equivale a conocer la ubicación del sitio: <span style="font-family: 'courier new', courier;">latitud = 5.073375</span> y <span style="font-family: 'courier new', courier;">longitud = -75.495155</span>, y con esta información determinar que los siguientes sitios corresponden con esa posición.</p><ul><li>Carrera 12, Manizales, Caldas, Colombia.</li><li>Manizales, Caldas, Colombia.</li><li>Caldas, Colombia.</li><li>Colombia.</li></ul><h2>La implementación.</h2><p>Su implementación es una versión ligeramente mas simple que la <a href="http://blog.jorgeivanmeza.com/2010/10/georreferenciar-con-el-api-v3-de-google-maps-utilizando-javascript/" >georreferenciación directa</a>.</p><p>A continuación se detallan a nivel general las variaciones de esta modalidad de georreferenciación con respecto a la expuesta en un artículo anterior.</p><h3>Del lado de Javascript.</h3><p>Se asocia el evento de clic sobre el mapa con la función que realizará la georreferenciación inversa (<span style="font-family: 'courier new', courier;">processReverseGeocoding</span>).</p><pre class="javascript">google.maps.event.addListener(map, 'click', function(event) {
    processReverseGeocoding(event.latLng, showMarkerInfo);
});</pre><p>En esta función se realiza el proceso de georreferenciación inversa el cual, al igual que su contraparte directa, es asíncrono y por este motivo se utiliza la misma estrategia del <em>callback</em>.</p><pre class="javascript">var request = {
    latLng: location
}
geocoder.geocode(request, function(results, status) {
    // ...
});</pre><p>La función <span style="font-family: 'courier new', courier;">showMarkerInfo</span> es ejecutada cuando se finaliza la georreferenciación inversa y esta ha obtenido resultados válidos.  Su misión es la mostrar la información resultante en el mapa.</p><pre class="javascript">    function showMarkerInfo(locations)
    {
        // Centra el mapa en la ubicación especificada
        map.setCenter(locations[0].geometry.location);
        // Crea el mensaje para mostrar la información georreferenciada
        var infoWindow = new google.maps.InfoWindow();
        infoWindow.setPosition(locations[0].geometry.location);
        // Prepara el mensaje con la información obtenida del proceso
        // de georreferenciación inversa
        var content = 'Latitud:  ' + locations[0].geometry.location.lat() + '&lt;br /&gt;' +
                      'Longitud:  ' + locations[0].geometry.location.lng() + '&lt;br /&gt;' +
                      '&lt;br /&gt;Topónimos:&lt;br /&gt;&lt;ul&gt;';
        for (var i=0; i&lt;locations.length; i++)
        {
            if (locations[i].formatted_address)
                content += '&lt;li&gt;' + locations[i].formatted_address + '&lt;/li&gt;';
            else
                content += '&lt;li&gt;No se encontró información.&lt;/li&gt;';
        }
        content += "&lt;/ul&gt;";
        infoWindow.setContent(content);
        // Muestra el mensaje sobre el mapa
        infoWindow.open(map);
    }</pre><h2>Enlaces.</h2><ul><li>Aplicación de demostración del API v3 de georreferenciación inversa de Google Maps 0.1.<br /> <a href="http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/reverse.html" >http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/reverse.html</a></li><li>The Google Geocoding API.<br /> <a href="http://code.google.com/apis/maps/documentation/geocoding/index.html" >http://code.google.com/apis/maps/documentation/geocoding/index.html</a></li><li>Geocoding service.<br /> <a href="http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding" >http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding</a></li></ul><div id="gdsr_thumb_10843_a_up"><a id="gdsrX10843XupXaX31X32XY" rel="nofollow"></a></div><div id="gdsr_thumb_10843_a_dw"><a id="gdsrX10843XdwXaX31X32XY" rel="nofollow"></a></div> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/10/georreferenciar-inversamente-con-el-api-v3-de-google-maps-utilizando-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Georreferenciar con el API v3 de Google Maps utilizando Javascript</title>
		<link>http://blog.jorgeivanmeza.com/2010/10/georreferenciar-con-el-api-v3-de-google-maps-utilizando-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=georreferenciar-con-el-api-v3-de-google-maps-utilizando-javascript</link>
		<comments>http://blog.jorgeivanmeza.com/2010/10/georreferenciar-con-el-api-v3-de-google-maps-utilizando-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=georreferenciar-con-el-api-v3-de-google-maps-utilizando-javascript#comments</comments>
		<pubDate>Wed, 27 Oct 2010 00:02:37 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[georreferenciación]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software geográfico]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=10843</guid>
		<description><![CDATA[Introducción. La georreferenciación es el proceso de determinar la ubicación (latitud, longitud) de una ubicación en la tierra según su nombre (topónimo). Si estoy en Manizales, Caldas, Colombia estaré realmente en latitud 5.07, longitud -75.52056. Existen varias formas de realizar este proceso dependiendo de los lenguajes de programación, interfaces y fuentes de información utilizados.  Anteriormente expliqué como [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p>La georreferenciación es el proceso de determinar la ubicación (latitud, longitud) de una ubicación en la tierra según su nombre (topónimo).</p><p style="padding-left: 30px;">Si estoy en <strong>Manizales, Caldas, Colombia</strong> estaré realmente en <a href="http://maps.google.com/maps/api/staticmap?&amp;amp;zoom=7&amp;amp;size=300x450&amp;amp;sensor=false&amp;amp;markers=color:blue%7Clabel:X%7C5.07,-75.52056" ><strong>latitud 5.07, longitud -75.52056</strong></a>.</p><p>Existen varias formas de realizar este proceso dependiendo de los lenguajes de programación, interfaces y fuentes de información utilizados.  Anteriormente expliqué como hacerlo <a href="http://blog.jorgeivanmeza.com/2010/10/georreferenciando-de-manera-facil-y-simple-con-geonames-utilizando-cmono/" >utilizando C#/Mono y el servicio web de Geonames</a>, en este caso voy a utilizar el API Javascript versión 3 de Google Maps.</p><h2>La aplicación de demostración.</h2><div id="attachment_10844" class="wp-caption aligncenter" style="width: 775px"><a href="http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/demo.html"><img class="size-full wp-image-10844 " title="Selection_001" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/10/Selection_0012.png" alt="Aplicación de demostración para la georreferenciación con el API 3 de Google Maps" width="765" height="579" /></a><p class="wp-caption-text">Aplicación de demostración para la georreferenciación con el API 3 de Google Maps</p></div><p>Como se mencionó anteriormente, la funcionalidad es precisa: convertir el nombre de una ubicación en su correspondiente localización en términos de latitud y longitud, y mostrarla en el mapa.</p><h2>La implementación.</h2><h3>Del lado de Javascript.</h3><p>Incluír la referencia al API de Google Maps.</p><pre class="javascript">&lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&amp;language=es"&gt;&lt;/script&gt;</pre><p>Instanciar el geocodificador.</p><pre class="javascript">var geocoder = new google.maps.Geocoder();</pre><p>Crear el mapa.</p><pre class="javascript">window.onload = function() {
    var options = {
        zoom: 5,
        center: new google.maps.LatLng(4, -72),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById('map'), options);
    // ...</pre><p>Establecer la funcionalidad del botón <strong>Buscar</strong>.</p><pre class="javascript">    document.getElementById('search').onclick = function() {
            // Obtiene la ubicación (string) a georreferenciar
            var location = document.getElementById('location').value;
            // Inicia el proceso de georreferenciación (asíncrono)
            processGeocoding(location, addMarkers);
            // Detiene el procesamiento del evento
            return false;
        }
    } // Fin del método window.onload</pre><p>El proceso de georreferenciación es asíncrono así que es necesario especificar una función (<em>callback</em>) para que se ejecute si la georreferenciación termina exitosamente.</p><p>El núcleo de la georreferenciación se realiza en la invocación al método <span style="font-family: 'courier new', courier;">geocoder.geocode(opciones, implementacion)</span>.  Es necesario determinar el estado final (<span style="font-family: 'courier new', courier;">status</span>) después de la ejecución asíncrona para determinar que acción puede realizarse con los datos resultantes.</p><pre class="javascript">    function processGeocoding(location, callback)
    {
        // Propiedades de la georreferenciación
        var request = {
            address: location
        }
        // Invocación a la georreferenciación (proceso asíncrono)
        geocoder.geocode(request, function(results, status) {
            /*
             * OK
             * ZERO_RESULTS
             * OVER_QUERY_LIMIT
             * REQUEST_DENIED
             * INVALID_REQUEST
             */
            // Notifica al usuario el resultado obtenido
            document.getElementById('message').innerHTML = "Respuesta obtenida: " + status;
            // En caso de terminarse exitosamente el proyecto ...
            if(status == google.maps.GeocoderStatus.OK)
            {
                // Invoca la función de callback
                callback (results);
                // Retorna los resultados obtenidos
                return results;
            }
            // En caso de error retorna el estado
            return status;
        });
    }</pre><p>La función enviada como <em>callback</em> (<span style="font-family: 'courier new', courier;">addMarkers</span>) es la responsable de tomar las ubicaciones retornadas por la georreferenciación, crearles marcadores, ventanas de información, asociarlas al evento de clic y mostrarlas en el mapa.</p><pre class="javascript">   function addMarkers(geocodes)
    {
        for(i=0; i&lt;geocodes.length; i++)
        {
            // Centra el mapa en la nueva ubicación
            map.setCenter(geocodes[i].geometry.location);
            // Valores iniciales del marcador
            var marker = new google.maps.Marker({
                map: map,
                title: geocodes[i].formatted_address
            });
            // Establece la ubicación del marcador
            marker.setPosition(geocodes[i].geometry.location);
            // Establece el contenido de la ventana de información
            var infoWindow = new google.maps.InfoWindow();
            content = "Ubicación: " + geocodes[i].formatted_address + "&lt;br /&gt;" +
                      "Tipo: " + geocodes[i].types + "&lt;br /&gt;" +
                      "Latitud: " + geocodes[i].geometry.location.lat() + "&lt;br /&gt;" +
                      "Longitud: " + geocodes[i].geometry.location.lng();
            infoWindow.setContent(content);
            // Asocia el evento de clic sobre el marcador con el despliegue
            // de la ventana de información
            google.maps.event.addListener(marker, 'click', function(event) {
                infoWindow.open(map, marker);
            });
        }
    }</pre><h3>Del lado de HTML.</h3><p>Se implementa una estructura muy simple para desplegar la información.  Una primera parte permite desplegar el mensaje de información acerca del estado del proceso y le permite al usuario ingresar el nombre de la ubicación a georreferenciar.</p><pre class="html">    &lt;!-- Mensaje de estado --&gt;
    &lt;div id="message"&gt;&lt;/div&gt;
    &lt;!-- Ubicación a georreferenciarse --&gt;
    &lt;label for="location"&gt;Ubicación:&lt;/label&gt;
    &lt;input type="text" id="location" name="location" value="" size="40" /&gt;
    &lt;!-- Botón para inciar la georreferenciación --&gt;
    &lt;input type="button" id="search" name="search" value="Buscar" /&gt;</pre><p>Una segunda parte establece la ubicación para desplegar el mapa.</p><pre class="html">&lt;!-- Lugar de despliegue del mapa --&gt;
&lt;div id="map"&gt;&lt;/div&gt;</pre><h2>Enlaces.</h2><ul><li>Aplicación de demostración del API v3 de georreferenciación de Google Maps 0.1.<br /> <a href="http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/demo.html">http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/demo.html</a></li><li>The Google Geocoding API.<br /> <a href="http://code.google.com/apis/maps/documentation/geocoding/index.html" >http://code.google.com/apis/maps/documentation/geocoding/index.html</a></li><li> Geocoding service.<br /> <a href="http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding" >http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/10/georreferenciar-con-el-api-v3-de-google-maps-utilizando-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plantillas para documentos XHTML y otros recursos web</title>
		<link>http://blog.jorgeivanmeza.com/2009/06/plantillas-para-documentos-xhtml-y-otros-recursos-web/</link>
		<comments>http://blog.jorgeivanmeza.com/2009/06/plantillas-para-documentos-xhtml-y-otros-recursos-web/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 05:43:20 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=1827</guid>
		<description><![CDATA[En el sitio de WebStandards se puede encontrar un listado con las plantillas base para los documentos XHTML 1.0/1.1 y HTML4.

XHTML 1.0 / 1.1

Transitional document.
Strict document.
Frameset.
Document 1.1.


HTML 4.01

Transitional document.
Strict document.
Frameset.



Además de estos documentos encontré otros recursos interesantes relacionados con el desarrollo web.

Formularios X/HTML accesibles.
http://www.webstandards.org/learn/tutorials/accessible-forms/
Character Entity References.
http://www.webstandards.org/learn/reference/charts/entities/
Colores válidos para HTML 4 y XHTML 1.0/1.1.
http://www.webstandards.org/learn/reference/charts/color_names/
DOCTYPEs y sus [...]]]></description>
			<content:encoded><![CDATA[<p>En el sitio de <a href="http://www.webstandards.org/learn/reference/templates/" >WebStandards</a> se puede encontrar un <a href="http://www.webstandards.org/learn/reference/templates/" >listado con las plantillas base</a> para los documentos XHTML 1.0/1.1 y HTML4.</p>
<ul>
<li>XHTML 1.0 / 1.1
<ul>
<li><a href="http://www.webstandards.org/learn/reference/templates/xhtml10t/" >Transitional document</a>.</li>
<li><a href="http://www.webstandards.org/learn/reference/templates/xhtml10s/" >Strict document</a>.</li>
<li><a href="http://www.webstandards.org/learn/reference/templates/xhtml10f/" >Frameset</a>.</li>
<li><a href="http://www.webstandards.org/learn/reference/templates/xhtml11/" >Document 1.1</a>.</li>
</ul>
</li>
<li>HTML 4.01
<ul>
<li><a href="http://www.webstandards.org/learn/reference/templates/html401t/" >Transitional document</a>.</li>
<li><a href="http://www.webstandards.org/learn/reference/templates/html401s/" >Strict document</a>.</li>
<li><a href="http://www.webstandards.org/learn/reference/templates/html401f/" >Frameset</a>.</li>
</ul>
</li>
</ul>
<p>Además de estos documentos encontré otros recursos interesantes relacionados con el desarrollo web.</p>
<ul>
<li>Formularios X/HTML accesibles.<br />
<a href="http://www.webstandards.org/learn/tutorials/accessible-forms/" >http://www.webstandards.org/learn/tutorials/accessible-forms/</a></li>
<li>Character Entity References.<br />
<a href="http://www.webstandards.org/learn/reference/charts/entities/" >http://www.webstandards.org/learn/reference/charts/entities/</a></li>
<li>Colores válidos para HTML 4 y XHTML 1.0/1.1.<br />
<a href="http://www.webstandards.org/learn/reference/charts/color_names/" >http://www.webstandards.org/learn/reference/charts/color_names/</a></li>
<li>DOCTYPEs y sus respectivos modos de diseño.<br />
<a href="http://www.webstandards.org/learn/reference/charts/doctype-switch/" >http://www.webstandards.org/learn/reference/charts/doctype-switch/</a></li>
<li>HTML versus XHTML.<br />
<a href="http://www.webstandards.org/learn/articles/askw3c/oct2003/" >http://www.webstandards.org/learn/articles/askw3c/oct2003/</a></li>
<li>Referencias de los lenguajes de marcas.<br />
<a href="http://www.webstandards.org/learn/external/html/" >http://www.webstandards.org/learn/external/html/</a></li>
<li>Organizaciones relacionadas con los estándares.<br />
<a href="http://www.webstandards.org/learn/external/orgs/" >http://www.webstandards.org/learn/external/orgs/</a></li>
</ul>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<p>http://www.webstandards.org/learn/tutorials/accessible-forms/</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2009/06/plantillas-para-documentos-xhtml-y-otros-recursos-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

