{"id":76010,"date":"2018-08-10T04:28:14","date_gmt":"2018-08-10T04:28:14","guid":{"rendered":"http:\/\/intro-scripts"},"modified":"2022-04-27T17:44:25","modified_gmt":"2022-04-27T17:44:25","slug":"intro-scripts","status":"publish","type":"post","link":"https:\/\/proyectos.comunicaciondigital.es\/en\/intro-scripts\/","title":{"rendered":"Utilizaci\u00f3n lenguajes script &#8211; Old"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">\u00bfA qu\u00e9 nos referimos con un script?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/uploads\/2022\/04\/guion-movies.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/uploads\/2022\/04\/guion-movies-1024x768.jpeg\" alt=\"\" class=\"wp-image-80275\" srcset=\"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/uploads\/2022\/04\/guion-movies-1024x768.jpeg 1024w, https:\/\/proyectos.comunicaciondigital.es\/wp-content\/uploads\/2022\/04\/guion-movies-980x735.jpeg 980w, https:\/\/proyectos.comunicaciondigital.es\/wp-content\/uploads\/2022\/04\/guion-movies-480x360.jpeg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/a><\/figure>\n\n\n\n<p>Cuando hablamos de un <strong>script<\/strong>, un guion o una secuencia de comandos es un peque\u00f1o (a veces no tanto) <strong>programa<\/strong> que sirve para \u00abrutinizar\u00bb o automatizar ciertas tareas, habitualmente repetitivas, que se precisan para que funcione un proyecto m\u00e1s complejo.<\/p>\n\n\n\n<p>En nuestro \u00e1mbito, nos interesan los scripts que permiten, como veremos, dotar de interactividad a visualizaciones de informaci\u00f3n o gestionar datos asociados a estas.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">\u00bfCon qu\u00e9 lenguajes programamos scripts?<\/h2>\n<\/div>\n\n\n\n<p>Existen numerosos lenguajes de script, tanto de lado cliente como del lado servidor (C, C++, Python, Java, Go&#8230;)<\/p>\n\n\n\n<p>En el <b>lado cliente<\/b>, Javascript es el lenguaje de script nativo de la web. <\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/779d2-js115338903-1545655782-45.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Su aprendizaje supone introducirse en un lenguaje de programaci\u00f3n, y aunque pueda parecer complicado de entrada, conocerlo un poco nos permite saber c\u00f3mo modificar c\u00f3digo ya escrito o realizar visualizaciones muy atractivas mediante el uso de librer\u00edas y APIs que se basan en Javascript.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/a6a38-js315338907-1545655833-90.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><b>\u00bfPara qu\u00e9 nos puede servir los lenguajes de script, y concretamente Javascript, en un proyecto period\u00edstico?<\/b><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Para tener unas nociones generales sobre la programaci\u00f3n con scripts.\n<\/li><li>Para saber c\u00f3mo funciona, de forma global, la interactividad en la manipulaci\u00f3n de datos y de las visualizaciones.\n<\/li><li>Para comprender el c\u00f3digo resultante de los sistemas de datos y visualizaci\u00f3n, y saber manipular determinados par\u00e1metros.\n<\/li><li>Para adentrarnos en la creaci\u00f3n de visualizaciones basadas en librer\u00edas JS como jQuery\n<\/li><li>Para hacer scraping de datos con Javascript (Jquery) o, como vais a ver posteriormente, con Phyton &nbsp;\n<\/li><\/ul>\n\n\n\n<p>En los ejemplos que vamos a ir viendo utilizaremos un editor de c\u00f3digo online, <a href=\"https:\/\/jsfiddle.net\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">JsFiddle.net<\/a>. Podr\u00e1s acceder a los ejemplos de forma directa a trav\u00e9s de objetos embebidos como este, en el que podr\u00e1s trabajar en las diferentes partes del c\u00f3digo accediendo a las diferentes pesta\u00f1as disponibles.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<figure class=\"wp-block-pullquote aligncenter\"><blockquote><p><b>Las cuestiones que vamos a tratar en esta sesi\u00f3n de introducci\u00f3n son conceptos generales que, aunque se ejemplifican con Javascript, son generales que nos sirven para la mayor\u00eda de los lenguajes de script y nos introducen en la siguiente sesi\u00f3n en la que empezar\u00e9is a trabajar con Phyton.<\/b><\/p><\/blockquote><\/figure>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Nociones b\u00e1sicas de JS<\/h2>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\n<span>\u00bfQu\u00e9 es?<\/span>\n<\/h2>\n\n\n\n<p>Un <b>lenguaje<\/b> de programaci\u00f3n <b>interpretado<\/b> por los navegadores en tiempo real.<\/p>\n\n\n\n<p><b>Ejercicio<\/b><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<i>Abre el editor de c\u00f3digo en <a href=\"https:\/\/jsfiddle.net\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">JSFiddle<\/a> con <a href=\"https:\/\/jsfiddle.net\/gertrudix\/k9mgd2hL\/2\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">el ejercicio<\/a>.<\/i>\n<\/li><li>\n<i>Revisa el c\u00f3digo html. F\u00edjate que el c\u00f3digo JS aparece en el fichero HTML. Prueba el resultado que produce el bot\u00f3n. \u00bfC\u00f3mo crees que funciona revisando el c\u00f3digo?<\/i>\n<\/li><\/ul>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfPara qu\u00e9 sirve?<\/h2>\n\n\n\n<p>Es un lenguaje que permite <b>dotar de interactividad<\/b> a las p\u00e1ginas web. Algunas de las tareas b\u00e1sicas que puede realizar son:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Escribir en HTML\n<\/li>\n<li>Reaccionar a eventos\n<\/li>\n<li>Modificar elementos HTML\n<\/li>\n<li>Validar entrada de datos\n<\/li>\n<li>Cambiar o modificar atributos\n<\/li>\n<\/ol>\n\n\n\n<p>Adem\u00e1s, mediante la <a href=\"http:\/\/html5index.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">API JS de HTML5 <\/a>podemos acceder a recursos adicionales: c\u00e1mara, almacenamiento de datos, creaci\u00f3n de gr\u00e1ficos, flujo de datos con servidores\u2026)<\/p>\n\n\n\n<p>Permite acceder a informaci\u00f3n en internet: por ejemplo, buscar y obtener las palabras m\u00e1s populares en Twitter de un tema, o para hacer scraping de web utilizando soluciones como <a href=\"https:\/\/scotch.io\/tutorials\/scraping-the-web-with-node-js\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Node.js<\/a>, <a href=\"https:\/\/medialab.github.io\/artoo\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Artoo.js<\/a>&nbsp;&nbsp;o <a href=\"http:\/\/nrabinowitz.github.io\/pjscrape\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">pjscrape<\/a>)<\/p>\n\n\n\n<p>Tambi\u00e9n permite organizar y presentar datos como, por ejemplo, automatizar el trabajo de las hojas de c\u00e1lculo; o la visualizaci\u00f3n de datos.<\/p>\n\n\n\n<p><b>Ejercicio<\/b><\/p>\n\n\n\n<p>Veamos c\u00f3mo JS aporta interactividad a una web,<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Accede a la web de <a href=\"https:\/\/civio.es\/espana-en-llamas\/mapa-de-incendios-forestales\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Espa\u00f1a en Llamas<\/a>. Navega por el mapa, usa los filtros, etc.\n<\/li>\n<li>Ahora deshabilita Javascript desde las <a href=\"https:\/\/es.ccm.net\/faq\/26408-como-desactivar-javascript-en-google-chrome\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">opciones del navegador<\/a> o usando alguna herramienta como <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/web-developer\/bfbameneiokkgbdmiekhjnmfkcnldhhm?hl=es\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">WebDevelopper Toolbar<\/a>. Comprueba qu\u00e9 sucede. \u00bfPuedes navegar el mapa? \u00bfCompartir en redes sociales?\n<\/li>\n<\/ol>\n\n\n\n<p>Veamos ahora un ejemplo del uso de javascript para <b>cambiar o modificar atributos<\/b> de html. Aqu\u00ed las posibilidades son muy amplias, dado que podemos modificar los valores de cualquier atributo, desde el color de un texto, el tipo de fuente, etc.<\/p>\n\n\n\n<p>En este ejemplo generamos un efecto de sustituci\u00f3n modificando el atributo src de una imagen.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tipos de datos<\/h2>\n\n\n\n<p>Javascript puede almacenar los siguientes <b>tipos de datos<\/b>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>string (cadenas)\n<\/li><li>number (n\u00fameros)\n<\/li><li>boolean (booleanos)\n<\/li><li>function (funciones)\n<\/li><li>array (arreglo)\n<\/li><li>object (objetos)\n<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d9cb9-js271533939-1545670552-13.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/f7ddb-js281533939-1545670566-69.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Variables<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 es una variable?<\/h3>\n\n\n\n<p>Una variable es un elemento que <b>contiene informaci\u00f3n <\/b>(datos) que puede ser ejecutada por el c\u00f3digo.<\/p>\n\n\n\n<p>Las variables sirven para <b>guardar<\/b> informaci\u00f3n que ser\u00e1 utilizada posteriormente.<\/p>\n\n\n\n<p>En <a href=\"https:\/\/jsfiddle.net\/gertrudix\/2gqf548z\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">este ejemplo<\/a> x se define como una variable. Luego, asignamos a x el valor de 6:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conceptos de POO<\/h2>\n\n\n\n<p>La <b>POO (Programaci\u00f3n Orientada a Objetos)<\/b> es un paradigma de programaci\u00f3n que permite optimizar los procesos de programaci\u00f3n y los resultados que se obtienen con ellos. Permite pre-dise\u00f1ar objetos que son almacenados en librer\u00edas o bibliotecas para que puedan ser reutilizados por los programas sin necesidad de tener que volver a escribir las funciones necesarias cada vez que se quiere hacer uso de ellas.<\/p>\n\n\n\n<p>Los elementos fundamentales de la POO incorporan un n\u00famero amplio de componentes (clase, herencia, objeto, m\u00e9todo..), pero nos centraremos solo en los que resultan fundamentales para manejarnos en el entorno de trabajo de un proyecto period\u00edstico<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Objetos\n<\/li><li>Eventos\n<\/li><li>Funciones\n<\/li><li>M\u00e9todos\n<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Objetos<\/h3>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d150f-js401533999-1545670778-26.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/ee556-js411533999-1545670794-86.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><b>Eventos<\/b><\/p>\n\n\n\n<p>Los eventos son <b>sucesos<\/b>, producidos normalmente por una acci\u00f3n del usuario, que <b>producen alg\u00fan efecto<\/b>. Por ejemplo, cuando un usuario pulsa un bot\u00f3n o hace clic sobre un enlace.<\/p>\n\n\n\n<p>Algunos de los eventos DOM m\u00e1s habituales son:<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/fae74-js421534000-1545670832-3.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><b>Funciones<\/b><\/p>\n\n\n\n<p>Todo evento lleva asociado, normalmente, una <b>funci\u00f3n<\/b>.<\/p>\n\n\n\n<p>Una funci\u00f3n es un <b>bloque de c\u00f3digo que puede ser ejecutado<\/b> cuando es llamada por un evento<\/p>\n\n\n\n<p>Son muy \u00fatiles porque es muy habitual reutilizar c\u00f3digo con diferentes argumentos a lo largo de un programa, por lo que podemos utilizar la funci\u00f3n sin tener que escribir de nuevo el c\u00f3digo, s\u00f3lo <b>invoc\u00e1ndola.<\/b><\/p>\n\n\n\n<p>Para <b>llamar a una funci\u00f3n<\/b> hay que invocarla en cualquier parte de la p\u00e1gina web.<\/p>\n\n\n\n<p>Cuando se invoca una funci\u00f3n, todo el c\u00f3digo que contenga entre <b>llaves {} <\/b>se ejecuta<\/p>\n\n\n\n<p>Para invocarla, basta con escribir su nombre seguido de par\u00e9ntesis<\/p>\n\n\n\n<p><b><i><a href=\"https:\/\/jsfiddle.net\/api\/post\/library\/pure\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Ejemplo con Google Maps<\/a><\/i><\/b>. En este caso, se utiliza la API de Google Maps para crear un mapa que agrupa (cluster) marcadores en funci\u00f3n del nivel de zoom.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/96056-screenshot2-1615149992-45.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Nota: <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/marker-clustering?hl=es-419\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Ver documentaci\u00f3n<\/a><\/p>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Librer\u00edas y APIs<\/h2>\n<\/div>\n\n\n\n<p>Estos dos conceptos est\u00e1n directamente vinculados.<\/p>\n\n\n\n<p>T\u00e9cnicamente una <a href=\"http:\/\/www.4rsoluciones.com\/blog\/framework-sdk-biblioteca-api-cuales-son-las-diferencias-2\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>librer\u00eda o biblioteca<\/b><\/a> (library) es una colecci\u00f3n de implementaciones de comportamiento, pero lo entenderemos mejor si decimos que es una larga lista de c\u00f3digo de programaci\u00f3n que incluye un amplio n\u00famero de funciones que podemos utilizar desde nuestro programa con un esfuerzo limitado.<\/p>\n\n\n\n<p>Por su parte, una <b><a href=\"http:\/\/blogginzenith.zenithmedia.es\/que-es-y-como-funciona-una-api-diczionario\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">API<\/a> (<i>Aplication Programming Interface<\/i>)<\/b> es una especificaci\u00f3n formal que permite comunicar componentes de software de dos sistemas distintos. Para entendernos, es una especie de \u201csubcontrataci\u00f3n\u201d de funciones.<\/p>\n\n\n\n<p>Una API es el libro de instrucciones que nos permite conocer c\u00f3mo trabajar con el <b>conjunto de funciones<\/b>, procedimientos y objetos contenidos en la librer\u00eda o biblioteca con la que vamos a trabajar.<\/p>\n\n\n\n<p>Como se\u00f1ala de forma gr\u00e1fica <a href=\"https:\/\/diegolaballos.com\/podcast\/49-que-son-las-librerias-y-las-apis\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Diego Ceballos<\/a>, en un ejemplo cotidiano, una cafetera Nespresso ser\u00eda una librer\u00eda para hacer caf\u00e9 de forma r\u00e1pida, y su libro de instrucciones ser\u00eda la API.<\/p>\n\n\n\n<p><b>API Keys<\/b><\/p>\n\n\n\n<p>Para usar una API normalmente se requiere una API Key de autenticaci\u00f3n para conectarse con el servicio. Ello permite establecer los l\u00edmites de cuota por Key y no por IP. Adem\u00e1s, esto permite comunicar al servicio con la aplicaci\u00f3n solicitante.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d157d-js511534010-1545671187-21.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Tipos de Librer\u00edas y APIs<\/h2>\n\n\n\n<p>Podemos clasificar las APIs en base a la funcionalidad que aportan. Siguiendo este criterio podemos considerar, desde el punto de vista de la utilidad en proyectos period\u00edsticos, las siguientes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Para crear mapas\n<\/li><li>Parar incorporar animaciones\n<\/li><li>Para desarrollar aplicaciones\n<\/li><li>Para acceder y manipular los elementos del DOM de forma sencilla\n<\/li><li>Para trabajar con im\u00e1genes y gr\u00e1ficos\n<\/li><li>Para visualizar datos\n<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/1aced-js52b153401-1545671231-47.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>En este enlace puede verse una <a href=\"http:\/\/socialcompare.com\/en\/comparison\/javascript-graphs-and-charts-libraries\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">amplia comparativa de librer\u00edas<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Google Maps API<\/h2>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Google Maps API<\/h2>\n\n\n\n<p>Vamos a adentrarnos en el uso de funciones. Para ello, vamos a trabajar con la <a href=\"https:\/\/developers.google.com\/maps\/showcase\/?hl=es-419\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">API de Google Maps<\/a> que es una amplia librer\u00eda dirigida a la creaci\u00f3n de complejas aplicaciones de mapas.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/f8059-js531534011-1545671419-4.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Crear un mapa simple incluyendo un marcador<\/h2>\n\n\n\n<p>La elaboraci\u00f3n de este mapa nos permitir\u00e1 comprender mejor c\u00f3mo operan las funciones.<\/p>\n\n\n\n<p>Vamos a elaborar un <a href=\"https:\/\/jsfiddle.net\/gertrudix\/m5fbzhde\/51\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>mapa sencillo en el que incluiremos un marcador<\/b><\/a>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<b>Creamos el c\u00f3digo html<\/b>. F\u00edjate que en el head se hace la llamada a la API. El par\u00e1metro callback ejecuta la funci\u00f3n initMap cuando se ha cargado la API. Los atributos async y defer permiten que se siga renderizando la p\u00e1gina mientras se carga la API. La key hace la llamada mediante la API Key para acceder al servicio.\n<\/li>\n<li>\n<b>Dibujamos el mapa y el marcador en el fichero JS<\/b>. Creamos una funci\u00f3n que inicializa y a\u00f1ade el mapa, con los siguientes elementos: a) Una variable que inicializamos con las coordenadas que centrar\u00e1n el mapa. b) Una variable que crea el objeto mapa, utiliza el m\u00e9todo getElemenById y le pasa dos propiedades: center y zoom (escala: cuanto m\u00e1s bajo, m\u00e1s general). Creamos una variable para incluir el marcador, inicializ\u00e1ndola con el objeto marcador, y dos propiedades: position y map\n<\/li>\n<\/ol>\n\n\n\n<p>En este enlace puedes ver el <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/adding-a-google-map\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">detalle explicado de todo el procedimiento<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Funciones avanzadas<\/h2>\n\n\n\n<p>Ya hemos visto muchas de las posibilidades que ofrece <a href=\"https:\/\/www.w3schools.com\/graphics\/google_maps_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google Maps API<\/a>.<\/p>\n\n\n\n<p>En este apartado, veremos algunas caracter\u00edsticas que nos pueden resultar \u00fatiles para la configuraci\u00f3n de nuestros mapas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Query Places<\/h3>\n\n\n\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/01e1e-js93-1534324999-95-1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>Query Places nos permite hacer una b\u00fasqueda automatizada de lugares. <\/p>\n\n\n\n<p>Con la librer\u00eda places podemos ubicar de forma autom\u00e1tica lugares en un mapa.<\/p>\n\n\n\n<p>A trav\u00e9s de los par\u00e1metros de b\u00fasqueda del m\u00e9todo <i><a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/places?hl=es-419\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">nearbySearch<\/a><\/i> podemos modificar la <i>query<\/i> que hace sobre los datos de places.<\/p>\n\n\n\n<p>Veamos <a href=\"https:\/\/jsfiddle.net\/gertrudix\/02uz6dzt\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">un ejemplo<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Se declaran las variables map e infowindow\n<\/li><li>Se inicializa el mapa mediante la funci\u00f3n\n<\/li><li>Se define el valor del infowindow a trav\u00e9s de la clase google.maps.InfoWindow\n<\/li><li>Se carga la biblioteca de sitios \u201cplaces\u201d, para el subconjunto PlacesService\n<\/li><li>Con el m\u00e9todo nearbySearch se localizan aquellos servicios que cumplan los requisitos indicados en los par\u00e1metros de la b\u00fasqueda\n<\/li><\/ul>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p>         <!--StartFragment-->Y aqu\u00ed <a href=\"https:\/\/jsfiddle.net\/02uz6dzt\/7\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">otro ejemplo ampliando la informaci\u00f3n<\/a> del infowindow: <!--EndFragment--><\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Gmaps.js<\/h2>\n\n\n\n<p>Si trabajar directamente con la API de Google Maps te resulta complejo, <a href=\"https:\/\/hpneo.github.io\/gmaps\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Gmaps.js<\/a> es una librer\u00eda desarrollada para simplificar el trabajo con la API.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">JSON y GeoJSON<\/h2>\n<\/div>\n\n\n\n<p>JSON es el acr\u00f3nimo de <b>J<\/b>avaScript <b>O<\/b>bject <b>N<\/b>otation.<\/p>\n\n\n\n<p>Es un lenguaje independiente con una sintaxis basada en Javascript para <i>almacenamiento e intercambio de datos.<\/i><\/p>\n\n\n\n<p>Se utiliza en aplicaciones AJAX y es una alternativa a XML <b>m\u00e1s sencilla<\/b> de usar.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/3876d-js761534177-1545671802-32.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfPor qu\u00e9 nos interesa JSON?<\/h2>\n\n\n\n<p>JSON resulta relevante por:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Es la respuesta de datos que devuelven la mayor\u00eda de las APIs web&nbsp;&nbsp;\n<\/li><li>Muchos portales de datos abiertos ofrecen la informaci\u00f3n en este formato\n<\/li><li>Porque facilita la integraci\u00f3n y visualizaci\u00f3n de informaci\u00f3n\n<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/872b6-js791534177-1545671837-68.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>En <a href=\"https:\/\/jsfiddle.net\/gertrudix\/ojwofxh6\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">este ejemplo<\/a> vemos c\u00f3mo creamos un objeto JSON en Javascript.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">GeoJSON<\/h2>\n\n\n\n<p><a href=\"https:\/\/tools.ietf.org\/html\/rfc7946\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">GeoJSON<\/a> es un formato para el intercambio de <b>datos geoespaciales<\/b> <i>basado en JSON<\/i>.<\/p>\n\n\n\n<p>Permite informar <b>diferentes tipos de geometr\u00edas<\/b>: puntos, multipuntos, l\u00edneas, multil\u00edneas, pol\u00edgonos, m\u00faltiples pol\u00edgonos, y colecciones de geometr\u00edas&nbsp;&nbsp;<\/p>\n\n\n\n<p><b>Uso de GeoJSON para cargar datos masivos<\/b><\/p>\n\n\n\n<p>Vamos a trabajar con ejemplo de un mapa creado con la API de Google Maps. Vamos a <b>cargar ficheros GeoJSON <\/b>con miles de datos<b> <\/b>y customizar los resultados del mapa convirtiendo los marcadores en c\u00edrculos.<\/p>\n\n\n\n<p>Los datos los obtenemos, para este ejemplo, del sistema de feeds del USGS que ofrece datos en varios formatos, entre ellos GeoJSON, sobre diferentes <a href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/geojson.php\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">sucesos naturales, en este caso, terremotos<\/a>.<\/p>\n\n\n\n<p>Como su sistema no permite directamente hacer llamadas de manera gratuita, tenemos que descargarnos el fichero que queramos y <a href=\"https:\/\/proyectos.comunicaciondigital.es\/files\/md\/demo2_GeoJSONP.js\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">ubicarlo en servidor propio<\/a>.<\/p>\n\n\n\n<p>Una vez que tenemos el fichero en nuestro servidor, con una URL p\u00fablica, podemos cargarlo y <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/earthquakes\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">customizar el mapa<\/a> obteniendo <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/earthquakes#\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">este resultado<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/06895-screenshot2-1615157292-46.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Uso de JSON para personalizar mapas<\/h2>\n\n\n\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/06a5c-js831534196-1545672020-68.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>Otra de las utilidades de JSON es la personalizaci\u00f3n de estilos. La API de Google Maps facilita un c<a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/styling?hl=es-419#styling_the_default_ma\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">ompleto sistema de estilos para customizar<\/a> el mapa a voluntad, algo que con otras soluciones de Google como Mymaps es m\u00e1s limitada<\/p>\n\n\n\n<p><b>Asistente de mapa de Google Maps<\/b><\/p>\n\n\n\n<p>En todo caso, configurar estilos complejos creando escribiendo directamente el c\u00f3digo de los estilos lleva tiempo. As\u00ed que muchas veces lo m\u00e1s eficaz es usar el <a href=\"https:\/\/mapstyle.withgoogle.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>asistente de estilos de mapa<\/b><\/a> de la API de Google Maps.<\/p>\n\n\n\n<p>Los <a href=\"https:\/\/jsfiddle.net\/gertrudix\/43eezm2s\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">pasos para hacerlo<\/a> son:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<a href=\"https:\/\/mapstyle.withgoogle.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Accedemos al asistente<\/a>.\u00a0 \u00a0\n<\/li>\n<li>Configuramos el estilo bien con las features b\u00e1sicas, bien con las avanzadas que nos permiten modificar y acceder a cualquiera de las funciones y par\u00e1metros de estilo.\n<\/li>\n<li>Finalizamos el estilo y copiamos el codigo JSON del array de estilos (ser\u00e1 muy largo)\n<\/li>\n<li>Vamos en el mapa al objeto google.maps.StyledMapType y copiamos el array con todo el contenido entre [ ] incluidos estos.\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">LeafLeft<\/h2>\n<\/div>\n\n\n\n<p><a href=\"http:\/\/leafletjs.com\/examples.html\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Leaflet<\/a> es una librer\u00eda especializada para la creaci\u00f3n de <b>mapas interactivos.<\/b><!--EndFragment--><\/p>\n\n\n\n<p>Tiene una amplia <a href=\"http:\/\/leafletjs.com\/reference-1.3.0.html\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">documentaci\u00f3n<\/a> y una <a href=\"https:\/\/www.mapbox.com\/api-documentation\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">galer\u00eda de estilos de mapa<\/a> (basados en Mapbox) para comenzar a trabajar r\u00e1pidamente con ella.<\/p>\n\n\n\n<p>Como toda librer\u00eda basada en JS, utiliza la base de este, pero simplifica la sintaxis para hacer m\u00e1s sencillo y \u00e1gil el desarrollo de los mapas.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/3ec3d-js94-1534325590-81-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>Vamos a crear un <a href=\"https:\/\/jsfiddle.net\/gertrudix\/b4kaptvm\/33\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">mapa b\u00e1sico con LeafleftJs<\/a>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>En el head de html, enlazamos la hoja de estilo de Leaftletjs y, detr\u00e1s, ponemos despu\u00e9s el enlace al js de Leaftletjs. <\/li>\n<li>En css Le damos un alto al div que contiene el mapa a trav\u00e9s del id <\/li>\n<li>En Js creamos el mapa y le asignamos las coordenadas decimales y el nivel de zoom <\/li>\n<li>Cargamos una capa de mapa (tile layer) desde Mapbox. Necesitaremos incluir el accessToken de mapbox. Si no tenemos uno, tendremos que crearlo (En id podemos incluir cualquiera de los <a href=\"https:\/\/www.mapbox.com\/api-documentation\/#maps\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">estilos de mapa base disponibles en Mapxbox<\/a>) <\/li>\n<li>Creamos un marcador <\/li>\n<li>Creamos un c\u00edrculo <\/li>\n<li>Creamos dos popup sobre el marcador y el c\u00edrculo <\/li>\n<li>Creamos una funci\u00f3n\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p>En este <a href=\"https:\/\/jsfiddle.net\/gertrudix\/ps04off3\/6\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">otro mapa<\/a>, sobre la base del anterior hemos incorporado un <a href=\"http:\/\/leafletjs.com\/examples\/custom-icons\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">marcador personalizado usando las opciones que LeafLeft<\/a> tiene para ello.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Mapbox<\/h2>\n<\/div>\n\n\n\n<p><a href=\"https:\/\/www.mapbox.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Mapbox<\/a> es otra estupenda librer\u00eda para crear mapas. De hecho, tiene su propio sistema de mapas que es usado por otras librer\u00edas como base, tal como sucede como LeafLeft. <\/p>\n\n\n\n<p>Ofrece una <a href=\"https:\/\/www.mapbox.com\/mapbox-gl-js\/example\/heatmap-layer\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">documentaci\u00f3n muy amplia<\/a> lo que facilita trabajar con ella.<\/p>\n\n\n\n<p>De manera similar a lo que sucede con Google Maps, existe la posibilidad de <a href=\"https:\/\/www.mapbox.com\/mapbox.js\/api\/v2.2.4\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">trabajar directamente con la API<\/a> o hacerlo mediante el <a href=\"https:\/\/www.mapbox.com\/studio\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">editor de mapas (studio)<\/a>. Esto \u00faltimo simplifica a\u00fan m\u00e1s el desarrollo dado que, adem\u00e1s, luego podremos customizar o personalizar elementos accediendo al c\u00f3digo resultante.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/c5f6e-js95-1534326229-4-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>Una de las aportaciones interesantes de esta librer\u00eda es que dispone de numerosos efectos que pueden darle un aspecto diferente a nuestras visualizaciones en mapas. La documentaci\u00f3n de la API incluye muchas, pero destacaremos aqu\u00ed algunas de ellas:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplos de mapas que podemos crear<\/h3>\n\n\n\n<p>En este <a href=\"https:\/\/docs.mapbox.com\/mapbox-gl-js\/example\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">apartado de la documentaci\u00f3n<\/a> podemos revisar todas las posibilidades que ofrece esta librer\u00eda.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/13c5f-screenshot2-1615159923-41.png\" alt=\"\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">ArcGIS online<\/h2>\n<\/div>\n\n\n\n<p>ArcGIS online es una completa suite de aplicaciones y APIs. Dispone de un <a href=\"http:\/\/www.arcgis.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Gestor web<\/a> y de <a href=\"https:\/\/developers.arcgis.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">numerosas APIs <\/a>para interactuar y adaptar los resultados.<!--EndFragment--><\/p>\n\n\n\n<p>En este enlace puedes acceder a un <a href=\"https:\/\/manuelgertrudix.atavist.com\/3b-mapas-interactivos-arcgis\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">tutorial b\u00e1sico para empezar a crear mapas<\/a> 2D.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/95254-js96-1534326756-87-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>Un aspecto diferencial de esta soluci\u00f3n, es que ofrece un editor de <b>escenas<\/b>. Esto facilita un modo de crear escenas 3D sobre la representaci\u00f3n de la esfera terrestre, como en este ejemplo:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p>O sobre zonas concretas en las que pueden incluirse capas como edificios, etc:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Google Chart<\/h2>\n<\/div>\n\n\n\n<p><b><a href=\"https:\/\/developers.google.com\/chart\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google Chart<\/a><\/b> es una librer\u00eda orientada a la creaci\u00f3n de una <a href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">amplia variedad de gr\u00e1ficos din\u00e1micos<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-image aligncenter\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d8dec-js101-1534329572-30-1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de Chart b\u00e1sicos<\/h2>\n\n\n\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/241ad-js99-1534327681-91-1.png\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>La creaci\u00f3n de Chart requiere&nbsp; que los datos sean incluidos mediante una clase de JavaScript: <i>google.visualization.DataTable<\/i> <\/p>\n\n\n\n<p>La clase est\u00e1 definida en la librer\u00eda de visualizaci\u00f3n de Google.<\/p>\n\n\n\n<p>La tabla de datos corresponde a una tabla similar a esta.<!--EndFragment--><\/p>\n\n\n\n<p>Veamos los pasos para crear <a href=\"https:\/\/jsfiddle.net\/gertrudix\/9uyzyxoe\/7\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">nuestro primer ejemplo<\/a>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Cargamos la API de visualizaci\u00f3n del paquete que nos interesa, en este caso \u201ccorechart\u201d\n<\/li>\n<li>Establecemos el callback para que se ejecute la funci\u00f3n cuando se haya cargado la API de visualizaci\u00f3n de Google y no antes\n<\/li>\n<li>La devoluci\u00f3n de llamada que crea y rellena una tabla de datos, crea una instancia del gr\u00e1fico circular, pasa los datos y los dibuja.\n<\/li>\n<li>Creamos la tabla de datos\n<\/li>\n<li>Configuramos las opciones del chart\n<\/li>\n<li>Instanciamos y dibujamos el chart pas\u00e1ndole la configuraci\u00f3n de las opciones\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Personalizaci\u00f3n del Chart<\/h2>\n\n\n\n<p>Para cada Chart <a href=\"https:\/\/jsfiddle.net\/gertrudix\/9uyzyxoe\/5\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">podemos personalizar<\/a> diferentes elementos como: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>T\u00edtulo, Color, grosor de l\u00ednea, relleno de fondo, etc.\n<\/li><li>Incluir elementos: t\u00edtulos de los ejes, etc.\n<\/li><\/ul>\n\n\n\n<p>Las opciones se presentan como pares <i><b>name.value<\/b><\/i> <\/p>\n\n\n\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/1dc76-js100-1534327964-91-1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Las opciones pasan los valores al chart mediante el m\u00e9todo <i>draw()<\/i>&nbsp;&nbsp;<\/li><li>Cada chart posee los pares adecuados para la customizaci\u00f3n de ese tipo de visualizaci\u00f3n\n<\/li><\/ul>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\">\n\n\n<p class=\"has-small-font-size\">En este ejemplo vemos un Pie Chart en el que se han establecido las siguientes opciones: Ancho y alto  \u2022T\u00edtulo  \u2022Colores con un array de hexadecimales  \u2022is3D, para dar el aspecto 3D&nbsp;&nbsp;<\/p>\n<\/div>\n\n\n\n<p>Las <a href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/customizing_charts\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">opciones de customizaci\u00f3n son muy variadas<\/a>, lo que permite, y esta es su principal ventaja, adaptar los gr\u00e1ficos al estilo visual de nuestro proyecto.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\">\n\n\n<p class=\"has-small-font-size\">En este se modifican los atributos color, pieHole<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\">\n\n\n<p class=\"has-small-font-size\">Y en este otro: slices, pieHole, is3D&#8230;<\/p>\n<\/div>\n\n\n\n<p>Otra de las opciones es incluir HTML en los tootilps:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p>O incluir otros Charts dentro de los tooltips:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Combo Charts<\/h3>\n\n\n\n<p>Podemos tambi\u00e9n crear charts agrupados, lo que se conoce como Combo Charts. En este caso, vemos dos ejemplos: en el primero los resultados de dos procesos electorales sin customizar, y el segundo, en el que e incluyen los resultados de unas terceras elecciones, y se customizan algunos elementos.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Google Public Data Explorer<\/h2>\n\n\n\n<p>Aunque no pertenece a la API de Google Chart, <a href=\"https:\/\/www.google.com\/publicdata\/directory\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google Public Data Explorer<\/a> es una interesante herramienta de Google que permite elaborar gr\u00e1ficos sencillos de forma r\u00e1pida, utilizando los datos p\u00fablicos abiertos ya cargados por las principales entidades internacionales (Eurostat, US. Census Bureau, Data.gob.uk, Banco Mundial&#8230;) o nacionales (INE&#8230;)<\/p>\n\n\n\n<p>Mediante un sistema de filtros se pueden crear visualizaciones tanto para realizar an\u00e1lisis como para crear gr\u00e1ficos que se vayan a insertar posteriormente en nuestro reportaje o web.<\/p>\n\n\n\n<p>         <!--StartFragment-->Tambi\u00e9n es posible <a href=\"http:\/\/www.google.com\/publicdata\/admin\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">cargar set de datos<\/a> propios en formato GPDE.<!--EndFragment--><\/p>\n\n\n\n<p>En este ejemplo, se usan datos del Banco Mundial para comparar la <a href=\"https:\/\/www.google.com\/publicdata\/explore?ds=d5bncppjof8f9_&amp;ctype=l&amp;strail=false&amp;bcs=d&amp;nselm=h&amp;met_y=children_out_of_school&amp;fdim_y=education_level:2&amp;scale_y=lin&amp;ind_y=false&amp;rdim=region&amp;idim=region:EAS:ECS:LCN:MEA:SSF:SAS:NAC&amp;ifdim=region&amp;hl=en_US&amp;dl=en_US&amp;ind=false\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">evoluci\u00f3n de la ratio de ni\u00f1os y ni\u00f1as fuera de la escuela<\/a> por regiones mundiales:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\">\n[googlemaps https:\/\/www.google.com\/publicdata\/embed?ds=d5bncppjof8f9_&amp;ctype=l&amp;strail=false&amp;bcs=d&amp;nselm=h&amp;met_y=children_out_of_school&amp;fdim_y=education_level:2&amp;scale_y=lin&amp;ind_y=false&amp;rdim=region&amp;idim=region:EAS:ECS:LCN:MEA:SSF:SAS:NAC&amp;ifdim=region&amp;hl=en_US&amp;dl=en_US&amp;ind=false&amp;w=100%&amp;h=450]\n<\/div>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Librer\u00edas DataViz (Datos)<\/h2>\n<\/div>\n\n\n\n<p>Existen muchas alternativas actualmente para la visualizaci\u00f3n de datos. Muchas de las librer\u00edas tienen su propia sintaxis, basada o derivada de JS. La ventaja de disponer de esta variedad es que podemos tener un cat\u00e1logo muy amplio de soluciones que permitan elegir la mejor opci\u00f3n para cada caso e ir introduciendo cierta variedad en nuestros proyectos.<\/p>\n\n\n\n<p>Revisamos, a continuaci\u00f3n, algunas de las soluciones disponibles. Aunque no se entra en su detalle, permite hacerse una idea de las numerosas posibilidades existentes para continuar explorando por nuestra cuenta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D3.js<\/h2>\n\n\n\n<p><a href=\"https:\/\/d3js.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">D3.js<\/a> es una librer\u00eda JS para manipular documentos basados en datos. Se utiliza para realizar <a href=\"http:\/\/bl.ocks.org\/mbostock\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">visualizaciones complejas<\/a>. Cuenta con una <a href=\"https:\/\/github.com\/d3\/d3\/wiki\/Gallery\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">amplia galer\u00eda de visualizaciones<\/a>.<\/p>\n\n\n\n<p>Algunos ejemplos interesantes aplicados de esta librer\u00eda:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<a href=\"http:\/\/www.nytimes.com\/interactive\/2013\/04\/08\/business\/global\/asia-map.html?_r=0\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">China manufacture<\/a> <\/li><li>\n<a href=\"http:\/\/projects.flowingdata.com\/tut\/interactive_network_demo\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Similar song Networks<\/a>\n<\/li><\/ul>\n\n\n\n<p>En este enlace puedes seguir un <a href=\"https:\/\/github.com\/mbostock\/d3\/wiki\/Tutorials\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">tutorial de esta librer\u00eda D3.js<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Funcionalidad<\/h3>\n\n\n\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/4fa31-js102-1534330105-37-1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>Permite obtener datos de cualquier elemento del DOM y aplicarle transformaciones en el documento. <\/p>\n\n\n\n<p>Sobre un mismo conjunto de datos permite realizar varias transformaciones. Por ejemplo, sobre un array podemos: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Crear una tabla <\/li><li>Generar un gr\u00e1fico interactivo en SVG\n<\/li><\/ul>\n\n\n\n<p>Y de una manera muy flexible y r\u00e1pida.&nbsp;&nbsp;<!--EndFragment--><\/p>\n\n\n\n<p><b>Sintaxis<\/b><\/p>\n\n\n\n<p>         <!--StartFragment-->Utiliza una sintaxis simplificada de JS para acceder a los selectores del DOM: <a href=\"http:\/\/www.w3.org\/TR\/selectors-api\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">W3C Selectors API <\/a><!--EndFragment--><\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/b8387-js103-1534330184-87-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p><b>Ejemplos<\/b><\/p>\n\n\n\n<p>En este primer ejemplo vemos un Diagrama de acorde, documentado en DJ3 (<a href=\"https:\/\/bl.ocks.org\/mbostock\/4062006\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">podemos reutilizar el c\u00f3digo<\/a>). En este caso, hemos reutizado el c\u00f3digo y lo hemos adaptado para crear esta versi\u00f3n sobre el <a href=\"http:\/\/comunicaciondigital.es\/files\/clases\/deuda.html\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">flujo de deuda entre pa\u00edses<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/c0a80-js104-1534330990-5-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>El funcionamiento de las visualizaciones b\u00e1sicas es relativamente sencillo. Los datos se cargan en ficheros .csv que se llaman desde el html para cargarlos en la visualizaci\u00f3n. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ZinkChart<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.zingchart.com\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">ZinkChart<\/a> es otra librer\u00eda interesante. Orientada a gr\u00e1ficos habituales (l\u00edneas, histogramas, sectores, etc.) ofrece un muy buen resultado visual, incluyendo animaci\u00f3n de los elementos y la incorporaci\u00f3n de elementos gr\u00e1ficos a\u00f1adidos que dan un aspecto muy completo.<\/p>\n\n\n\n<p><b><a href=\"https:\/\/jsfiddle.net\/gertrudix\/0r19fxh3\/11\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Ejemplo: Barras <\/a><\/b><\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p><a href=\"https:\/\/jsfiddle.net\/gertrudix\/4tkcmhst\/1\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>Ejemplo. L\u00edneas<\/b><\/a><\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/www.amcharts.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">AmCharts<\/a><\/h2>\n\n\n\n<p>  <!--EndFragment-->    <a href=\"https:\/\/www.amcharts.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">AmCharts<\/a> es otra buena librer\u00eda para crear <a href=\"https:\/\/www.amcharts.com\/demos\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">gr\u00e1ficos<\/a> y <a href=\"https:\/\/www.amcharts.com\/demos\/#javascript-maps\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">mapas<\/a>. Puede descargarse, enlazarse o trabajar con el editor <a href=\"https:\/\/live.amcharts.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">online live AmCharts<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/ada9b-js105-1534346475-8-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p><b>Ejemplo de mapa<\/b><\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p><b>Ejemplo de gr\u00e1fico<\/b><\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Highcharts<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.highcharts.com\/demo\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Highcharts<\/a> es una buena librer\u00eda de gr\u00e1ficos interactivos que cuenta tambi\u00e9n con una <a href=\"https:\/\/cloud.highcharts.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">versi\u00f3n de creaci\u00f3n online<\/a>. Est\u00e1 muy orientada a gr\u00e1ficos de l\u00ednea, columnas, barras para informaci\u00f3n econ\u00f3mica. <\/p>\n\n\n\n<p>En el editor online permite la carga de los datos en csv, lo que facilita la gesti\u00f3n de estos para la preparaci\u00f3n del gr\u00e1fico.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">AnyCharts<\/h2>\n\n\n\n<p><a href=\"http:\/\/www.anychart.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">AnyChart.JS<\/a> es una completa librer\u00eda para el desarrollo de: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anychart\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Charts<\/a> <\/li><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anystock\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Stocks<\/a> <\/li><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anymap\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Maps<\/a> <\/li><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anygantt\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Gantt<\/a>\n<\/li><\/ul>\n\n\n\n<p>Permite hacer algunas representaciones bastante singulares y diferentes, por lo que es una buena opci\u00f3n cuando se busca salirse de lo habitual.<\/p>\n\n\n\n<p>Este gr\u00e1fico es un buen ejemplo:<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p>Tambi\u00e9n resulta \u00fatil para generar <a href=\"http:\/\/jsbin.com\/yoruro\/1\/edit?html,css,js,output\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>paneles de gr\u00e1ficos, en formato dashboard.<\/b><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Otras librer\u00edas<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Chart.js<\/h3>\n\n\n\n<p><a href=\"http:\/\/www.chartjs.org\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Chart.js<\/a> pertenece al grupo de librer\u00edas ligeras. No permite hacer muchas cosas, pero las visualizaciones de gr\u00e1ficas que hace son muy limpias y ligeras.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sigma.js<\/h3>\n\n\n\n<p><a href=\"http:\/\/sigmajs.org\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Sigma.JS<\/a> es una librer\u00eda para crear dibujo gr\u00e1fico, y est\u00e1 especializado en creaci\u00f3n de gr\u00e1ficos de redes.<!--EndFragment--><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Listados de librer\u00edas<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.javascripting.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Javascripting<\/a> es un directorio de librer\u00edas que colecta cientos de soluciones para problemas muy diversos basados en javascript.<\/p>\n\n\n\n<div class=\"wp-block-image aligncenter\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/f2d90-js106-1534350072-69-1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Librer\u00edas Mapas<\/h2>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Cesium.js<\/h2>\n\n\n\n<p><a href=\"https:\/\/cesiumjs.org\/about\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">CesiumJS<\/a> es una potente biblioteca de JavaScript de c\u00f3digo abierto para crear mapas y globlos terr\u00e1queos 3D de nivel internacional. Permite crear mapas tanto est\u00e1ticos como din\u00e1micos, y con la posibilidad de incluir l\u00edneas temporales que muestren la evoluci\u00f3n de un fen\u00f3meno. <\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<p>Tambi\u00e9n permite levantar edificios sobre superficies.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\">\n\n\n<p class=\"has-small-font-size\"><a href=\"http:\/\/cesiumjs.org\/NewYork\" class=\"regular-link\" target=\"_blank\" rel=\"noopener\">&nbsp;New York 3D Tiles<\/a><a href=\"http:\/\/cesiumjs.org\/NewYork\" class=\"regular-link\" target=\"_blank\" rel=\"noopener\">See over 1.1 million OpenStreetMap buildings in New York City.<\/a><br><\/p>\n<\/div>\n\n\n\n<p><b>Cesium ion!<\/b><\/p>\n\n\n\n<p><a href=\"https:\/\/cesium.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Cesium tambi\u00e9n dispone de una versi\u00f3n de escritorio<\/a> que incluye algunas de las principales funciones de la librer\u00eda.<\/p>\n\n\n\n<p>Dispone de un <a href=\"https:\/\/cesiumjs.org\/tutorials\/cesium-up-and-running\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">completo tutorial<\/a> para conocer c\u00f3mo trabajar con ella.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OpenLayers<\/h2>\n\n\n\n<p><a href=\"http:\/\/openlayers.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">OpenLayers<\/a> facilita la creaci\u00f3n de mapas din\u00e1micos en cualquier p\u00e1gina web. Puede mostrar mosaicos de mapas, datos vectoriales y marcadores cargados desde cualquier fuente. OpenLayers ha sido desarrollado para promover el uso de informaci\u00f3n geogr\u00e1fica de todo tipo. <\/p>\n\n\n\n<p>Dispone, tambi\u00e9n, de un <a href=\"http:\/\/openlayers.org\/en\/latest\/doc\/tutorials\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">tutorial<\/a>, y una <a href=\"http:\/\/openlayers.org\/en\/latest\/examples\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">librer\u00eda de ejemplos<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-group atavist-embed is-layout-flow wp-block-group-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-group atavist-title-design cover-text-simple is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2 wp-block-heading\">Utilidades<\/h2>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\n<span>Datos cartogr\u00e1ficos<\/span>\n<\/h2>\n\n\n\n<p><a href=\"http:\/\/www.gadm.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Global Administrative Areas<\/a> contiene un amplio bancos de ficheros de shapefiles: KML, vectoriales\u2026 gratuitos de la mayor\u00eda de los pa\u00edses del mundo, hasta cuatro niveles administrativos: pa\u00eds, regi\u00f3n, provincia y localidad.<!--EndFragment--><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Librer\u00edas pictogr\u00e1ficas<\/h2>\n\n\n\n<p>Las librer\u00edas pictogr\u00e1ficas web son colecciones de iconos que pueden cargarse v\u00eda web en nuestro proyecto mediante un enlace.  \u2022Las tres principales son: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<a href=\"http:\/\/www.w3schools.com\/icons\/fontawesome_icons_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Font Awesome Icons<\/a>. Es una colecci\u00f3n libre de m\u00e1s de 600 iconos. Permite control CSS, sin manejo de JS. <\/li><li>\n<a href=\"http:\/\/www.w3schools.com\/icons\/bootstrap_icons_glyphicons.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Bootstrap<\/a><a href=\"http:\/\/www.w3schools.com\/icons\/bootstrap_icons_glyphicons.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"> <\/a><a href=\"http:\/\/www.w3schools.com\/icons\/bootstrap_icons_glyphicons.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Icons<\/a>\n<\/li><li>\n<a href=\"http:\/\/www.w3schools.com\/icons\/google_icons_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google <\/a><a href=\"http:\/\/www.w3schools.com\/icons\/google_icons_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Icons<\/a>\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Tutoriales<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<a href=\"https:\/\/datavizcatalogue.com\/ES\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Cat\u00e1logo de visualizaci\u00f3n de datos<\/a>. Extraordinario tutorial visual sobre las mejores formas para visualizar los datos.\n<\/li><li>\n<a href=\"https:\/\/visual.ly\/blog\/wp-content\/uploads\/2014\/09\/image-6.png\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">The Graphic continuum<\/a>.<\/li><\/ul>\n<div class=\"pdfprnt-buttons pdfprnt-buttons-post pdfprnt-bottom-right\"><a href=\"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/posts\/76010?print=pdf\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_blank\" ><img decoding=\"async\" src=\"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"View PDF\" \/><span class=\"pdfprnt-button-title pdfprnt-button-pdf-title\">Versi\u00f3n en PDF<\/span><\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>\u00bfA qu\u00e9 nos referimos con un script? Cuando hablamos de un script, un guion o una secuencia de comandos es un peque\u00f1o (a veces no tanto) programa que sirve para \u00abrutinizar\u00bb o automatizar ciertas tareas, habitualmente repetitivas, que se precisan para que funcione un proyecto m\u00e1s complejo. En nuestro \u00e1mbito, nos interesan los scripts que&hellip; <a class=\"continue\" href=\"https:\/\/proyectos.comunicaciondigital.es\/en\/intro-scripts\/\">Continua leyendo<span> Utilizaci\u00f3n lenguajes script &#8211; Old<\/span><\/a><\/p>","protected":false},"author":4,"featured_media":76011,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Introducci\u00f3n<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Existen numerosos lenguajes de script, tanto de lado cliente como del lado servidor (C, C++, Python, Java, Go...)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En el <b>lado cliente<\/b>, Javascript es el lenguaje de script nativo de la web. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/779d2-js115338903-1545655782-45.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Su aprendizaje supone introducirse en un lenguaje de programaci\u00f3n, y aunque pueda parecer complicado de entrada, conocerlo un poco nos permite saber c\u00f3mo modificar c\u00f3digo ya escrito o realizar visualizaciones muy atractivas mediante el uso de librer\u00edas y APIs que se basan en Javascript.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/a6a38-js315338907-1545655833-90.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><b>\u00bfPara qu\u00e9 nos puede servir los lenguajes de script, y concretamente Javascript, en un proyecto period\u00edstico?<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Para tener unas nociones generales sobre la programaci\u00f3n con scripts.\n<\/li><li>Para saber c\u00f3mo funciona, de forma global, la interactividad en la manipulaci\u00f3n de datos y de las visualizaciones.\n<\/li><li>Para comprender el c\u00f3digo resultante de los sistemas de datos y visualizaci\u00f3n, y saber manipular determinados par\u00e1metros.\n<\/li><li>Para adentrarnos en la creaci\u00f3n de visualizaciones basadas en librer\u00edas JS como jQuery\n<\/li><li>Para hacer scraping de datos con Javascript (Jquery) o, como vais a ver posteriormente, con Phyton &nbsp;\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>En los ejemplos que vamos a ir viendo utilizaremos un editor de c\u00f3digo online, <a href=\"https:\/\/jsfiddle.net\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">JsFiddle.net<\/a>. Podr\u00e1s acceder a los ejemplos de forma directa a trav\u00e9s de objetos embebidos como este, en el que podr\u00e1s trabajar en las diferentes partes del c\u00f3digo accediendo a las diferentes pesta\u00f1as disponibles.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:pullquote {\"align\":\"center\",\"className\":\"wp-block-pullquote aligncenter\"} -->\n<figure class=\"wp-block-pullquote aligncenter\"><blockquote><p><b>Las cuestiones que vamos a tratar en esta sesi\u00f3n de introducci\u00f3n son conceptos generales que, aunque se ejemplifican con Javascript, son generales que nos sirven para la mayor\u00eda de los lenguajes de script y nos introducen en la siguiente sesi\u00f3n en la que empezar\u00e9is a trabajar con Phyton.<\/b><\/p><\/blockquote><\/figure>\n<!-- \/wp:pullquote -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Nociones b\u00e1sicas de JS<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>\n<span>\u00bfQu\u00e9 es?<\/span>\n<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Un <b>lenguaje<\/b> de programaci\u00f3n <b>interpretado<\/b> por los navegadores en tiempo real.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b>Ejercicio<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>\n<i>Abre el editor de c\u00f3digo en <a href=\"https:\/\/jsfiddle.net\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">JSFiddle<\/a> con <a href=\"https:\/\/jsfiddle.net\/gertrudix\/k9mgd2hL\/2\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">el ejercicio<\/a>.<\/i>\n<\/li>\n<li>\n<i>Revisa el c\u00f3digo html. F\u00edjate que el c\u00f3digo JS aparece en el fichero HTML. Prueba el resultado que produce el bot\u00f3n. \u00bfC\u00f3mo crees que funciona revisando el c\u00f3digo?<\/i>\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>\u00bfPara qu\u00e9 sirve?<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Es un lenguaje que permite <b>dotar de interactividad<\/b> a las p\u00e1ginas web. Algunas de las tareas b\u00e1sicas que puede realizar son:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>Escribir en HTML\n<\/li>\n<li>Reaccionar a eventos\n<\/li>\n<li>Modificar elementos HTML\n<\/li>\n<li>Validar entrada de datos\n<\/li>\n<li>Cambiar o modificar atributos\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Adem\u00e1s, mediante la <a href=\"http:\/\/html5index.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">API JS de HTML5 <\/a>podemos acceder a recursos adicionales: c\u00e1mara, almacenamiento de datos, creaci\u00f3n de gr\u00e1ficos, flujo de datos con servidores\u2026)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Permite acceder a informaci\u00f3n en internet: por ejemplo, buscar y obtener las palabras m\u00e1s populares en Twitter de un tema, o para hacer scraping de web utilizando soluciones como <a href=\"https:\/\/scotch.io\/tutorials\/scraping-the-web-with-node-js\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Node.js<\/a>, <a href=\"https:\/\/medialab.github.io\/artoo\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Artoo.js<\/a>&nbsp;&nbsp;o <a href=\"http:\/\/nrabinowitz.github.io\/pjscrape\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">pjscrape<\/a>)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Tambi\u00e9n permite organizar y presentar datos como, por ejemplo, automatizar el trabajo de las hojas de c\u00e1lculo; o la visualizaci\u00f3n de datos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b>Ejercicio<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Veamos c\u00f3mo JS aporta interactividad a una web,<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>Accede a la web de <a href=\"https:\/\/civio.es\/espana-en-llamas\/mapa-de-incendios-forestales\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Espa\u00f1a en Llamas<\/a>. Navega por el mapa, usa los filtros, etc.\n<\/li>\n<li>Ahora deshabilita Javascript desde las <a href=\"https:\/\/es.ccm.net\/faq\/26408-como-desactivar-javascript-en-google-chrome\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">opciones del navegador<\/a> o usando alguna herramienta como <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/web-developer\/bfbameneiokkgbdmiekhjnmfkcnldhhm?hl=es\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">WebDevelopper Toolbar<\/a>. Comprueba qu\u00e9 sucede. \u00bfPuedes navegar el mapa? \u00bfCompartir en redes sociales?\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Veamos ahora un ejemplo del uso de javascript para <b>cambiar o modificar atributos<\/b> de html. Aqu\u00ed las posibilidades son muy amplias, dado que podemos modificar los valores de cualquier atributo, desde el color de un texto, el tipo de fuente, etc.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En este ejemplo generamos un efecto de sustituci\u00f3n modificando el atributo src de una imagen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Tipos de datos<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Javascript puede almacenar los siguientes <b>tipos de datos<\/b>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>string (cadenas)\n<\/li><li>number (n\u00fameros)\n<\/li><li>boolean (booleanos)\n<\/li><li>function (funciones)\n<\/li><li>array (arreglo)\n<\/li><li>object (objetos)\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d9cb9-js271533939-1545670552-13.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/f7ddb-js281533939-1545670566-69.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2>Variables<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>\u00bfQu\u00e9 es una variable?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Una variable es un elemento que <b>contiene informaci\u00f3n <\/b>(datos) que puede ser ejecutada por el c\u00f3digo.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Las variables sirven para <b>guardar<\/b> informaci\u00f3n que ser\u00e1 utilizada posteriormente.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En <a href=\"https:\/\/jsfiddle.net\/gertrudix\/2gqf548z\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">este ejemplo<\/a> x se define como una variable. Luego, asignamos a x el valor de 6:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Conceptos de POO<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>La <b>POO (Programaci\u00f3n Orientada a Objetos)<\/b> es un paradigma de programaci\u00f3n que permite optimizar los procesos de programaci\u00f3n y los resultados que se obtienen con ellos. Permite pre-dise\u00f1ar objetos que son almacenados en librer\u00edas o bibliotecas para que puedan ser reutilizados por los programas sin necesidad de tener que volver a escribir las funciones necesarias cada vez que se quiere hacer uso de ellas.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Los elementos fundamentales de la POO incorporan un n\u00famero amplio de componentes (clase, herencia, objeto, m\u00e9todo..), pero nos centraremos solo en los que resultan fundamentales para manejarnos en el entorno de trabajo de un proyecto period\u00edstico<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Objetos\n<\/li><li>Eventos\n<\/li><li>Funciones\n<\/li><li>M\u00e9todos\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Objetos<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d150f-js401533999-1545670778-26.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/ee556-js411533999-1545670794-86.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><b>Eventos<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Los eventos son <b>sucesos<\/b>, producidos normalmente por una acci\u00f3n del usuario, que <b>producen alg\u00fan efecto<\/b>. Por ejemplo, cuando un usuario pulsa un bot\u00f3n o hace clic sobre un enlace.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Algunos de los eventos DOM m\u00e1s habituales son:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/fae74-js421534000-1545670832-3.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><b>Funciones<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Todo evento lleva asociado, normalmente, una <b>funci\u00f3n<\/b>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Una funci\u00f3n es un <b>bloque de c\u00f3digo que puede ser ejecutado<\/b> cuando es llamada por un evento<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Son muy \u00fatiles porque es muy habitual reutilizar c\u00f3digo con diferentes argumentos a lo largo de un programa, por lo que podemos utilizar la funci\u00f3n sin tener que escribir de nuevo el c\u00f3digo, s\u00f3lo <b>invoc\u00e1ndola.<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Para <b>llamar a una funci\u00f3n<\/b> hay que invocarla en cualquier parte de la p\u00e1gina web.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Cuando se invoca una funci\u00f3n, todo el c\u00f3digo que contenga entre <b>llaves {} <\/b>se ejecuta<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Para invocarla, basta con escribir su nombre seguido de par\u00e9ntesis<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b><i><a href=\"https:\/\/jsfiddle.net\/api\/post\/library\/pure\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Ejemplo con Google Maps<\/a><\/i><\/b>. En este caso, se utiliza la API de Google Maps para crear un mapa que agrupa (cluster) marcadores en funci\u00f3n del nivel de zoom.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/96056-screenshot2-1615149992-45.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Nota: <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/marker-clustering?hl=es-419\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Ver documentaci\u00f3n<\/a><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Librer\u00edas y APIs<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Estos dos conceptos est\u00e1n directamente vinculados.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>T\u00e9cnicamente una <a href=\"http:\/\/www.4rsoluciones.com\/blog\/framework-sdk-biblioteca-api-cuales-son-las-diferencias-2\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>librer\u00eda o biblioteca<\/b><\/a> (library) es una colecci\u00f3n de implementaciones de comportamiento, pero lo entenderemos mejor si decimos que es una larga lista de c\u00f3digo de programaci\u00f3n que incluye un amplio n\u00famero de funciones que podemos utilizar desde nuestro programa con un esfuerzo limitado.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Por su parte, una <b><a href=\"http:\/\/blogginzenith.zenithmedia.es\/que-es-y-como-funciona-una-api-diczionario\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">API<\/a> (<i>Aplication Programming Interface<\/i>)<\/b> es una especificaci\u00f3n formal que permite comunicar componentes de software de dos sistemas distintos. Para entendernos, es una especie de \u201csubcontrataci\u00f3n\u201d de funciones.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Una API es el libro de instrucciones que nos permite conocer c\u00f3mo trabajar con el <b>conjunto de funciones<\/b>, procedimientos y objetos contenidos en la librer\u00eda o biblioteca con la que vamos a trabajar.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Como se\u00f1ala de forma gr\u00e1fica <a href=\"https:\/\/diegolaballos.com\/podcast\/49-que-son-las-librerias-y-las-apis\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Diego Ceballos<\/a>, en un ejemplo cotidiano, una cafetera Nespresso ser\u00eda una librer\u00eda para hacer caf\u00e9 de forma r\u00e1pida, y su libro de instrucciones ser\u00eda la API.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b>API Keys<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Para usar una API normalmente se requiere una API Key de autenticaci\u00f3n para conectarse con el servicio. Ello permite establecer los l\u00edmites de cuota por Key y no por IP. Adem\u00e1s, esto permite comunicar al servicio con la aplicaci\u00f3n solicitante.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d157d-js511534010-1545671187-21.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2>Tipos de Librer\u00edas y APIs<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Podemos clasificar las APIs en base a la funcionalidad que aportan. Siguiendo este criterio podemos considerar, desde el punto de vista de la utilidad en proyectos period\u00edsticos, las siguientes:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Para crear mapas\n<\/li><li>Parar incorporar animaciones\n<\/li><li>Para desarrollar aplicaciones\n<\/li><li>Para acceder y manipular los elementos del DOM de forma sencilla\n<\/li><li>Para trabajar con im\u00e1genes y gr\u00e1ficos\n<\/li><li>Para visualizar datos\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/1aced-js52b153401-1545671231-47.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>En este enlace puede verse una <a href=\"http:\/\/socialcompare.com\/en\/comparison\/javascript-graphs-and-charts-libraries\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">amplia comparativa de librer\u00edas<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Google Maps API<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Google Maps API<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Vamos a adentrarnos en el uso de funciones. Para ello, vamos a trabajar con la <a href=\"https:\/\/developers.google.com\/maps\/showcase\/?hl=es-419\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">API de Google Maps<\/a> que es una amplia librer\u00eda dirigida a la creaci\u00f3n de complejas aplicaciones de mapas.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/f8059-js531534011-1545671419-4.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2>Crear un mapa simple incluyendo un marcador<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>La elaboraci\u00f3n de este mapa nos permitir\u00e1 comprender mejor c\u00f3mo operan las funciones.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Vamos a elaborar un <a href=\"https:\/\/jsfiddle.net\/gertrudix\/m5fbzhde\/51\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>mapa sencillo en el que incluiremos un marcador<\/b><\/a>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>\n<b>Creamos el c\u00f3digo html<\/b>. F\u00edjate que en el head se hace la llamada a la API. El par\u00e1metro callback ejecuta la funci\u00f3n initMap cuando se ha cargado la API. Los atributos async y defer permiten que se siga renderizando la p\u00e1gina mientras se carga la API. La key hace la llamada mediante la API Key para acceder al servicio.\n<\/li>\n<li>\n<b>Dibujamos el mapa y el marcador en el fichero JS<\/b>. Creamos una funci\u00f3n que inicializa y a\u00f1ade el mapa, con los siguientes elementos: a) Una variable que inicializamos con las coordenadas que centrar\u00e1n el mapa. b) Una variable que crea el objeto mapa, utiliza el m\u00e9todo getElemenById y le pasa dos propiedades: center y zoom (escala: cuanto m\u00e1s bajo, m\u00e1s general). Creamos una variable para incluir el marcador, inicializ\u00e1ndola con el objeto marcador, y dos propiedades: position y map\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>En este enlace puedes ver el <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/adding-a-google-map\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">detalle explicado de todo el procedimiento<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Funciones avanzadas<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ya hemos visto muchas de las posibilidades que ofrece <a href=\"https:\/\/www.w3schools.com\/graphics\/google_maps_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google Maps API<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En este apartado, veremos algunas caracter\u00edsticas que nos pueden resultar \u00fatiles para la configuraci\u00f3n de nuestros mapas.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Query Places<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:image {\"align\":\"right\",\"className\":\"wp-block-image alignright\"} -->\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/01e1e-js93-1534324999-95-1.jpg\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Query Places nos permite hacer una b\u00fasqueda automatizada de lugares. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Con la librer\u00eda places podemos ubicar de forma autom\u00e1tica lugares en un mapa.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A trav\u00e9s de los par\u00e1metros de b\u00fasqueda del m\u00e9todo <i><a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/places?hl=es-419\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">nearbySearch<\/a><\/i> podemos modificar la <i>query<\/i> que hace sobre los datos de places.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Veamos <a href=\"https:\/\/jsfiddle.net\/gertrudix\/02uz6dzt\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">un ejemplo<\/a>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Se declaran las variables map e infowindow\n<\/li><li>Se inicializa el mapa mediante la funci\u00f3n\n<\/li><li>Se define el valor del infowindow a trav\u00e9s de la clase google.maps.InfoWindow\n<\/li><li>Se carga la biblioteca de sitios \u201cplaces\u201d, para el subconjunto PlacesService\n<\/li><li>Con el m\u00e9todo nearbySearch se localizan aquellos servicios que cumplan los requisitos indicados en los par\u00e1metros de la b\u00fasqueda\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>         <!--StartFragment-->Y aqu\u00ed <a href=\"https:\/\/jsfiddle.net\/02uz6dzt\/7\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">otro ejemplo ampliando la informaci\u00f3n<\/a> del infowindow: <!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Gmaps.js<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Si trabajar directamente con la API de Google Maps te resulta complejo, <a href=\"https:\/\/hpneo.github.io\/gmaps\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Gmaps.js<\/a> es una librer\u00eda desarrollada para simplificar el trabajo con la API.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">JSON y GeoJSON<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>JSON es el acr\u00f3nimo de <b>J<\/b>avaScript <b>O<\/b>bject <b>N<\/b>otation.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Es un lenguaje independiente con una sintaxis basada en Javascript para <i>almacenamiento e intercambio de datos.<\/i><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Se utiliza en aplicaciones AJAX y es una alternativa a XML <b>m\u00e1s sencilla<\/b> de usar.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/3876d-js761534177-1545671802-32.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2>\u00bfPor qu\u00e9 nos interesa JSON?<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>JSON resulta relevante por:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Es la respuesta de datos que devuelven la mayor\u00eda de las APIs web&nbsp;&nbsp;\n<\/li><li>Muchos portales de datos abiertos ofrecen la informaci\u00f3n en este formato\n<\/li><li>Porque facilita la integraci\u00f3n y visualizaci\u00f3n de informaci\u00f3n\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/872b6-js791534177-1545671837-68.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>En <a href=\"https:\/\/jsfiddle.net\/gertrudix\/ojwofxh6\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">este ejemplo<\/a> vemos c\u00f3mo creamos un objeto JSON en Javascript.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>GeoJSON<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/tools.ietf.org\/html\/rfc7946\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">GeoJSON<\/a> es un formato para el intercambio de <b>datos geoespaciales<\/b> <i>basado en JSON<\/i>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Permite informar <b>diferentes tipos de geometr\u00edas<\/b>: puntos, multipuntos, l\u00edneas, multil\u00edneas, pol\u00edgonos, m\u00faltiples pol\u00edgonos, y colecciones de geometr\u00edas&nbsp;&nbsp;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b>Uso de GeoJSON para cargar datos masivos<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Vamos a trabajar con ejemplo de un mapa creado con la API de Google Maps. Vamos a <b>cargar ficheros GeoJSON <\/b>con miles de datos<b> <\/b>y customizar los resultados del mapa convirtiendo los marcadores en c\u00edrculos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Los datos los obtenemos, para este ejemplo, del sistema de feeds del USGS que ofrece datos en varios formatos, entre ellos GeoJSON, sobre diferentes <a href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/geojson.php\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">sucesos naturales, en este caso, terremotos<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Como su sistema no permite directamente hacer llamadas de manera gratuita, tenemos que descargarnos el fichero que queramos y <a href=\"https:\/\/proyectos.comunicaciondigital.es\/files\/md\/demo2_GeoJSONP.js\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">ubicarlo en servidor propio<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Una vez que tenemos el fichero en nuestro servidor, con una URL p\u00fablica, podemos cargarlo y <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/earthquakes\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">customizar el mapa<\/a> obteniendo <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/earthquakes#\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">este resultado<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/06895-screenshot2-1615157292-46.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2>Uso de JSON para personalizar mapas<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:image {\"align\":\"right\",\"className\":\"wp-block-image alignright\"} -->\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/06a5c-js831534196-1545672020-68.jpg\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Otra de las utilidades de JSON es la personalizaci\u00f3n de estilos. La API de Google Maps facilita un c<a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/styling?hl=es-419#styling_the_default_ma\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">ompleto sistema de estilos para customizar<\/a> el mapa a voluntad, algo que con otras soluciones de Google como Mymaps es m\u00e1s limitada<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b>Asistente de mapa de Google Maps<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En todo caso, configurar estilos complejos creando escribiendo directamente el c\u00f3digo de los estilos lleva tiempo. As\u00ed que muchas veces lo m\u00e1s eficaz es usar el <a href=\"https:\/\/mapstyle.withgoogle.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>asistente de estilos de mapa<\/b><\/a> de la API de Google Maps.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Los <a href=\"https:\/\/jsfiddle.net\/gertrudix\/43eezm2s\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">pasos para hacerlo<\/a> son:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>\n<a href=\"https:\/\/mapstyle.withgoogle.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Accedemos al asistente<\/a>.\u00a0 \u00a0\n<\/li>\n<li>Configuramos el estilo bien con las features b\u00e1sicas, bien con las avanzadas que nos permiten modificar y acceder a cualquiera de las funciones y par\u00e1metros de estilo.\n<\/li>\n<li>Finalizamos el estilo y copiamos el codigo JSON del array de estilos (ser\u00e1 muy largo)\n<\/li>\n<li>Vamos en el mapa al objeto google.maps.StyledMapType y copiamos el array con todo el contenido entre [ ] incluidos estos.\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">LeafLeft<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p><a href=\"http:\/\/leafletjs.com\/examples.html\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Leaflet<\/a> es una librer\u00eda especializada para la creaci\u00f3n de <b>mapas interactivos.<\/b><!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Tiene una amplia <a href=\"http:\/\/leafletjs.com\/reference-1.3.0.html\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">documentaci\u00f3n<\/a> y una <a href=\"https:\/\/www.mapbox.com\/api-documentation\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">galer\u00eda de estilos de mapa<\/a> (basados en Mapbox) para comenzar a trabajar r\u00e1pidamente con ella.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Como toda librer\u00eda basada en JS, utiliza la base de este, pero simplifica la sintaxis para hacer m\u00e1s sencillo y \u00e1gil el desarrollo de los mapas.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/3ec3d-js94-1534325590-81-1.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Vamos a crear un <a href=\"https:\/\/jsfiddle.net\/gertrudix\/b4kaptvm\/33\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">mapa b\u00e1sico con LeafleftJs<\/a>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>En el head de html, enlazamos la hoja de estilo de Leaftletjs y, detr\u00e1s, ponemos despu\u00e9s el enlace al js de Leaftletjs. <\/li>\n<li>En css Le damos un alto al div que contiene el mapa a trav\u00e9s del id <\/li>\n<li>En Js creamos el mapa y le asignamos las coordenadas decimales y el nivel de zoom <\/li>\n<li>Cargamos una capa de mapa (tile layer) desde Mapbox. Necesitaremos incluir el accessToken de mapbox. Si no tenemos uno, tendremos que crearlo (En id podemos incluir cualquiera de los <a href=\"https:\/\/www.mapbox.com\/api-documentation\/#maps\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">estilos de mapa base disponibles en Mapxbox<\/a>) <\/li>\n<li>Creamos un marcador <\/li>\n<li>Creamos un c\u00edrculo <\/li>\n<li>Creamos dos popup sobre el marcador y el c\u00edrculo <\/li>\n<li>Creamos una funci\u00f3n\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>En este <a href=\"https:\/\/jsfiddle.net\/gertrudix\/ps04off3\/6\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">otro mapa<\/a>, sobre la base del anterior hemos incorporado un <a href=\"http:\/\/leafletjs.com\/examples\/custom-icons\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">marcador personalizado usando las opciones que LeafLeft<\/a> tiene para ello.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Mapbox<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/www.mapbox.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Mapbox<\/a> es otra estupenda librer\u00eda para crear mapas. De hecho, tiene su propio sistema de mapas que es usado por otras librer\u00edas como base, tal como sucede como LeafLeft. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ofrece una <a href=\"https:\/\/www.mapbox.com\/mapbox-gl-js\/example\/heatmap-layer\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">documentaci\u00f3n muy amplia<\/a> lo que facilita trabajar con ella.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>De manera similar a lo que sucede con Google Maps, existe la posibilidad de <a href=\"https:\/\/www.mapbox.com\/mapbox.js\/api\/v2.2.4\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">trabajar directamente con la API<\/a> o hacerlo mediante el <a href=\"https:\/\/www.mapbox.com\/studio\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">editor de mapas (studio)<\/a>. Esto \u00faltimo simplifica a\u00fan m\u00e1s el desarrollo dado que, adem\u00e1s, luego podremos customizar o personalizar elementos accediendo al c\u00f3digo resultante.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/c5f6e-js95-1534326229-4-1.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Una de las aportaciones interesantes de esta librer\u00eda es que dispone de numerosos efectos que pueden darle un aspecto diferente a nuestras visualizaciones en mapas. La documentaci\u00f3n de la API incluye muchas, pero destacaremos aqu\u00ed algunas de ellas:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Ejemplos de mapas que podemos crear<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>En este <a href=\"https:\/\/docs.mapbox.com\/mapbox-gl-js\/example\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">apartado de la documentaci\u00f3n<\/a> podemos revisar todas las posibilidades que ofrece esta librer\u00eda.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/13c5f-screenshot2-1615159923-41.png\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">ArcGIS online<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>ArcGIS online es una completa suite de aplicaciones y APIs. Dispone de un <a href=\"http:\/\/www.arcgis.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Gestor web<\/a> y de <a href=\"https:\/\/developers.arcgis.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">numerosas APIs <\/a>para interactuar y adaptar los resultados.<!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En este enlace puedes acceder a un <a href=\"https:\/\/manuelgertrudix.atavist.com\/3b-mapas-interactivos-arcgis\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">tutorial b\u00e1sico para empezar a crear mapas<\/a> 2D.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/95254-js96-1534326756-87-1.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Un aspecto diferencial de esta soluci\u00f3n, es que ofrece un editor de <b>escenas<\/b>. Esto facilita un modo de crear escenas 3D sobre la representaci\u00f3n de la esfera terrestre, como en este ejemplo:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>O sobre zonas concretas en las que pueden incluirse capas como edificios, etc:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Google Chart<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p><b><a href=\"https:\/\/developers.google.com\/chart\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google Chart<\/a><\/b> es una librer\u00eda orientada a la creaci\u00f3n de una <a href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">amplia variedad de gr\u00e1ficos din\u00e1micos<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"className\":\"wp-block-image aligncenter\"} -->\n<div class=\"wp-block-image aligncenter\"><figure class=\"aligncenter\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/d8dec-js101-1534329572-30-1.jpg\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2>Creaci\u00f3n de Chart b\u00e1sicos<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:image {\"align\":\"right\",\"className\":\"wp-block-image alignright\"} -->\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/241ad-js99-1534327681-91-1.png\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>La creaci\u00f3n de Chart requiere&nbsp; que los datos sean incluidos mediante una clase de JavaScript: <i>google.visualization.DataTable<\/i> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>La clase est\u00e1 definida en la librer\u00eda de visualizaci\u00f3n de Google.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>La tabla de datos corresponde a una tabla similar a esta.<!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Veamos los pasos para crear <a href=\"https:\/\/jsfiddle.net\/gertrudix\/9uyzyxoe\/7\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">nuestro primer ejemplo<\/a>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ol>\n<li>Cargamos la API de visualizaci\u00f3n del paquete que nos interesa, en este caso \u201ccorechart\u201d\n<\/li>\n<li>Establecemos el callback para que se ejecute la funci\u00f3n cuando se haya cargado la API de visualizaci\u00f3n de Google y no antes\n<\/li>\n<li>La devoluci\u00f3n de llamada que crea y rellena una tabla de datos, crea una instancia del gr\u00e1fico circular, pasa los datos y los dibuja.\n<\/li>\n<li>Creamos la tabla de datos\n<\/li>\n<li>Configuramos las opciones del chart\n<\/li>\n<li>Instanciamos y dibujamos el chart pas\u00e1ndole la configuraci\u00f3n de las opciones\n<\/li>\n<\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Personalizaci\u00f3n del Chart<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Para cada Chart <a href=\"https:\/\/jsfiddle.net\/gertrudix\/9uyzyxoe\/5\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">podemos personalizar<\/a> diferentes elementos como: <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>T\u00edtulo, Color, grosor de l\u00ednea, relleno de fondo, etc.\n<\/li><li>Incluir elementos: t\u00edtulos de los ejes, etc.\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Las opciones se presentan como pares <i><b>name.value<\/b><\/i> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"right\",\"className\":\"wp-block-image alignright\"} -->\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/1dc76-js100-1534327964-91-1.jpg\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:list -->\n<ul><li>Las opciones pasan los valores al chart mediante el m\u00e9todo <i>draw()<\/i>&nbsp;&nbsp;<\/li><li>Cada chart posee los pares adecuados para la customizaci\u00f3n de ese tipo de visualizaci\u00f3n\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/-->\n\n<!-- wp:paragraph {\"fontSize\":\"small\"} -->\n<p class=\"has-small-font-size\">En este ejemplo vemos un Pie Chart en el que se han establecido las siguientes opciones: Ancho y alto  \u2022T\u00edtulo  \u2022Colores con un array de hexadecimales  \u2022is3D, para dar el aspecto 3D&nbsp;&nbsp;<\/p>\n<!-- \/wp:paragraph --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Las <a href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/customizing_charts\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">opciones de customizaci\u00f3n son muy variadas<\/a>, lo que permite, y esta es su principal ventaja, adaptar los gr\u00e1ficos al estilo visual de nuestro proyecto.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/-->\n\n<!-- wp:paragraph {\"fontSize\":\"small\"} -->\n<p class=\"has-small-font-size\">En este se modifican los atributos color, pieHole<\/p>\n<!-- \/wp:paragraph --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/-->\n\n<!-- wp:paragraph {\"fontSize\":\"small\"} -->\n<p class=\"has-small-font-size\">Y en este otro: slices, pieHole, is3D...<\/p>\n<!-- \/wp:paragraph --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Otra de las opciones es incluir HTML en los tootilps:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>O incluir otros Charts dentro de los tooltips:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Combo Charts<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Podemos tambi\u00e9n crear charts agrupados, lo que se conoce como Combo Charts. En este caso, vemos dos ejemplos: en el primero los resultados de dos procesos electorales sin customizar, y el segundo, en el que e incluyen los resultados de unas terceras elecciones, y se customizan algunos elementos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Google Public Data Explorer<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Aunque no pertenece a la API de Google Chart, <a href=\"https:\/\/www.google.com\/publicdata\/directory\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google Public Data Explorer<\/a> es una interesante herramienta de Google que permite elaborar gr\u00e1ficos sencillos de forma r\u00e1pida, utilizando los datos p\u00fablicos abiertos ya cargados por las principales entidades internacionales (Eurostat, US. Census Bureau, Data.gob.uk, Banco Mundial...) o nacionales (INE...)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Mediante un sistema de filtros se pueden crear visualizaciones tanto para realizar an\u00e1lisis como para crear gr\u00e1ficos que se vayan a insertar posteriormente en nuestro reportaje o web.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>         <!--StartFragment-->Tambi\u00e9n es posible <a href=\"http:\/\/www.google.com\/publicdata\/admin\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">cargar set de datos<\/a> propios en formato GPDE.<!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En este ejemplo, se usan datos del Banco Mundial para comparar la <a href=\"https:\/\/www.google.com\/publicdata\/explore?ds=d5bncppjof8f9_&amp;ctype=l&amp;strail=false&amp;bcs=d&amp;nselm=h&amp;met_y=children_out_of_school&amp;fdim_y=education_level:2&amp;scale_y=lin&amp;ind_y=false&amp;rdim=region&amp;idim=region:EAS:ECS:LCN:MEA:SSF:SAS:NAC&amp;ifdim=region&amp;hl=en_US&amp;dl=en_US&amp;ind=false\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">evoluci\u00f3n de la ratio de ni\u00f1os y ni\u00f1as fuera de la escuela<\/a> por regiones mundiales:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html -->\n[googlemaps https:\/\/www.google.com\/publicdata\/embed?ds=d5bncppjof8f9_&amp;ctype=l&amp;strail=false&amp;bcs=d&amp;nselm=h&amp;met_y=children_out_of_school&amp;fdim_y=education_level:2&amp;scale_y=lin&amp;ind_y=false&amp;rdim=region&amp;idim=region:EAS:ECS:LCN:MEA:SSF:SAS:NAC&amp;ifdim=region&amp;hl=en_US&amp;dl=en_US&amp;ind=false&amp;w=100%&amp;h=450]\n<!-- \/wp:html --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Librer\u00edas DataViz (Datos)<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Existen muchas alternativas actualmente para la visualizaci\u00f3n de datos. Muchas de las librer\u00edas tienen su propia sintaxis, basada o derivada de JS. La ventaja de disponer de esta variedad es que podemos tener un cat\u00e1logo muy amplio de soluciones que permitan elegir la mejor opci\u00f3n para cada caso e ir introduciendo cierta variedad en nuestros proyectos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Revisamos, a continuaci\u00f3n, algunas de las soluciones disponibles. Aunque no se entra en su detalle, permite hacerse una idea de las numerosas posibilidades existentes para continuar explorando por nuestra cuenta.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>D3.js<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/d3js.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">D3.js<\/a> es una librer\u00eda JS para manipular documentos basados en datos. Se utiliza para realizar <a href=\"http:\/\/bl.ocks.org\/mbostock\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">visualizaciones complejas<\/a>. Cuenta con una <a href=\"https:\/\/github.com\/d3\/d3\/wiki\/Gallery\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">amplia galer\u00eda de visualizaciones<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Algunos ejemplos interesantes aplicados de esta librer\u00eda:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\n<a href=\"http:\/\/www.nytimes.com\/interactive\/2013\/04\/08\/business\/global\/asia-map.html?_r=0\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">China manufacture<\/a> <\/li><li>\n<a href=\"http:\/\/projects.flowingdata.com\/tut\/interactive_network_demo\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Similar song Networks<\/a>\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>En este enlace puedes seguir un <a href=\"https:\/\/github.com\/mbostock\/d3\/wiki\/Tutorials\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">tutorial de esta librer\u00eda D3.js<\/a><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Funcionalidad<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:image {\"align\":\"right\",\"className\":\"wp-block-image alignright\"} -->\n<div class=\"wp-block-image alignright\"><figure class=\"alignright\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/4fa31-js102-1534330105-37-1.jpg\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Permite obtener datos de cualquier elemento del DOM y aplicarle transformaciones en el documento. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Sobre un mismo conjunto de datos permite realizar varias transformaciones. Por ejemplo, sobre un array podemos: <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Crear una tabla <\/li><li>Generar un gr\u00e1fico interactivo en SVG\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Y de una manera muy flexible y r\u00e1pida.&nbsp;&nbsp;<!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b>Sintaxis<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>         <!--StartFragment-->Utiliza una sintaxis simplificada de JS para acceder a los selectores del DOM: <a href=\"http:\/\/www.w3.org\/TR\/selectors-api\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">W3C Selectors API <\/a><!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/b8387-js103-1534330184-87-1.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><b>Ejemplos<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En este primer ejemplo vemos un Diagrama de acorde, documentado en DJ3 (<a href=\"https:\/\/bl.ocks.org\/mbostock\/4062006\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">podemos reutilizar el c\u00f3digo<\/a>). En este caso, hemos reutizado el c\u00f3digo y lo hemos adaptado para crear esta versi\u00f3n sobre el <a href=\"http:\/\/comunicaciondigital.es\/files\/clases\/deuda.html\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">flujo de deuda entre pa\u00edses<\/a>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/c0a80-js104-1534330990-5-1.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>El funcionamiento de las visualizaciones b\u00e1sicas es relativamente sencillo. Los datos se cargan en ficheros .csv que se llaman desde el html para cargarlos en la visualizaci\u00f3n. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>ZinkChart<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/www.zingchart.com\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">ZinkChart<\/a> es otra librer\u00eda interesante. Orientada a gr\u00e1ficos habituales (l\u00edneas, histogramas, sectores, etc.) ofrece un muy buen resultado visual, incluyendo animaci\u00f3n de los elementos y la incorporaci\u00f3n de elementos gr\u00e1ficos a\u00f1adidos que dan un aspecto muy completo.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><b><a href=\"https:\/\/jsfiddle.net\/gertrudix\/0r19fxh3\/11\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Ejemplo: Barras <\/a><\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/jsfiddle.net\/gertrudix\/4tkcmhst\/1\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>Ejemplo. L\u00edneas<\/b><\/a><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2><a href=\"https:\/\/www.amcharts.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">AmCharts<\/a><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>  <!--EndFragment-->    <a href=\"https:\/\/www.amcharts.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">AmCharts<\/a> es otra buena librer\u00eda para crear <a href=\"https:\/\/www.amcharts.com\/demos\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">gr\u00e1ficos<\/a> y <a href=\"https:\/\/www.amcharts.com\/demos\/#javascript-maps\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">mapas<\/a>. Puede descargarse, enlazarse o trabajar con el editor <a href=\"https:\/\/live.amcharts.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">online live AmCharts<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"wide\",\"className\":\"wp-block-image alignwide\"} -->\n<figure class=\"wp-block-image alignwide\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/ada9b-js105-1534346475-8-1.jpg\" alt=\"\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><b>Ejemplo de mapa<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p><b>Ejemplo de gr\u00e1fico<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Highcharts<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/www.highcharts.com\/demo\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Highcharts<\/a> es una buena librer\u00eda de gr\u00e1ficos interactivos que cuenta tambi\u00e9n con una <a href=\"https:\/\/cloud.highcharts.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">versi\u00f3n de creaci\u00f3n online<\/a>. Est\u00e1 muy orientada a gr\u00e1ficos de l\u00ednea, columnas, barras para informaci\u00f3n econ\u00f3mica. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>En el editor online permite la carga de los datos en csv, lo que facilita la gesti\u00f3n de estos para la preparaci\u00f3n del gr\u00e1fico.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>AnyCharts<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"http:\/\/www.anychart.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">AnyChart.JS<\/a> es una completa librer\u00eda para el desarrollo de: <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anychart\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Charts<\/a> <\/li><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anystock\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Stocks<\/a> <\/li><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anymap\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Maps<\/a> <\/li><li>\n<a href=\"http:\/\/www.anychart.com\/products\/anygantt\/gallery\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Gantt<\/a>\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Permite hacer algunas representaciones bastante singulares y diferentes, por lo que es una buena opci\u00f3n cuando se busca salirse de lo habitual.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Este gr\u00e1fico es un buen ejemplo:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Tambi\u00e9n resulta \u00fatil para generar <a href=\"http:\/\/jsbin.com\/yoruro\/1\/edit?html,css,js,output\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"><b>paneles de gr\u00e1ficos, en formato dashboard.<\/b><\/a><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Otras librer\u00edas<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Chart.js<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"http:\/\/www.chartjs.org\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Chart.js<\/a> pertenece al grupo de librer\u00edas ligeras. No permite hacer muchas cosas, pero las visualizaciones de gr\u00e1ficas que hace son muy limpias y ligeras.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Sigma.js<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"http:\/\/sigmajs.org\/%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Sigma.JS<\/a> es una librer\u00eda para crear dibujo gr\u00e1fico, y est\u00e1 especializado en creaci\u00f3n de gr\u00e1ficos de redes.<!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Listados de librer\u00edas<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/www.javascripting.com%20\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Javascripting<\/a> es un directorio de librer\u00edas que colecta cientos de soluciones para problemas muy diversos basados en javascript.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"className\":\"wp-block-image aligncenter\"} -->\n<div class=\"wp-block-image aligncenter\"><figure class=\"aligncenter\"><img src=\"https:\/\/cibercambio.files.wordpress.com\/2021\/04\/f2d90-js106-1534350072-69-1.jpg\" alt=\"\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Librer\u00edas Mapas<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>Cesium.js<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/cesiumjs.org\/about\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">CesiumJS<\/a> es una potente biblioteca de JavaScript de c\u00f3digo abierto para crear mapas y globlos terr\u00e1queos 3D de nivel internacional. Permite crear mapas tanto est\u00e1ticos como din\u00e1micos, y con la posibilidad de incluir l\u00edneas temporales que muestren la evoluci\u00f3n de un fen\u00f3meno. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p>Tambi\u00e9n permite levantar edificios sobre superficies.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/-->\n\n<!-- wp:paragraph {\"fontSize\":\"small\"} -->\n<p class=\"has-small-font-size\"><a href=\"http:\/\/cesiumjs.org\/NewYork\" class=\"regular-link\" target=\"_blank\" rel=\"noopener\">&nbsp;New York 3D Tiles<\/a><a href=\"http:\/\/cesiumjs.org\/NewYork\" class=\"regular-link\" target=\"_blank\" rel=\"noopener\">See over 1.1 million OpenStreetMap buildings in New York City.<\/a><br><\/p>\n<!-- \/wp:paragraph --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:paragraph -->\n<p><b>Cesium ion!<\/b><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/cesium.com\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Cesium tambi\u00e9n dispone de una versi\u00f3n de escritorio<\/a> que incluye algunas de las principales funciones de la librer\u00eda.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dispone de un <a href=\"https:\/\/cesiumjs.org\/tutorials\/cesium-up-and-running\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">completo tutorial<\/a> para conocer c\u00f3mo trabajar con ella.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>OpenLayers<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"http:\/\/openlayers.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">OpenLayers<\/a> facilita la creaci\u00f3n de mapas din\u00e1micos en cualquier p\u00e1gina web. Puede mostrar mosaicos de mapas, datos vectoriales y marcadores cargados desde cualquier fuente. OpenLayers ha sido desarrollado para promover el uso de informaci\u00f3n geogr\u00e1fica de todo tipo. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dispone, tambi\u00e9n, de un <a href=\"http:\/\/openlayers.org\/en\/latest\/doc\/tutorials\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">tutorial<\/a>, y una <a href=\"http:\/\/openlayers.org\/en\/latest\/examples\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">librer\u00eda de ejemplos<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-embed\"} -->\n<div class=\"wp-block-group atavist-embed\"><!-- wp:html \/--><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:group {\"className\":\"atavist-title-design cover-text-simple\"} -->\n<div class=\"wp-block-group atavist-title-design cover-text-simple\"><!-- wp:heading {\"textAlign\":\"left\",\"align\":\"center\",\"className\":\"aligncenter atavist-title-h2\"} -->\n<h2 class=\"has-text-align-left aligncenter atavist-title-h2\">Utilidades<\/h2>\n<!-- \/wp:heading --><\/div>\n<!-- \/wp:group -->\n\n<!-- wp:heading -->\n<h2>\n<span>Datos cartogr\u00e1ficos<\/span>\n<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"http:\/\/www.gadm.org\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Global Administrative Areas<\/a> contiene un amplio bancos de ficheros de shapefiles: KML, vectoriales\u2026 gratuitos de la mayor\u00eda de los pa\u00edses del mundo, hasta cuatro niveles administrativos: pa\u00eds, regi\u00f3n, provincia y localidad.<!--EndFragment--><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Librer\u00edas pictogr\u00e1ficas<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Las librer\u00edas pictogr\u00e1ficas web son colecciones de iconos que pueden cargarse v\u00eda web en nuestro proyecto mediante un enlace.  \u2022Las tres principales son: <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\n<a href=\"http:\/\/www.w3schools.com\/icons\/fontawesome_icons_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Font Awesome Icons<\/a>. Es una colecci\u00f3n libre de m\u00e1s de 600 iconos. Permite control CSS, sin manejo de JS. <\/li><li>\n<a href=\"http:\/\/www.w3schools.com\/icons\/bootstrap_icons_glyphicons.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Bootstrap<\/a><a href=\"http:\/\/www.w3schools.com\/icons\/bootstrap_icons_glyphicons.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\"> <\/a><a href=\"http:\/\/www.w3schools.com\/icons\/bootstrap_icons_glyphicons.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Icons<\/a>\n<\/li><li>\n<a href=\"http:\/\/www.w3schools.com\/icons\/google_icons_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Google <\/a><a href=\"http:\/\/www.w3schools.com\/icons\/google_icons_intro.asp\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Icons<\/a>\n<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading -->\n<h2>Tutoriales<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:list -->\n<ul><li>\n<a href=\"https:\/\/datavizcatalogue.com\/ES\/\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">Cat\u00e1logo de visualizaci\u00f3n de datos<\/a>. Extraordinario tutorial visual sobre las mejores formas para visualizar los datos.\n<\/li><li>\n<a href=\"https:\/\/visual.ly\/blog\/wp-content\/uploads\/2014\/09\/image-6.png\" target=\"_blank\" class=\"regular-link\" rel=\"noopener\">The Graphic continuum<\/a>.<\/li><\/ul>\n<!-- \/wp:list -->","_et_gb_content_width":"","footnotes":""},"categories":[221],"tags":[],"class_list":["post-76010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-banco-conocimiento"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Utilizaci\u00f3n lenguajes script - Old - Portal de proyectos multimedia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/proyectos.comunicaciondigital.es\/en\/intro-scripts\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Utilizaci\u00f3n lenguajes script - Old - Portal de proyectos multimedia\" \/>\n<meta property=\"og:description\" content=\"\u00bfA qu\u00e9 nos referimos con un script? Cuando hablamos de un script, un guion o una secuencia de comandos es un peque\u00f1o (a veces no tanto) programa que sirve para \u00abrutinizar\u00bb o automatizar ciertas tareas, habitualmente repetitivas, que se precisan para que funcione un proyecto m\u00e1s complejo. En nuestro \u00e1mbito, nos interesan los scripts que&hellip; Continua leyendo Utilizaci\u00f3n lenguajes script &#8211; Old\" \/>\n<meta property=\"og:url\" content=\"https:\/\/proyectos.comunicaciondigital.es\/en\/intro-scripts\/\" \/>\n<meta property=\"og:site_name\" content=\"Portal de proyectos multimedia\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-10T04:28:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-27T17:44:25+00:00\" \/>\n<meta name=\"author\" content=\"Manuel Gertrudix Barrio\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/\"},\"author\":{\"name\":\"Manuel Gertrudix Barrio\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/#\\\/schema\\\/person\\\/4699e2d8a8c19b218ae2f96940a3c337\"},\"headline\":\"Utilizaci\u00f3n lenguajes script &#8211; Old\",\"datePublished\":\"2018-08-10T04:28:14+00:00\",\"dateModified\":\"2022-04-27T17:44:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/\"},\"wordCount\":4112,\"image\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#primaryimage\"},\"thumbnailUrl\":\"\",\"articleSection\":[\"banco-conocimiento\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/\",\"url\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/\",\"name\":\"Utilizaci\u00f3n lenguajes script - Old - Portal de proyectos multimedia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2018-08-10T04:28:14+00:00\",\"dateModified\":\"2022-04-27T17:44:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/#\\\/schema\\\/person\\\/4699e2d8a8c19b218ae2f96940a3c337\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/intro-scripts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Utilizaci\u00f3n lenguajes script &#8211; Old\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/#website\",\"url\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/\",\"name\":\"Portal de proyectos multimedia\",\"description\":\"Grupo Ciberimaginario\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/#\\\/schema\\\/person\\\/4699e2d8a8c19b218ae2f96940a3c337\",\"name\":\"Manuel Gertrudix Barrio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/wp-content\\\/litespeed\\\/avatar\\\/f3575d3bb447e8a94fb03b29e11fe081.jpg?ver=1779727757\",\"url\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/wp-content\\\/litespeed\\\/avatar\\\/f3575d3bb447e8a94fb03b29e11fe081.jpg?ver=1779727757\",\"contentUrl\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/wp-content\\\/litespeed\\\/avatar\\\/f3575d3bb447e8a94fb03b29e11fe081.jpg?ver=1779727757\",\"caption\":\"Manuel Gertrudix Barrio\"},\"url\":\"https:\\\/\\\/proyectos.comunicaciondigital.es\\\/en\\\/author\\\/gertrudix\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Utilizaci\u00f3n lenguajes script - Old - Portal de proyectos multimedia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/proyectos.comunicaciondigital.es\/en\/intro-scripts\/","og_locale":"en_GB","og_type":"article","og_title":"Utilizaci\u00f3n lenguajes script - Old - Portal de proyectos multimedia","og_description":"\u00bfA qu\u00e9 nos referimos con un script? Cuando hablamos de un script, un guion o una secuencia de comandos es un peque\u00f1o (a veces no tanto) programa que sirve para \u00abrutinizar\u00bb o automatizar ciertas tareas, habitualmente repetitivas, que se precisan para que funcione un proyecto m\u00e1s complejo. En nuestro \u00e1mbito, nos interesan los scripts que&hellip; Continua leyendo Utilizaci\u00f3n lenguajes script &#8211; Old","og_url":"https:\/\/proyectos.comunicaciondigital.es\/en\/intro-scripts\/","og_site_name":"Portal de proyectos multimedia","article_published_time":"2018-08-10T04:28:14+00:00","article_modified_time":"2022-04-27T17:44:25+00:00","author":"Manuel Gertrudix Barrio","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#article","isPartOf":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/"},"author":{"name":"Manuel Gertrudix Barrio","@id":"https:\/\/proyectos.comunicaciondigital.es\/#\/schema\/person\/4699e2d8a8c19b218ae2f96940a3c337"},"headline":"Utilizaci\u00f3n lenguajes script &#8211; Old","datePublished":"2018-08-10T04:28:14+00:00","dateModified":"2022-04-27T17:44:25+00:00","mainEntityOfPage":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/"},"wordCount":4112,"image":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#primaryimage"},"thumbnailUrl":"","articleSection":["banco-conocimiento"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/","url":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/","name":"Utilizaci\u00f3n lenguajes script - Old - Portal de proyectos multimedia","isPartOf":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#primaryimage"},"image":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#primaryimage"},"thumbnailUrl":"","datePublished":"2018-08-10T04:28:14+00:00","dateModified":"2022-04-27T17:44:25+00:00","author":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/#\/schema\/person\/4699e2d8a8c19b218ae2f96940a3c337"},"breadcrumb":{"@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/proyectos.comunicaciondigital.es\/intro-scripts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/proyectos.comunicaciondigital.es\/"},{"@type":"ListItem","position":2,"name":"Utilizaci\u00f3n lenguajes script &#8211; Old"}]},{"@type":"WebSite","@id":"https:\/\/proyectos.comunicaciondigital.es\/#website","url":"https:\/\/proyectos.comunicaciondigital.es\/","name":"Portal de proyectos multimedia","description":"Grupo Ciberimaginario","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/proyectos.comunicaciondigital.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/proyectos.comunicaciondigital.es\/#\/schema\/person\/4699e2d8a8c19b218ae2f96940a3c337","name":"Manuel Gertrudix Barrio","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/litespeed\/avatar\/f3575d3bb447e8a94fb03b29e11fe081.jpg?ver=1779727757","url":"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/litespeed\/avatar\/f3575d3bb447e8a94fb03b29e11fe081.jpg?ver=1779727757","contentUrl":"https:\/\/proyectos.comunicaciondigital.es\/wp-content\/litespeed\/avatar\/f3575d3bb447e8a94fb03b29e11fe081.jpg?ver=1779727757","caption":"Manuel Gertrudix Barrio"},"url":"https:\/\/proyectos.comunicaciondigital.es\/en\/author\/gertrudix\/"}]}},"_links":{"self":[{"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/posts\/76010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/comments?post=76010"}],"version-history":[{"count":9,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/posts\/76010\/revisions"}],"predecessor-version":[{"id":80280,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/posts\/76010\/revisions\/80280"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/media?parent=76010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/categories?post=76010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proyectos.comunicaciondigital.es\/en\/wp-json\/wp\/v2\/tags?post=76010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}