<?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>Jorge Iván Meza Martínez &#187; GIS</title>
	<atom:link href="http://blog.jorgeivanmeza.com/tag/gis/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jorgeivanmeza.com</link>
	<description>The Fire Within Me: &#34;knowledge will set you free&#34;</description>
	<lastBuildDate>Thu, 22 Jul 2010 06:31:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=6305</generator>
		<item>
		<title>Introducción a StaticMaps de Google</title>
		<link>http://blog.jorgeivanmeza.com/2008/10/introduccion-a-staticmaps-de-google/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=introduccion-a-staticmaps-de-google</link>
		<comments>http://blog.jorgeivanmeza.com/2008/10/introduccion-a-staticmaps-de-google/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 03:47:38 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Móvil]]></category>
		<category><![CDATA[Software geográfico]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GoogleMaps]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=854</guid>
		<description><![CDATA[Introducción StaticMaps es una herramienta de Google que nos permite integrar en nuestras aplicaciones a imagenes estáticas de su cartografía de una manera muy simple.  Como se puede inferir, para utilizarlos es necesario que la aplicación tenga acceso a Internet y su acceso se realiza a través de un requerimiento HTTP convencional con ciertos parámetros [...]]]></description>
			<content:encoded><![CDATA[<h5>Introducción</h5>
<p><strong>StaticMaps</strong> es una herramienta de <strong>Google</strong> que nos permite integrar en nuestras aplicaciones a imagenes estáticas de su cartografía de una manera muy simple.  Como se puede inferir, para utilizarlos es necesario que la aplicación tenga acceso a Internet y su acceso se realiza a través de un requerimiento HTTP convencional con ciertos parámetros que se verán a continuación y que permiten refinar el contenido de la imagen del mapa producido.</p>
<p>Esta herramienta la he utilizado varias veces en diferentes tipos de proyectos como <a href="http://www.jorgeivanmeza.com/blog/2008/07/07/mi-primer-moblet/" target="_blank">Mi Primer Moblet</a> (móviles), <a href="http://www.jorgeivanmeza.com/blog/2008/09/09/demostracion-de-georreferenciacion-al-estilo-web-20/" target="_blank">GeoReferenciación con Java</a> (escritorio) y la demostración de <a href="http://www.jorgeivanmeza.com/blog/2008/09/03/desarrollo-de-sistemas-multiagentes/" target="_blank">MandarinaSocial</a> (agentes de software).</p>
<p>Para su uso se requiere que el desarrollador registre de manera gratuita el dominio desde donde se va a utilizar el servicio.  El registro se materializa a través de una <em>llave de API</em> particular.  Esta llave se solicita a través del siguiente enlace.</p>
<p style="padding-left: 30px;"><a href="http://code.google.com/apis/maps/signup.html" target="_blank">http://code.google.com/apis/maps/signup.html</a></p>
<p>El servicio se restringe a un máximo de 1000 requerimientos únicos diarios, siendo este límite aplicado por solicitante (ubicación) y no por llave lo que disminuye el impacto de esta restricción, mas aún cuando las solicitudes repetidas de la misma imagen no son tomadas en cuenta para la estadística de la cuota.</p>
<p>Un primer acercamiento a la herramienta consiste en jugar un poco con ella utilizando el <a href="http://gmaps-samples.googlecode.com/svn/trunk/simplewizard/makestaticmap.html" target="_blank">Static Map Wizard</a>.</p>
<h5>Forma de acceso</h5>
<p>Como se mencionó anteriormente, la solicitud se inicia requiriendo un URL con ciertos parámetros a través de GET y el servicio retorna una imagen en un formato compatible con web que puede ser insertada en una página web con una etiqueta <span style="font-family: courier new,courier;">&lt;img&gt;</span> o puede ser manipulada por una aplicación desarrollada en cualquier lenguaje de programación como Java o C#.</p>
<p>Los siguientes aspectos del StaticMap pueden ser parametrizados a través de los parámetros del URL.</p>
<ul>
<li>La ubicación del mapa.</li>
<li>El tamaño de la imagen generada.</li>
<li>El nivel de acercamiento.</li>
<li>El tipo de mapa.</li>
<li>El lugar de los marcadores.</li>
<li>El lugar de las rutas trazadas.</li>
</ul>
<h5>Estructura general del URL</h5>
<p>Esta es la estructura básica del URL sobre la cual se estructura el requerimiento del servicio.</p>
<p style="padding-left: 30px;">http://maps.google.com/staticmap?<em>PARÁMETROS</em></p>
<p>La lista de <em>PARÁMETROS</em> consiste en varias secciones separadas entre sí por <span style="font-family: courier new,courier;">&amp;</span> y que se encuentran construídas con un formato especial y que serán descritas a continuación.</p>
<p>Estos son los parámetros del servicio suceptibles de personalizarse.</p>
<ol>
<li><span style="font-family: courier new,courier;">center.</span></li>
<li><span style="font-family: courier new,courier;">zoom.</span></li>
<li><span style="font-family: courier new,courier;">size.</span></li>
<li><span style="font-family: courier new,courier;">format.</span></li>
<li><span style="font-family: courier new,courier;">maptype.</span></li>
<li><span style="font-family: courier new,courier;">markers.</span></li>
<li><span style="font-family: courier new,courier;">path.</span></li>
<li><span style="font-family: courier new,courier;">frame.</span></li>
<li><span style="font-family: courier new,courier;">key.</span></li>
</ol>
<h5>Ubicaciones</h5>
<p>Las ubicaciones georreferenciadas son especificadas de la forma latitud y longitud como dos valores reales con 6 dígitos decimales de precisión y separados por una coma: 5.07,-75.521.</p>
<p>Los valores válidos de una latitud varían desde -90 hasta 90 grados mientras que los valores válidos para una longitud varía desde -180 hasta 180 grados.</p>
<h5>Parámetro Key</h5>
<p>Es obligatorio y se utiliza para especificar la llave del API que se obtuvo inicialmente.  <span style="text-decoration: underline;">Sin esto, es imposible acceder al servicio.</span></p>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=9&amp;size=500x300&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=5&amp;size=500&#215;300&amp;<strong>key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg</strong></a></p>
<h5>Parámetro Center</h5>
<p>Es obligatorio pero se convierte en opcional bajo ciertas circunstancias.  Determina la ubicación al rededor de la cual se centrará el mapa generado.</p>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=9&amp;size=500x300&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?<strong>center=5.07,-75.521</strong></a></p>
<p>El mapa anterior se encuentra centrado al rededor de las coordenadas de Manizales, Caldas.</p>
<h5>Parámetro Zoom</h5>
<p>Es obligatorio pero se convierte en opcional bajo ciertas circunstancias.  Determina el nivel de acercamiento al mapa.</p>
<p>Es definido por un número entero que varía entre 0 (menor) hasta 19 (máxima).  Debe tenerse en cuenta que no todos los niveles de acercamiento están disponibles para todos los tipos de mapas.</p>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;size=500x300&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?center=5.07,-75.521&amp;<strong>zoom=11</strong></a></p>
<p>El mapa anterior determina un nivel 11 de acercamiento sobre Manizales.</p>
<h5>Parámetro Size.</h5>
<p>Es obligatorio.  Especifica el tamaño de la imagen generada.</p>
<p>Su valor se especifica por un ancho y un alto separados por la letra &#8216;<span style="font-family: courier new,courier;">x</span>&#8216; y su unidad es en pixels: 500&#215;300.  El valor máximo de estas dimensiones es 640&#215;480.</p>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;size=500x300&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;<strong>size=500&#215;300</strong></a></p>
<p>La imagen generada a partir del requerimiento anterior tiene un ancho de 500px y un alto de 300px.</p>
<h5>Parámetro Format.</h5>
<p>Es opcional y determina el tipo de formato de la imagen generada.  Su selección depende de la relación tamaño/calidad deseada.  Si se omite, su valor por defecto es GIF.</p>
<p>Los posibles valores para este parámetro son los siguientes.</p>
<ul>
<li><span style="font-family: courier new,courier;">gif </span>(por defecto).</li>
<li><span style="font-family: courier new,courier;">jpg</span></li>
<li><span style="font-family: courier new,courier;">jpg-baseline</span> (no progresivo)</li>
<li><span style="font-family: courier new,courier;">png8 </span>(8 bits)</li>
<li><span style="font-family: courier new,courier;">png32 </span>(32 bits)</li>
</ul>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;size=500x300&amp;format=png8&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;size=500&#215;300&amp;<strong>format=png8</strong></a></p>
<p>El ejemplo anterior genera una imagen con formato PNG de 8 bits.</p>
<h5>Parámetro MapType.</h5>
<p>Es opcional y determina el tipo de cartografía a utilizarse para la generación de la imagen.  Si se omite, su valor por defecto es <span style="font-family: courier new,courier;">roadmap</span>.</p>
<p>Los posibles valores para este parámetro son los siguientes.</p>
<ul>
<li><span style="font-family: courier new,courier;">roadmap </span>(por defecto).</li>
<li><span style="font-family: courier new,courier;">mobile</span>.  Presenta mejoras gráficas para la visualización en dispositivos móviles.</li>
<li><span style="font-family: courier new,courier;">satellite</span>. Muestra las imagenes de satélite.</li>
<li><span style="font-family: courier new,courier;">terrain</span>. Muesta el mapa del relieve y la vegetación.</li>
<li><span style="font-family: courier new,courier;">hybrid</span>. Mezcla el contenido de los tipos <span style="font-family: courier new,courier;">roadmap</span> y <span style="font-family: courier new,courier;">satellite</span>.</li>
</ul>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;size=500x300&amp;format=png8&amp;maptype=hybrid&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?center=5.07,-75.521&amp;zoom=11&amp;size=500&#215;300&amp;format=png8&amp;<strong>maptype=hybrid</strong></a></p>
<p>El ejemplo anterior modifica el tipo de mapa visto hasta ahora (<span style="font-family: courier new,courier;">roadmap</span>) y presenta un mapa estilo híbrido de la misma ubicación.</p>
<h5>Parámetro Markers.</h5>
<p>Es opcional y permite especificar y personalizar los marcadores que referenciarán ubicaciones importantes en el mapa.  Es posible especificar hasta 50 marcadores diferentes por mapa.</p>
<p>Cuando se especifica el parámetro <span style="font-family: courier new,courier;">markers</span> no es necesario especificar a los parámetros <span style="font-family: courier new,courier;">center</span> y <span style="font-family: courier new,courier;">zoom</span> ya que estos se pueden calcular automáticamente.</p>
<p>La información de los marcadores se especifica con una cadena separada por &#8216;<span style="font-family: courier new,courier;">|</span>&#8216; (<span style="font-family: courier new,courier;">%7C</span>) de la siguiente manera.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">markers=infoMarcador1|infoMarcador2|infoMarcador3|...</span></p>
<p>La información de los marcadores incluye datos tanto de su ubicación como de su presentación.  Cada marcador se crea con la siguiente estructura.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">{latitud},{longitud},{tamaño}{color}{identificador}</span></p>
<p>El siginificado de cada uno de estos campos se describe a continuación.</p>
<ul>
<li><span style="font-family: courier new,courier;">latitud </span>(requerido).  Latitud de la ubicación del marcador.</li>
<li><span style="font-family: courier new,courier;">longitud </span>(requerido).  Longitud de la ubicación del marcador.</li>
<li><span style="font-family: courier new,courier;">tamaño </span>(opcional).  Tamaño de la imagen del marcador.  Puede tomar uno de los siguientes valores.
<ul>
<li><span style="font-family: courier new,courier;">tiny</span></li>
<li><span style="font-family: courier new,courier;">mid </span>(por defecto)</li>
<li><span style="font-family: courier new,courier;">small</span></li>
</ul>
</li>
<li><span style="font-family: courier new,courier;">color </span>(opcional).  Determina el color de la imagen del marcador.  Puede tomar una de las siguientes constantes.
<ul>
<li><span style="font-family: courier new,courier;">black</span></li>
<li><span style="font-family: courier new,courier;">brown</span></li>
<li><span style="font-family: courier new,courier;">green</span></li>
<li><span style="font-family: courier new,courier;">purple</span></li>
<li><span style="font-family: courier new,courier;">yellow</span></li>
<li><span style="font-family: courier new,courier;">blue</span></li>
<li><span style="font-family: courier new,courier;">gray</span></li>
<li><span style="font-family: courier new,courier;">orange</span></li>
<li><span style="font-family: courier new,courier;">red</span><span style="font-family: courier new,courier;"> </span>(por defecto)</li>
<li><span style="font-family: courier new,courier;">white</span></li>
</ul>
</li>
<li><span style="font-family: courier new,courier;">identificador </span>(opcional).  Permite especificar un carácter alfanumérico y en minúsculas para identificar al marcador.  Debe tenerse en cuenta que este identificador sólo aplica para marcadores tamaño <span style="font-family: courier new,courier;">mid</span>.  Su valor por defecto es el punto.</li>
</ul>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?size=500x300&amp;format=png8&amp;maptype=hybrid&amp;markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?size=500&#215;300&amp;format=png8&amp;maptype=hybrid&amp;<strong>markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda</strong></a></p>
<p>El ejemplo anterior muestra el mapa del eje cafetero colombiano resaltando sus ciudades con marcadores de la siguiente manera: Manizales (amarillo), Pereira (azul) y Armenia (rojo).</p>
<h5>Parámetro Path.</h5>
<p>Es opcional y permite especificar y personalizar rutas sobre el mapa que conectan a dos o mas puntos georreferenciados.  El límite es el de máximo 100 puntos por ruta.</p>
<p>El parámetro se define de manera similar a <span style="font-family: courier new,courier;">markers</span> siguiendo el siguiente formato.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">path=tipoColor:#color,weight:pesoRuta|punto1|punto2|punto3|...</span></p>
<p>El siginificado de cada uno de estos campos se describe a continuación.</p>
<ul>
<li><span style="font-family: courier new,courier;">tipoColor</span>.  Especifica el tipo de formato del color.  Puede tomar uno de los siguientes valores.
<ul>
<li>rgb.  Esquema RGB estándar con valores de 24 bits de la forma <span style="font-family: courier new,courier;">0xffffff</span>.  Su nivel de opacidad por defecto es de 50%.</li>
<li>rgba.  Utiliza valores de 32 bits de la forma <span style="font-family: courier new,courier;">0xffffffff</span>.  El nivel de opacidad está dado por el cuarto byte (últimos dos carácteres) que conforman el canal alfa de transparencia.</li>
</ul>
</li>
<li><span style="font-family: courier new,courier;">weight</span>.  Especifica el grosor de la ruta en pixels.</li>
</ul>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?size=500x300&amp;format=png8&amp;maptype=hybrid&amp;markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&amp;path=rgb:0x0000ff,weight:5|5.07,-75.521|4.813,-75.696|4.534,-75.681&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?size=500&#215;300&amp;format=png8&amp;maptype=hybrid&amp;markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&amp;<strong>path=rgb:0x0000ff,weight:5|5.07,-75.521|4.813,-75.696|4.534,-75.681</strong></a></p>
<p>En este ejemplo se agrega una ruta azul entre Armenia - Pereira - Manizales sobre el ejemplo inmediatamente anterior.</p>
<h5>Parámetro Frame.</h5>
<p>Es opcional y especifica si la imagen resultante se debe o no mostrar con un borde azul de 5px y con 55% de opacidad a su alrededor.  Por defecto no se muestra.</p>
<p style="padding-left: 30px;"><a href="http://maps.google.com/staticmap?size=500x300&amp;format=png8&amp;maptype=hybrid&amp;markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&amp;path=rgb:0x0000ff,weight:5|5.07,-75.521|4.813,-75.696|4.534,-75.681&amp;frame=true&amp;key=ABQIAAAAAa_xc3cplYGMwVbx_zW2chTWZSld1Wm-gV17JxrvtQa7WXWbRRTOL98qj5hk-yEw1n5LrYmEoAwzOg" target="_blank">http://maps.google.com/staticmap?size=500&#215;300&amp;format=png8&amp;maptype=hybrid&amp;markers=5.07,-75.521,midyellowm|4.813,-75.696,midbluep|4.534,-75.681,midreda&amp;path=rgb:0x0000ff,weight:5|5.07,-75.521|4.813,-75.696|4.534,-75.681&amp;<strong>frame=true</strong></a></p>
<p>Enlaces:</p>
<ul>
<li><a href="http://code.google.com/apis/maps/signup.html" target="_blank">Sign Up for the Google Maps API</a>.</li>
<li><a href="http://code.google.com/apis/maps/documentation/staticmaps/" target="_blank">Static Maps API Developer&#8217;s Guide</a>.</li>
<li><a href="http://gmaps-samples.googlecode.com/svn/trunk/simplewizard/makestaticmap.html" target="_blank">Static Map Wizard</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/10/introduccion-a-staticmaps-de-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Departamentos y municipios de Colombia (Actualización 20080915)</title>
		<link>http://blog.jorgeivanmeza.com/2008/09/departamentos-y-municipios-de-colombia-actualizacion-20080915/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=departamentos-y-municipios-de-colombia-actualizacion-20080915</link>
		<comments>http://blog.jorgeivanmeza.com/2008/09/departamentos-y-municipios-de-colombia-actualizacion-20080915/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 05:46:16 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Software geográfico]]></category>
		<category><![CDATA[Colombia]]></category>
		<category><![CDATA[GIS]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=684</guid>
		<description><![CDATA[He venido actualizando la información de los departamentos y municipios de Colombia publicada anteriormente. Ahora se incluye a los municipios creados desde entonces (1102 registros actualmente).  Además me he dado a la tarea de georreferenciar (latitud/longitud) esta información para ser utilizada en futuros proyectos.  De momento me faltan 19 municipios cuyos nombres no coinciden. La [...]]]></description>
			<content:encoded><![CDATA[<p>He venido actualizando la información de los <a href="http://www.jorgeivanmeza.com/blog/2007/05/28/departamentos-y-municipios-de-colombia/" target="_blank">departamentos y municipios de Colombia</a> publicada anteriormente.</p>
<p>Ahora se incluye a los municipios creados desde entonces (1102 registros actualmente).  Además me he dado a la tarea de georreferenciar (latitud/longitud) esta información para ser utilizada en futuros proyectos.  De momento me faltan 19 municipios cuyos nombres no coinciden.</p>
<p>La información se puede descargar de manera gratuita teniendo en cuenta que este es un trabajo en progreso por lo que no es necesariamente preciso.  Agradecería me informen las correcciones si alguien nota algún error en los datos.</p>
<p>Los archivos a continuación se encuentran en formato <a href="http://en.wikipedia.org/wiki/Comma-separated_values" target="_blank">CSV</a> y su codificación es <a href="http://en.wikipedia.org/wiki/Utf_8" target="_blank">UTF-8</a> lo que debe tenerse en cuenta para su correcta visualización.</p>
<ul>
<li><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/09/departamentoscolombiacsv.txt" target="_blank">Departamentos de Colombia</a>: Código, Nombre, Latitud, Longitud.</li>
<li><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/09/municipioscolombiacsv.txt" target="_blank">Municipios por Departamento</a>: Código, Nombre, Código del departamento, Nombre del departamento, Latitud, Longitud.</li>
</ul>
<p>La información se puede de la base de datos se puede consultar de manera gráfica utilizando el siguiente <em>mapplet</em> de mi autoría: <a onclick="window.open('http://maps.google.com/maps/mpl?moduleurl=http://demo.jorgeivanmeza.com/GMaps/municipios/ultimo/mapplet.xml','','scrollbars=yes,resizable=yes,width=1024,height=768');return false;" href="http://maps.google.com/maps/mpl?moduleurl=http://demo.jorgeivanmeza.com/GMaps/municipios/ultimo/mapplet.xml" target="_blank">Mapa de departamentos y municipios colombianos</a>.</p>
<p>Enlace: <a href="http://190.25.231.236/Divipola/Divipola.asp" target="_blank">Sistema de consulta de la división pollítico-administrativa de Colombia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/09/departamentos-y-municipios-de-colombia-actualizacion-20080915/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>GeoIPTool - de donde es esta IP ?</title>
		<link>http://blog.jorgeivanmeza.com/2008/09/geoiptool-de-donde-es-esta-ip/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=geoiptool-de-donde-es-esta-ip</link>
		<comments>http://blog.jorgeivanmeza.com/2008/09/geoiptool-de-donde-es-esta-ip/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 02:09:45 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GIS]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=676</guid>
		<description><![CDATA[El servicio GeoIPTool permite identificar de manera gráfica de donde proviene cualquier dirección IP que se desee. Enlace: http://geoiptool.com/.]]></description>
			<content:encoded><![CDATA[<p>El servicio GeoIPTool permite identificar de manera gráfica de donde proviene cualquier dirección IP que se desee.</p>
<p><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/09/geoiptool.png"><img class="aligncenter size-full wp-image-677" title="geoiptool" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/09/geoiptool.png" alt="" width="500" height="368" /></a></p>
<p>Enlace: <a href="http://geoiptool.com/" target="_blank">http://geoiptool.com/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/09/geoiptool-de-donde-es-esta-ip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demostración de georreferenciación al estilo web 2.0</title>
		<link>http://blog.jorgeivanmeza.com/2008/09/demostracion-de-georreferenciacion-al-estilo-web-20/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=demostracion-de-georreferenciacion-al-estilo-web-20</link>
		<comments>http://blog.jorgeivanmeza.com/2008/09/demostracion-de-georreferenciacion-al-estilo-web-20/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 02:43:37 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software geográfico]]></category>
		<category><![CDATA[GeoNames]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[GoogleMaps]]></category>
		<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=652</guid>
		<description><![CDATA[No es que me sienta viejo aún, pero como me hubiera gustado que como ahora, hubieran existido tantas cosas y que hubieran estado al alcance de los desarrolladores cuando yo era estudiante hace un tiempo ya.  Gloriosa época de muchas trasnochadas expermientando cositas, en particular con Java. Desafortunadamente, en mi época de estudiante me tocó [...]]]></description>
			<content:encoded><![CDATA[<p>No es que me sienta viejo aún, pero como me hubiera gustado que como ahora, hubieran existido tantas cosas y que hubieran estado al alcance de los desarrolladores cuando yo era estudiante hace un tiempo ya.  Gloriosa época de muchas trasnochadas expermientando cositas, en particular con Java.</p>
<p>Desafortunadamente, en mi época de estudiante me tocó un mundo no tan interesante como el actual, ya que empezamos con C/C++ para MS-DOS y en esa época el reto adicional era mostrar imágenes en los programas y simular el ambiente 3D de ventanas con sólo las líneas y cuadrados del <a href="http://en.wikipedia.org/wiki/Borland_Graphics_Interface" target="_blank">BGI </a> <img src='http://blog.jorgeivanmeza.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>Java llegó después y me tocó la época en que <em>todos</em> estabamos aprendiendo y las cosas emocionantes empezaron a llegar con el tiempo y con Internet.  Recuerdo que ya terminando mis clases, cuando abrí mis primeras direcciones de correo en USA.net y Hotmail, mis compañeros estuvieron renuentes por un buen tiempo porque no le veían la utilidad al correo electrónico o simplemente porque no tenían quien les escribiera.  Pero por suerte ya todo eso pasó.</p>
<p>Ahora hay muchas cosas, tantas que no alcanza el tiempo para buscarlas, estudiarlas y hacer algo con ellas.  Inclusive hay muchas cosas del mismo estilo.  Todo un mundo de delicias para escoger.  Lo que falta es tiempo.  El trabajo y el cansancio son malos amigos para la investigación.  Ahora, donde uno mire, hay cosas para probar y lo mejor de todo es que la mayoría son abiertas y grátis ... digo libres (<em>free</em>), el límite es el tiempo y la pereza mental de las personas.</p>
<p>Hoy, a pesar de que tengo muchos informes atrasados, me dieron ganas de hacer una aplicación muy sencilla para demostrar un par de estas librerías que están allí, esperando que hagamos algo interesante con ellas.   Este ejemplo muy simple me tomó al rededor de 2 horas implementarlo y eso porque son muy lento para hacer las interfaces de usuario desde código.</p>
<p>Así surgió la <strong>demostración de georreferenciación al estilo web 2.0</strong> que permite visualizar el mapa de cualquier ubicación del mundo y ubicar sobre él marcadores georreferenciados.</p>
<p>Para esto utiliza los servicios de <a href="http://maps.google.com/" target="_blank">Google Maps</a> para la generación de las imágenes y <a href="http://www.geonames.org/" target="_blank">GeoNames </a>para la georreferenciación, es decir, para convertir las ubicaciones (<span style="font-family: courier new,courier;">Manizales, Caldas, Colombia</span>) en sus respectivas duplas latitud/longitud para poder ser relacionadas geográficamente.</p>
<p><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/09/screenshot.jpg"><img class="aligncenter size-full wp-image-693" title="screenshot" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/09/screenshot.jpg" alt="" width="500" height="375" /></a></p>
<p>En la parte izquierda se aprecia la lista con las ubicaciones seleccionadas que corresponden con las marcas rojas en el mapa, en la parte derecha está el mapa junto con tres barras de desplazamiento que regulan su presentación y en la parte inferior se encuentran los botones de opciones.</p>
<p>El demo le permite al usuario <strong>Agregar </strong>y <strong>Remover</strong> ubicaciones como puntos seleccionados.  Como se mencionó, estas se ingresan con los nombres de las ubicaciones y el sistema obtiene su ubicación geográfica a través de la consulta de un servicio web.  Es posible en cualquier momento,<strong> Centrar</strong> el mapa al rededor de cualquiera de los puntos seleccionados almacendos.</p>
<p>La manipulación del mapa se realiza con las barras de desplazamiento.  La naranja (derecha) corresponde con el zoom: hacia abajo aumenta, haciendo mayor el acercamiento del mapa.  La horizontal, azul, corresponde con la longitud y la vertical, verde, corresponde con la latitud.  Cuando se modifica cualquiera de estos valores se deberá solicitar la actualización del mapa presionando el botón <strong>Refrescar</strong>.</p>
<p>La aplicación ha sido desarrollada en Java por lo que su código es muy claro y modular.  En términos de la implementación, el acceso al <em>webservice</em> de GeoNames utiliza su propio API para el cual se descargaron dos archivos: <span style="font-family: courier new,courier;">geonames-1.0-java5.jar</span> y <span style="font-family: courier new,courier;">jdom-1.0.jar</span>.</p>
<p>La georrefernciación no podría ser más fácil.</p>
<pre lang="java">    public static GeoLocation locate(String location) throws Exception
    {
        GeoLocation result = new GeoLocation();
        // Creates the toponym searcher
        ToponymSearchCriteria searchCriteria = new ToponymSearchCriteria();
        // Sets the criteria based on the specified location
        searchCriteria.setQ(location);
        // Request the geolocalization to the webserver
        ToponymSearchResult searchResult = WebService.search(searchCriteria);
        // Gets the results
        List toponyms = searchResult.getToponyms();
        // Checks if there were results
        if(toponyms == null || toponyms.size() == 0)
            return null;
        // Gets the first result of all (could be many)
        Toponym first = toponyms.get(0);
        // Prepares the result with its information
        result.put("geoNameId",   first.getGeoNameId()   + "");
        result.put("name",        first.getName()        + "");
        result.put("latitude",    first.getLatitude()    + "");
        result.put("longitude",   first.getLongitude()   + "");
        result.put("countryCode", first.getCountryCode() + "");
        result.put("countryName", first.getCountryName() + "");
        return result;
    }</pre>
<p>La clase <span style="font-family: courier new,courier;">GeoLocation</span> que utilizo para manejar el resultado no es mas que un <span style="font-family: courier new,courier;">Hashtable&lt;String, String&gt;</span> con algunos adendos para facilitar su uso.</p>
<p>Por otro lado, la generación del mapa requiere aún menos ciencia aunque la realizo en dos pasos discretos que en general no incluyen nada extraño.</p>
<pre lang="java">    public String prepareUrl()
    {
		String markers = "";
		// Walks thru all the points to create its markers
		for(int i=0; i
<points.size(); i++)
		{
			// Reads the points one by one
			GeoLocation point = points.elementAt(i);
			// The markers will be green
			String color = "green";
			// Sets the point location information based on its longitude and latitude
			String pointLocation = point.get("latitude") + "," +
			                       point.get("longitude") + "," +
			                       color +
			                       point.get("name").toLowerCase().charAt(0);
			// Adds it to the markers accumulator
			markers += pointLocation + ((i < points.size() - 1) ? "%7C" : "");
		}
		// Prepares the full URL based on markers information, centered location, size, zoom and API key
		String url = "http://maps.google.com/staticmap?" +
		             "center=" + centerLatitude + "," + centerLongitude + "&#038;" +
		             "markers=" + markers + "&#038;" +
		             "zoom=" + zoomLevel + "&#038;" +
		             "size=" + sizeWidth + "x" + sizeHeight + "&#038;" +
		             "key=" + apiKey;
		// System.out.println(url);
		return url;
    }</pre>
<p>En el primer paso preparo el URL del consulta al servicio basado en información como la coordenada centro del mapa, el nivel de zoom, el tamaño de la imagen, los puntos seleccionados (marcadores) y la llave del API que debe ser privada y es única para cada sitio web (<a href="http://en.wikipedia.org/wiki/Fqdn" target="_blank">FQDN</a>), aunque para el caso específico de aplicaciones de escritorio no es muy relevante a pesar de ser obligatoria.  La llave del API puede ser obtenida de manera gratuita por cualquier desarrollador desde esta <a href="http://code.google.com/apis/maps/signup.html" target="_blank">dirección</a>.</p>
<pre lang="java">    public Image prepareImage(String url) throws Exception
    {
        Image image = ImageIO.read(new URL(url));
        return image;
    }</pre>
<p>El segundo paso se relaciona con consultar el servicio de Google utilizando el URL recién generado, leer los bytes que conforman la imagen y crear con ellos un objeto Image para ser mostrado posteriormente en la interfaz de usuario.  Con Java, este procedimiento es extremadamente sencillo: 1 línea de código.</p>
<p>Para su uso se deberá tener cuidado en el manejo de las posibles excepciones que pueda lanzar el requerimiento como por ejemplo, producto de un fallo de red.</p>
<pre lang="java">        // Gets the map image
        Image imageMap = mapService.getMap();
        // Checks if was received
        if(imageMap == null)
        {
            JOptionPane.showMessageDialog(this, "El mapa no se pudo recuperar.",
                    "Error recuperando mapa", JOptionPane.ERROR_MESSAGE);
            return;
        }
        // Puts the map on the gui
        map.setIcon(new ImageIcon(imageMap));</pre>
<p>Teniendo el objeto <span style="font-family: courier new,courier;">Image</span> lo podemos poner en cualquier componente de AWT/Swing.  Por facilidad, yo utilizo un <span style="font-family: courier new,courier;">JLabel </span>que incluye el soporte de íconos (<span style="font-family: courier new,courier;">ImageIcon</span>) los cuales se basan en objetos de imagen.</p>
<p>Como se puede apreciar, la complejidad de la aplicación es muy baja por lo que reitero: <strong>la imaginación es el límite</strong>.</p>
<p>Es posible acceder a la aplicación desde web sin instalar ningún archivo local desde el siguiente <a href="http://demo.jorgeivanmeza.com/Java/DemoGeoReferenceMap/0.1/DemoGeoReferenceMap.jnlp">enlace</a> o ejecutando el siguiente comando en una consola/símbolo del sistema operativo:</p>
<p><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;$ javaws http://demo.jorgeivanmeza.com/Java/DemoGeoReferenceMap/0.1/DemoGeoReferenceMap.jnlp</span></p>
<p>Enlace:</p>
<ul>
<li><a href="http://demo.jorgeivanmeza.com/Java/DemoGeoReferenceMap/0.1/DemoGeoReferenceMap_0.1.zip">Código fuente y binario de la aplicación de demostración</a> (incluye librerías de GeoNames requeridas).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/09/demostracion-de-georreferenciacion-al-estilo-web-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducción práctica a Google Mapplets</title>
		<link>http://blog.jorgeivanmeza.com/2008/07/introduccion-practica-a-google-mapplets/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=introduccion-practica-a-google-mapplets</link>
		<comments>http://blog.jorgeivanmeza.com/2008/07/introduccion-practica-a-google-mapplets/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 04:37:45 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Software geográfico]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GoogleMapplets]]></category>
		<category><![CDATA[GoogleMaps]]></category>
		<category><![CDATA[GooglePages]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=409</guid>
		<description><![CDATA[Siguiendo mi premisa &#8220;de lo que no se pueda aprender entonces es inútil y prescindible&#8221; tuve el deseo este fin de semana de escribir una introducción a Google Mapplets con que he jugado un poco en el último par de meses. Fruto de ese deseo surgió la Introducción práctica a Google Mapplets la cual introduce [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo mi premisa &#8220;<em>de lo que no se pueda aprender entonces es inútil y prescindible</em>&#8221; tuve el deseo este fin de semana de escribir una introducción a <strong>Google Mapplets</strong> con que he jugado un poco en el último par de meses.</p>
<p>Fruto de ese deseo surgió la <strong>Introducción práctica a Google Mapplets</strong> la cual introduce los conceptos básicos del servicio y lleva de la mano al desarrollador a través de la implementación de una demostración simple que ejemplifica de manera sencilla los conceptos expuestos y parte del API del servicio.</p>
<p>El lector deberá estar familiarizado con el desarrollo de software en general, la utilización de JavaScript y XML.</p>
<p><strong>Introducción al desarrollo de Mapplets.</strong></p>
<div id="__ss_514814" style="width: 425px; text-align: left;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=introduccin-al-desarrollo-de-google-mapplets-1216187116637612-9" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=introduccin-al-desarrollo-de-google-mapplets-1216187116637612-9" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div>&nbsp;</div>
<p>● Que son los Mapplets.<br />
● Ventajas y desventajas frente a Google Maps.<br />
● Diferencias importantes con el API de Google Maps.<br />
● Requerimientos para el desarrollo.<br />
● Como es un Mapplet (estructura).<br />
● Herramientas para el desarrollo.<br />
● Acceso a Mis Mapas y al Directorio de Mapas.<br />
● Como desarrollar Mapplets.<br />
● Plantilla base de un Mapplet.<br />
● Enlaces de interés.</p>
<p><strong>Desarrollo de Mi Primer Mapplet.</strong></p>
<div id="__ss_514815" style="width: 425px; text-align: left;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=desarrollo-de-mi-primer-mapplet-1216187395220531-9" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=desarrollo-de-mi-primer-mapplet-1216187395220531-9" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div>&nbsp;</div>
<p>● Plantilla base de un Mapplet.<br />
● Desarrollo e implementación de MiPrimerMapplet.<br />
● Publicación de Mapplets con Google Pages.<br />
● Agregar el Mapplet a Mis Mapas.<br />
● Compartir el acceso a los Mapplets desarrollados.<br />
● Enlaces de interés.</p>
<p>El ejemplo práctico de esta presentación puede consultarse en el siguiente enlace.</p>
<p><a href="http://maps.google.com/ig/add?synd=mpl&amp;pid=mpl&amp;moduleurl=http://demo.jorgeivanmeza.com/GMaps/MiPrimerMapplet/ultimo/MiPrimerMapplet.xml" target="_blank">http://maps.google.com/ig/add?synd=mpl&amp;pid=mpl&amp;moduleurl=http://demo.jorgeivanmeza.com/GMaps/MiPrimerMapplet/ultimo/MiPrimerMapplet.xml</a></p>
<p>Mientras que el código fuente del mismo ejemplo puede consultarse a través de este enlace.</p>
<p><a href="http://demo.jorgeivanmeza.com/GMaps/MiPrimerMapplet/ultimo/MiPrimerMapplet.xml" target="_blank">http://demo.jorgeivanmeza.com/GMaps/MiPrimerMapplet/ultimo/MiPrimerMapplet.xm</a>l</p>
<p>Enlaces:</p>
<ul>
<li><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/07/introduccion-al-desarrollo-de-google-mapplets.pdf" target="_blank">Introducción al desarrollo de Google Mapplets</a>.</li>
<li><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/07/desarrollo-de-mi-primer-mapplet.pdf" target="_blank">Desarrollo de Mi Primer Mapplet</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/07/introduccion-practica-a-google-mapplets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mapplet demo: Distritos Mineros 0.1</title>
		<link>http://blog.jorgeivanmeza.com/2008/05/mapplet-demo-distritos-mineros-01/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mapplet-demo-distritos-mineros-01</link>
		<comments>http://blog.jorgeivanmeza.com/2008/05/mapplet-demo-distritos-mineros-01/#comments</comments>
		<pubDate>Thu, 29 May 2008 22:44:37 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GoogleMapplets]]></category>
		<category><![CDATA[Mapplets]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=353</guid>
		<description><![CDATA[El día de hoy he desarrollado un primer demo muy sencillo basado en un Mapplet que presenta los municipios Colombianos que pertenecen a Distritos Mineros e incluye alguna información adicional al respecto. Este primer bosquejo es muy limitado ya que su información se obtiene de manera estática desde una fuente XML y que esta no [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy he desarrollado un primer demo muy sencillo basado en un <a href="http://code.google.com/apis/maps/documentation/mapplets/" target="_blank">Mapplet</a> que presenta los municipios Colombianos que pertenecen a <a href="http://www.distritosmineros.gov.co/">Distritos Mineros</a> e incluye alguna información adicional al respecto.</p>
<p><a href="http://maps.google.com/maps/mpl?moduleurl=http://demo.jorgeivanmeza.com/GMaps/demo_dm/0.1/dm_demo_0.1.8.xml"><img class="aligncenter size-full wp-image-354" title="demo_mapplet1" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/05/demo_mapplet1.png" alt="" width="500" height="506" /></a></p>
<p>Este primer bosquejo es muy limitado ya que su información se obtiene de manera estática desde una fuente XML y que esta no se encuentra georreferenciada, por esto hace uso del <strong>GeoCoder </strong>el cual, al menos para esta prueba, no en todos los casos funciona de manera consistente.</p>
<p>El tiempo de desarrollo de un ejercicio tan sencillo es de unos 30 minutos, sin embargo el cambio a funciones asíncronas que se hizo para pasar de <a href="http://en.wikipedia.org/wiki/Google_maps" target="_blank">Google Maps</a> a <strong>Mapplets </strong>si aumentó la complejidad del diseño, el cual me tomó finalizar en mas tiempo de lo esperado.</p>
<p>Las funciones asíncronas, a diferencia de las síncronas que retornan con el resultado después de ser ejecutadas, retornan inmediatamente y contínua el flujo normal del programa, sin embargo su resultado aún no ha sido terminado de procesar.  Cuando la función asíncrona ha completado la realización de su código, ejecuta una función cuya implementación es definida por el usuario y se utiliza para procesar su resultado, esta función se especifica a manera de <a href="http://en.wikipedia.org/wiki/Callback_%28computer_science%29" target="_blank"><em>callback</em></a>.</p>
<p>Palabras mas, palabras menos, las funciones asíncronas (<em>*Async</em>) en los <strong>Mapplets </strong>se ejecutan cuando se espera pero no es predecible determinar cuando estas terminan su procesamiento y se obtiene un resultado.  La complejidad de la demostración se aumentó debido a la utilización del <strong>GeoCoder </strong>cuya ejecución (<strong>getLatLngAsync</strong>) es asíncrona y se realizaba múltiples veces (una por cada registro), sin embargo estas se realizan después de obtener la fuente remota con los datos (<strong>_IG_FetchXmlContent</strong>), la cual también es una función asíncrona.</p>
<p>En conclusión, el desarrollo de este tipo de <strong>Mapplets </strong>es extremadamente sencillo y rápido, sin embargo se recomienda que los datos ya lleguen georreferenciados, es decir, parecería ser mejor preprocesar la información del lado del servidor y geolocalizarla antes de enviarla al Mapplet que buscar su complemento desde el mismo código del mapa.</p>
<p>Enlaces:</p>
<ul>
<li><a href="http://maps.google.com/maps/mpl?moduleurl=http://demo.jorgeivanmeza.com/GMaps/demo_dm/0.1/dm_demo_0.1.8.xml" target="_blank">Versión de demostración 0.1.8</a>.</li>
<li><a href="http://demo.jorgeivanmeza.com/GMaps/demo_dm/0.1/dm_demo_0.1.8.xml" target="_blank">Código fuente de la demostración</a>.</li>
<li><a href="http://code.google.com/apis/maps/documentation/mapplets/" target="_blank">Documentación de los Mapplets por Google</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/05/mapplet-demo-distritos-mineros-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
