<?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>Haciendo Web &#187; JavaScript</title>
	<atom:link href="http://www.haciendoweb.cult.cu/categorias/tutoriales/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.haciendoweb.cult.cu</link>
	<description>Mejorando la Intranet Cubana</description>
	<lastBuildDate>Tue, 21 May 2013 16:05:27 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>AngularJS Y El Futuro Del Desarrollo Web</title>
		<link>http://www.haciendoweb.cult.cu/angularjs-y-el-futuro-del-desarrollo-web/</link>
		<comments>http://www.haciendoweb.cult.cu/angularjs-y-el-futuro-del-desarrollo-web/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 18:42:41 +0000</pubDate>
		<dc:creator>Jorge Enrique Dominguez</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[Framework Javascript]]></category>
		<category><![CDATA[Utilidades]]></category>

		<guid isPermaLink="false">http://www.haciendoweb.cult.cu/?p=11808</guid>
		<description><![CDATA[Estamos desarrollando aplicaciones web con arquitecturas concebidas hace más de 10 años.  En el mudo actual con todo tipo de dispositivos, tamaños de pantallas, formas de uso (táctil, no táctil, offline, online…) quizás no sea la forma más adecuada.
El problema
Hace 2 años publiqué un post en el que hablaba sobre la necesidad de cambiar el modelo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.haciendoweb.cult.cu/wp-content/uploads/2013/04/AngularJS-300x84.png"><img class="alignleft size-full wp-image-11809" title="AngularJS-300x84" src="http://www.haciendoweb.cult.cu/wp-content/uploads/2013/04/AngularJS-300x84.png" alt="" width="300" height="84" /></a>Estamos desarrollando aplicaciones web con arquitecturas concebidas hace más de 10 años.  En el mudo actual con todo tipo de dispositivos, tamaños de pantallas, formas de uso (táctil, no táctil, offline, online…) quizás no sea la forma más adecuada.</p>
<p><strong>El problema</strong></p>
<p>Hace 2 años publiqué un post en el que hablaba sobre la necesidad de <a target="_blank" href="http://www.alvareznavarro.es/5832/acabaremos-todos-programando-en-javascript/">cambiar el modelo cliente/servidor en el desarrollo web</a>, donde toda la lógica de la aplicación reside en el servidor, para tender hacia un modelo donde la lógica reside en el cliente y permite el uso de aplicaciones web incluso cuando no hay conexión a Internet.<span id="more-11808"></span></p>
<p>Con el auge de los dispositivos móviles el uso de aplicaciones web cuando no hay conexión se convierte en algo necesario.</p>
<p>Comentaba en dicho post que hoy por hoy en los navegadores web solo se puede programar en Javascript y por lo tanto si vamos a desarrollar nuestra aplicación en Javascript para que esté disponible en el lado del cliente, también parece lógico desarrollar en dicho lenguaje en el lado del servidor para estandarizar y aprovechar al máximo nuestro conocimiento del lenguaje.</p>
<p><strong>La solución</strong></p>
<p>Hasta ahora no había visto ninguna tecnología que permitiese realizar este tipo de desarrollo de forma eficiente y aunque existen muchos frameworks de desarrollo web en Javascript casi todos se basan en el modelo actual cliente/servidor.</p>
<p><a target="_blank" href="http://angularjs.org/">AngularJS</a> cambia este <a target="_blank" href="http://docs.angularjs.org/guide/concepts">tipo de concepto</a> y es un framework que permite dotar de un mayor peso al cliente web y además lo hace de una forma eficiente y sencilla.</p>
<p>Como principal novedad aporta una extensión del leguaje HTML que le permite manipular datos.</p>
<p>Hasta ahora HTML permitia un marcado del tipo de datos a representar, su contenido y el aspecto.  AngularJS añade el <a target="_blank" href="http://docs.angularjs.org/guide/compiler">tratamiento de datos</a> a esta ecuación y el navegador ya dispone de información suficiente como para saber como mostrar todos los registros de un array o filtrar los registros para mostrar un subconjunto de ellos, por poner 2 ejemplos.</p>
<p>&nbsp;</p>
<p>Otra característica relevante es que la conexión entre los datos en el navegador y nuestro modelo <a target="_blank" href="http://docs.angularjs.org/guide/dev_guide.mvc.understanding_view">se realiza de forma automática y bidireccional</a>, no tenemos que actualizar de forma manual nada, angularjs actualizará automáticamente nuestra vista cuando se produzcan cambios en el modelo y viceversa.  En el modelo actual de desarrollo cualquier cambio en el navegador del cliente implica enviar esos datos al modelo y repintar de nuevo la parte actualizada para reflejar esos cambios.  Todo ese trabajo se realiza automáticamente en AngularJS sin necesidad de repintar ni actualizar manualmente.</p>
<p>AngularJS está desarrollado por Google lo que si bien no le garantiza el éxito si que garantiza un producto de calidad, con recursos y soporte.  Además quien impide a Google incluir en su navegador Chrome todas estas funcionalidades de forma nativa.</p>
<p><strong>Resumen</strong></p>
<p>Los grandes avances en el desarrollo de aplicaciones web dan más y más peso a Javascript como lenguaje de desarrollo.  No voy a entrar en el debate, estéril por otra parte, de si Javascript es un lenguaje adecuado y bien construido.  Es el lenguaje que entienden todos los navegadores y por lo tanto la única alternativa para desarrollar en el lado del cliente.</p>
<p>AngularJS pone a nuestro alcance la posibilidad de desarrollar aplicaciones web que proporcionan una mejor experiencia a quienes la usan, que debe ser la finalidad de todo desarrollador web.  En mi opinión es hacía este tipo de desarrollos hacía donde avanzaremos en un futuro cercano.</p>
<div class="div_file_dwl"> <a href="http://www.haciendoweb.cult.cu/wp-content/plugins/download-monitor/download.php?id=199"  title="AngularJS" class="no_a"> <span class="size">78.4 kB</span> <span class="name">AngularJS (247)</span> </a> </div>
<p>fuente: http://www.alvareznavarro.es/2012/10/angularjs-y-el-futuro-del-desarrollo-web/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haciendoweb.cult.cu/angularjs-y-el-futuro-del-desarrollo-web/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Imágenes Rotatorias en el Blog</title>
		<link>http://www.haciendoweb.cult.cu/imagenes-rotatorias-en-el-blog/</link>
		<comments>http://www.haciendoweb.cult.cu/imagenes-rotatorias-en-el-blog/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 19:29:08 +0000</pubDate>
		<dc:creator>Odecte Rodríguez Madruga</dc:creator>
				<category><![CDATA[Consejos]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Manuales]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Imagenes]]></category>

		<guid isPermaLink="false">http://www.haciendoweb.cult.cu/?p=11556</guid>
		<description><![CDATA[1. Introducción:
El presente tutorial les permitira añadir imágenes que cambian automáticamente en el blog.
2. Javascript:
Vamos a:
Pa -&#62; Multiblog -&#62; Módulos -&#62; Personalizado -&#62; Modificar
Dentro del contenido pegaremos lo siguiente:
    &#60;script language=&#34;Javascript&#34; type=&#34;text/javascript&#34;&#62;
        mis_imagenes = new Array(&#34;IMAGEN1&#34;,&#34;IMAGEN2&#34;,&#34;IMAGEN3&#34;,&#34;IMAGEN4&#34;)
        mi_imagen = [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: darkred;">1. Introducción:</span></strong><br />
El presente tutorial les permitira añadir imágenes que cambian automáticamente en el blog.</p>
<p><strong><span style="color: darkred;">2. Javascript:</span></strong><br />
Vamos a:</p>
<div>Pa -&gt; Multiblog -&gt; Módulos -&gt; Personalizado -&gt; Modificar</div>
<p>Dentro del contenido pegaremos lo siguiente:</p>
<pre class="brush: javascript; gutter: true">    &lt;script language=&quot;Javascript&quot; type=&quot;text/javascript&quot;&gt;
        mis_imagenes = new Array(&quot;IMAGEN1&quot;,&quot;IMAGEN2&quot;,&quot;IMAGEN3&quot;,&quot;IMAGEN4&quot;)
        mi_imagen = 0
        imgCt = mis_imagenes.length
        function rotacion() {
        if (document.images) {
        mi_imagen++
        if (mi_imagen == imgCt) {</pre>
<p><span id="more-11556"></span></p>
<pre class="brush: javascript; gutter: true">
        mi_imagen = 0
        }
        document.anuncio.src=mis_imagenes[mi_imagen]
        setTimeout(&quot;rotacion()&quot;, 2 * 1000)
        }
        }
        &lt;/script&gt;
        &lt;body onload=&quot;rotacion()&quot;&gt;
        &lt;img src=&quot;http://illiweb.com/fa/empty.gif&quot; name=&quot;anuncio&quot; alt=&quot;Anuncios&quot; /&gt;
        &lt;/body&gt;</pre>
<p>En donde IMAGEN1,2,3,4, corresponderán a las direcciónes de las imágenes que aparecerán en el widget de forma automática.</p>
<p>Una vez hayamos personalizado correctamente todo pinchamos <strong>Registrar</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haciendoweb.cult.cu/imagenes-rotatorias-en-el-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repositorio web de plugins jQuery</title>
		<link>http://www.haciendoweb.cult.cu/repositorio-web-de-plugins-jquery/</link>
		<comments>http://www.haciendoweb.cult.cu/repositorio-web-de-plugins-jquery/#comments</comments>
		<pubDate>Thu, 06 Sep 2012 11:00:17 +0000</pubDate>
		<dc:creator>Darkwin</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://www.haciendoweb.cult.cu/?p=9594</guid>
		<description><![CDATA[Handpicked jQuery Plugins Repository v2 es la segunda versión de un repositorio que presume de seleccionar manualmente algunos de los mejores plugins jQuery.
Clasificados por categorías según su funcionalidad todos estos plugins jQuery están listos para empezar a ser usados y disponen junto a una breve descripción una demo del mismo.

Además todos aquellos que lo deseen [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong><a href="http://www.haciendoweb.cult.cu/wp-content/uploads/2012/09/1133.gif"><img class=" wp-image-9595 alignleft" title="1133" src="http://www.haciendoweb.cult.cu/wp-content/uploads/2012/09/1133.gif" alt="" width="140" height="98" /></a>Handpicked jQuery Plugins Repository v2</strong> es la segunda versión de un repositorio que presume de seleccionar manualmente algunos de los mejores plugins jQuery.</p>
<p style="text-align: justify;">Clasificados por categorías según su funcionalidad todos estos plugins jQuery están listos para empezar a ser usados y disponen junto a una breve descripción una demo del mismo.</p>
<p style="text-align: justify;"><span id="more-9594"></span></p>
<p style="text-align: justify;">Además todos aquellos que lo deseen tienen también la posibilidad de encontrar cada uno de estos plugins en un CDN, de forma que sea posible usarlo sin ni siquiera tener que descargarlos.</p>
<p style="text-align: justify;">En cuanto a plugins jQuery que podemos encontrar en esta selección destaca aquellos relativos a efectos visuales, funcionalidades para formularios y menús, creación de sliders, efectos en texto, o integración con redes sociales como Twitter.</p>
<p style="text-align: justify;">Tras el lanzamiento de esta nueva versión de <strong>Handpicked jQuery Plugins Repository</strong>, todos los scripts ahora corren sobre jQuery 1.7.2. Usuarios interesados pueden acceder a este repositorio online de plugins jQuery desde<a target="_blank" href="http://%20iwantaneff.in/repo"> iwantaneff.in/repo</a>.</p>
<p><strong>Fuente:</strong> <a target="_blank" href="http://www.desarrolloweb.com/">DesarrolloWeb</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.haciendoweb.cult.cu/repositorio-web-de-plugins-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Usar geolocalización con Google Maps</title>
		<link>http://www.haciendoweb.cult.cu/usar-geolocalizacion-con-google-maps-2/</link>
		<comments>http://www.haciendoweb.cult.cu/usar-geolocalizacion-con-google-maps-2/#comments</comments>
		<pubDate>Fri, 06 Jul 2012 15:45:23 +0000</pubDate>
		<dc:creator>Juan Pablo Pérez Manes</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Códigos]]></category>
		<category><![CDATA[Geolocalización]]></category>
		<category><![CDATA[Google Maps]]></category>

		<guid isPermaLink="false">http://www.haciendoweb.cult.cu/?p=8991</guid>
		<description><![CDATA[Este tutorial muestra cómo usar la API de geolocalización combinada con la API de Google Mapspara mostrar nuestra posición actual sobre un mapa con HTML5.
Nivel: Medio
¿Qué es la geolocalización?
Sin entrar en si forma parte o no de HTML5, podemos definir la geolocalización como una nueva API Javascript que nos permite conocer de forma fácil nuestras coordenadas desde un navegador.
Conociendo nuestra posición
Esta API destaca por lo [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.haciendoweb.cult.cu/wp-content/uploads/2011/12/google-map-logo.jpg"><img class="alignleft" title="google map logo" src="http://www.haciendoweb.cult.cu/wp-content/uploads/2011/12/google-map-logo-e1322775590966-150x146.jpg" alt="google map logo" width="150" height="146" /></a>Este tutorial muestra cómo usar la API de geolocalización combinada con la API de Google Mapspara mostrar nuestra posición actual sobre un mapa con HTML5.</p>
<p>Nivel: <strong>Medio</strong></p>
<h2 style="text-align: justify;">¿Qué es la geolocalización?</h2>
<p style="text-align: justify;">Sin entrar en si forma parte o no de HTML5, podemos definir la geolocalización como una nueva API Javascript que nos permite conocer de forma fácil nuestras coordenadas desde un navegador.<span id="more-8991"></span></p>
<h2 style="text-align: justify;">Conociendo nuestra posición</h2>
<p style="text-align: justify;">Esta API destaca por lo fácil que es usarla. Por ejemplo:</p>
<p style="text-align: justify;"><strong>Código :</strong></p>
<pre class="brush: javascript; gutter: true">&lt;script&gt;
     function localizame() {
           navigator.geolocation.getCurrentPosition(coordenadas);
     }

     function coordenadas(){
           var latitud = position.coords.latitude;
           var longitud = position.coords.longitude;
     }
&lt;/script&gt;</pre>
<pre>Con este código tan simple tenemos almacenados en las variables &lt;em&gt;latitud&lt;/em&gt; y &lt;em&gt;longitud&lt;/em&gt; &lt;strong&gt;la latitud y longitud de nuestra posición&lt;/strong&gt;</pre>
<h3 style="text-align: justify;">Controlando errores</h3>
<p style="text-align: justify;">Es posible que obtengamos algún tipo de error a la hora de usar esta API. El más común para los usuarios <em>desactualizados</em> (vamos, los que usen IE) es que el navegador no soporte geolocalización. En ese caso controlaremos:</p>
<p style="text-align: justify;"><strong>Código :</strong></p>
<pre class="brush: javascript; gutter: true">&lt;script&gt;
function localizame() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(coordenadas);
            }else{
                alert(&#039;Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!&#039;);
            }
}
&lt;/script&gt;</pre>
<p style="text-align: justify;">Existen además otros errores relacionados con los permisos sobre privacidad del usuario, tiempo de espera, etc. Para ello crearemos una función sencilla que muestre un mensaje según el código de error, y la llamamos en la función <em>getCurrentPosition</em>:</p>
<p style="text-align: justify;"><strong>Código :</strong></p>
<pre class="brush: javascript; gutter: true">&lt;script&gt;
        function localizame() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(coordenadas, errores);
            }else{
                alert(&#039;Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!&#039;);
            }
        }

        function errores(err) {
            if (err.code == 0) {
              alert(&quot;Oops! Algo ha salido mal&quot;);
            }
            if (err.code == 1) {
              alert(&quot;Oops! No has aceptado compartir tu posición&quot;);
            }
            if (err.code == 2) {
              alert(&quot;Oops! No se puede obtener la posición actual&quot;);
            }
            if (err.code == 3) {
              alert(&quot;Oops! Hemos superado el tiempo de espera&quot;);
            }
        }
&lt;/script&gt;</pre>
<h2 style="text-align: justify;">Combinando la API de geolocalización con la API de Google Maps</h2>
<p style="text-align: justify;">Veamos los pasos directamente sobre los comentarios del código:</p>
<p style="text-align: justify;"><strong>Código :</strong></p>
<pre class="brush: html; gutter: true">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Localizador&lt;/title&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.7.1.min.js&quot;&gt;&lt;/script&gt; /*Usamos JQuery*/
    &lt;style&gt;
        body{
            font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Arial, Verdana, sans-serif;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;header&gt;
        &lt;h1&gt;Localizador mediante HTML5&lt;/h1&gt;
    &lt;/header&gt;
    &lt;section&gt;
        &lt;article&gt;
            &lt;div id=&#039;map_canvas&#039; style=&#039;width:100%; height:400px;&#039;&gt;&lt;/div&gt;/*Esta capa hará de elemento contenedor del mapa*/
        &lt;/article&gt;
    &lt;/section&gt;

    &lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot;&gt;&lt;/script&gt; /*Cargamos la API de Google Maps*/

    &lt;script type=&quot;text/javascript&quot;&gt;
        var map;
        var latitud;
        var longitud;

        $(document).ready(function() {
            localizame(); /*Cuando cargue la página, cargamos nuestra posición*/   
        });

        function localizame() {
            if (navigator.geolocation) { /* Si el navegador tiene geolocalizacion */
                navigator.geolocation.getCurrentPosition(coordenadas, errores);
            }else{
                alert(&#039;Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!&#039;);
            }
        }

        function coordenadas(position) {
            latitud = position.coords.latitude; /*Guardamos nuestra latitud*/
            longitud = position.coords.longitude; /*Guardamos nuestra longitud*/
            cargarMapa();
        }

        function errores(err) {
            /*Controlamos los posibles errores */
            if (err.code == 0) {
              alert(&quot;Oops! Algo ha salido mal&quot;);
            }
            if (err.code == 1) {
              alert(&quot;Oops! No has aceptado compartir tu posición&quot;);
            }
            if (err.code == 2) {
              alert(&quot;Oops! No se puede obtener la posición actual&quot;);
            }
            if (err.code == 3) {
              alert(&quot;Oops! Hemos superado el tiempo de espera&quot;);
            }
        }

        function cargarMapa() {
            var latlon = new google.maps.LatLng(latitud,longitud); /* Creamos un punto con nuestras coordenadas */
            var myOptions = {
                zoom: 17,
                center: latlon, /* Definimos la posicion del mapa con el punto */
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };/*Configuramos una serie de opciones como el zoom del mapa y el tipo.
            map = new google.maps.Map($(&quot;#map_canvas&quot;).get(0), myOptions); /*Creamos el mapa y lo situamos en su capa */

            var coorMarcador = new google.maps.LatLng(latitud,longitud); /Un nuevo punto con nuestras coordenadas para el marcador (flecha) */

            var marcador = new google.maps.Marker({
/*Creamos un marcador*/
                position: coorMarcador, /*Lo situamos en nuestro punto */
                map: map, /* Lo vinculamos a nuestro mapa */
                title: &quot;Dónde estoy?&quot; 
            });
        }
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Autor: <a target="_blank" title="Web del Autor" href="http://www.antonionavajas.com/" target="_blank">Antonio Navajas</a><a href="http://www.haciendoweb.cult.cu/wp-content/uploads/2011/12/google-map-logo.jpg"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.haciendoweb.cult.cu/usar-geolocalizacion-con-google-maps-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ext JS 4.1 disponible</title>
		<link>http://www.haciendoweb.cult.cu/ext-js-4-1-disponible/</link>
		<comments>http://www.haciendoweb.cult.cu/ext-js-4-1-disponible/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 23:37:25 +0000</pubDate>
		<dc:creator>Darkwin</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.haciendoweb.cult.cu/?p=7526</guid>
		<description><![CDATA[
Ext JS 4.1 es la primera actualización de la cuarta versión de esta poderosa biblioteca JavaScript para el desarrollo de aplicaciones web interactivas.
Este nuevo lanzamiento a cargo del equipo de desarrollo de Ext JS representa un nuevo paso adelante en el rendimiento del framework además de añadir características y herramientas como SDK Tools Beta 3 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.haciendoweb.cult.cu/wp-content/uploads/2012/04/ext_js_logo_t1.png"><img class=" wp-image-7527 alignleft" title="ext_js_logo_t1" src="http://www.haciendoweb.cult.cu/wp-content/uploads/2012/04/ext_js_logo_t1.png" alt="" width="186" height="119" /></a><br />
Ext JS 4.1 es la primera actualización de la cuarta versión de esta poderosa biblioteca JavaScript para el desarrollo de aplicaciones web interactivas.</p>
<p>Este nuevo lanzamiento a cargo del equipo de desarrollo de Ext JS representa un nuevo paso adelante en el rendimiento del framework además de añadir características y herramientas como SDK Tools Beta 3 con los que mejorar nuestras aplicaciones web.</p>
<p><span id="more-7526"></span><br />
Aquellos que deseen conocer en detalle las caracteríticas de esta actualización de esta biblioteca JavaScript pueden acceder a <a target="_blank" href="http://www.sencha.com/blog/ext-js-4-1-final-released/" target="_blank">www.sencha.com/blog/ext-js-4-1-final-released</a>.</p>
<p>Interesados en la descarga de Ext JS 4.1 pueden acceder a <a target="_blank" href="http://www.sencha.com/products/extjs/download" target="_blank">www.sencha.com/extjs/download</a>.</p>
<p><strong>PD:</strong> Vamos hacer lo posible para poder brindar la descarga.</p>
<p>Fuente: <strong></strong><a target="_blank" href="http://www.desarrolloweb.com/actualidad/ext-js-4-1-disponible-6866.html" target="_blank">DesarrolloWeb</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.haciendoweb.cult.cu/ext-js-4-1-disponible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Usar geolocalización con Google Maps</title>
		<link>http://www.haciendoweb.cult.cu/usar-geolocalizacion-con-google-maps/</link>
		<comments>http://www.haciendoweb.cult.cu/usar-geolocalizacion-con-google-maps/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 03:08:02 +0000</pubDate>
		<dc:creator>Juan Pablo Pérez Manes</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Integración]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Códigos]]></category>
		<category><![CDATA[Google Maps]]></category>

		<guid isPermaLink="false">http://www.haciendoweb.cult.cu/?p=6965</guid>
		<description><![CDATA[Este tutorial muestra cómo usar la API de geolocalización combinada con la API de Google Maps para mostrar nuestra posición actual sobre un mapa con HTML5.
Nivel: Medio
¿Qué es la geolocalización?
Sin entrar en si forma parte o no de HTML5, podemos definir la geolocalización como una nueva API Javascript que nos permite conocer de forma fácil [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.haciendoweb.cult.cu/wp-content/uploads/2011/12/google-map-logo.jpg"><img class="alignleft size-thumbnail wp-image-3172" title="google map logo" src="http://www.haciendoweb.cult.cu/wp-content/uploads/2011/12/google-map-logo-e1322775590966-150x146.jpg" alt="google map logo" width="150" height="146" /></a>Este <span class="arti_link">tutorial</span> muestra cómo usar la <span class="arti_link">API de geolocalización</span> combinada con la <span class="arti_link">API de Google Maps</span> para mostrar nuestra posición actual sobre un mapa con <span class="arti_link">HTML5</span>.</p>
<p style="text-align: justify;">Nivel: <strong><span style="color: #c4a000;">Medio</span></strong></p>
<h2 style="text-align: justify;">¿Qué es la geolocalización?</h2>
<p style="text-align: justify;">Sin entrar en si <span class="arti_link">forma parte o no de HTML5</span>, podemos definir la geolocalización como una nueva API <span class="arti_link">Javascript</span> que nos permite conocer de forma fácil nuestras coordenadas desde un navegador.<img class="imgBlog" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////AAAAVcLTfgAAAAF0Uk5TAEDm2GYAAAAMSURBVHjaYmAACDAAAAIAAU9tWeEAAAAASUVORK5CYII=" alt="" border="0" data-src="http://l4c.me/uploads/geolocation-1333363169_full550.png" /><span id="more-6965"></span></p>
<h2>Conociendo nuestra posición</h2>
<p>Esta API destaca por lo fácil que es usarla. Por ejemplo:</p>
<pre class="brush: javascript; gutter: true">&lt;script&gt;
     function localizame() {
           navigator.geolocation.getCurrentPosition(coordenadas);
     }

     function coordenadas(){
           var latitud = position.coords.latitude;
           var longitud = position.coords.longitude;
     }
&lt;/script&gt;</pre>
<p>Con este código tan simple tenemos almacenados en las variables <em>latitud</em> y <em>longitud</em> <strong>la latitud y longitud de nuestra posición</strong></p>
<p><strong>Controlando errores</strong></p>
<p>Es posible que obtengamos algún tipo de error a la hora de usar esta API. El más común para los usuarios <em>desactualizados</em> (vamos, los que usen IE) es que el navegador no soporte geolocalización. En ese caso controlaremos:</p>
<pre class="brush: javascript; gutter: true">&lt;script&gt;
function localizame() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(coordenadas);
            }else{
                alert(&#039;Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!&#039;);
            }
}
&lt;/script&gt;</pre>
<p>Existen además otros errores relacionados con los permisos sobre privacidad del usuario, tiempo de espera, etc. Para ello crearemos una función sencilla que muestre un mensaje según el código de error, y la llamamos en la función <em>getCurrentPosition</em>:</p>
<pre class="brush: javascript; gutter: true">&lt;script&gt;
        function localizame() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(coordenadas, errores);
            }else{
                alert(&#039;Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!&#039;);
            }
        }

        function errores(err) {
            if (err.code == 0) {
              alert(&quot;Oops! Algo ha salido mal&quot;);
            }
            if (err.code == 1) {
              alert(&quot;Oops! No has aceptado compartir tu posición&quot;);
            }
            if (err.code == 2) {
              alert(&quot;Oops! No se puede obtener la posición actual&quot;);
            }
            if (err.code == 3) {
              alert(&quot;Oops! Hemos superado el tiempo de espera&quot;);
            }
        }
&lt;/script&gt;</pre>
<h2>Combinando la API de geolocalización con la API de Google Maps</h2>
<p>Veamos los pasos directamente sobre los comentarios del código:</p>
<pre class="brush: javascript; gutter: true">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Localizador&lt;/title&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.7.1.min.js&quot;&gt;&lt;/script&gt; /*Usamos JQuery*/
    &lt;style&gt;
        body{
            font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Arial, Verdana, sans-serif;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;header&gt;
        &lt;h1&gt;Localizador mediante HTML5&lt;/h1&gt;
    &lt;/header&gt;
    &lt;section&gt;
        &lt;article&gt;
            &lt;div id=&#039;map_canvas&#039; style=&#039;width:100%; height:400px;&#039;&gt;&lt;/div&gt;/*Esta capa hará de elemento contenedor del mapa*/
        &lt;/article&gt;
    &lt;/section&gt;

    &lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot;&gt;&lt;/script&gt; /*Cargamos la API de Google Maps*/

    &lt;script type=&quot;text/javascript&quot;&gt;
        var map;
        var latitud;
        var longitud;

        $(document).ready(function() {
            localizame(); /*Cuando cargue la página, cargamos nuestra posición*/
        });

        function localizame() {
            if (navigator.geolocation) { /* Si el navegador tiene geolocalizacion */
                navigator.geolocation.getCurrentPosition(coordenadas, errores);
            }else{
                alert(&#039;Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!&#039;);
            }
        }

        function coordenadas(position) {
            latitud = position.coords.latitude; /*Guardamos nuestra latitud*/
            longitud = position.coords.longitude; /*Guardamos nuestra longitud*/
            cargarMapa();
        }

        function errores(err) {
            /*Controlamos los posibles errores */
            if (err.code == 0) {
              alert(&quot;Oops! Algo ha salido mal&quot;);
            }
            if (err.code == 1) {
              alert(&quot;Oops! No has aceptado compartir tu posición&quot;);
            }
            if (err.code == 2) {
              alert(&quot;Oops! No se puede obtener la posición actual&quot;);
            }
            if (err.code == 3) {
              alert(&quot;Oops! Hemos superado el tiempo de espera&quot;);
            }
        }

        function cargarMapa() {
            var latlon = new google.maps.LatLng(latitud,longitud); /* Creamos un punto con nuestras coordenadas */
            var myOptions = {
                zoom: 17,
                center: latlon, /* Definimos la posicion del mapa con el punto */
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };/*Configuramos una serie de opciones como el zoom del mapa y el tipo.
            map = new google.maps.Map($(&quot;#map_canvas&quot;).get(0), myOptions); /*Creamos el mapa y lo situamos en su capa */

            var coorMarcador = new google.maps.LatLng(latitud,longitud); /Un nuevo punto con nuestras coordenadas para el marcador (flecha) */

            var marcador = new google.maps.Marker({
/*Creamos un marcador*/
                position: coorMarcador, /*Lo situamos en nuestro punto */
                map: map, /* Lo vinculamos a nuestro mapa */
                title: &quot;Dónde estoy?&quot;
            });
        }
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Fuente: <a target="_blank" title="Fuente" href="http://www.cristalab.com/tutoriales/usar-geolocalizacion-con-google-maps-c104949l/" target="_blank">Cristalab</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.haciendoweb.cult.cu/usar-geolocalizacion-con-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
