<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Map_Area</id>
	<title>Map Area - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Map_Area"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Map_Area&amp;action=history"/>
	<updated>2026-08-30T04:02:41Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Map_Area&amp;diff=257789&amp;oldid=prev</id>
		<title>Joan: /* Map Area i el DOM */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Map_Area&amp;diff=257789&amp;oldid=prev"/>
		<updated>2018-09-20T15:37:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Map Area i el DOM&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
En moltes situacions el dissenyador/programador web no construeix de zero, sinó que vol fer una aplicació web ''similar a...'', potser per requisits del client. En aquesta unitat veurem com es pot analitzar i adaptar un '''Map Area''' per a ser reutilitzat per a la nostra aplicació. &lt;br /&gt;
&lt;br /&gt;
Aprofitar codi no té perquè ser una tasca fàcil. Té a veure amb tècniques d'enginyeria inversa. S'ha de saber destriar el pa de la palla, saber allò que és essencial i allò que és accessori.&lt;br /&gt;
&lt;br /&gt;
En el cas de les tecnologies web, a més, es barregen diferents tecnologies i tècniques: hem de conèixer html, Javascript, CSS, i tot plegat està interrelacionat.&lt;br /&gt;
&lt;br /&gt;
Es presenta la següent pràctica com un exemple real de les dificultats que un es pot trobar, i per tant seria bo que intentés l'alumne comprendre i realitzar pel seu compte el procediment que aquí es planteja.&lt;br /&gt;
&lt;br /&gt;
En definitiva, es tracta d'aprofitar el mapa de les províncies de l'Estat Espanyol, i la seva funcionalitat, per obtenir-ne una versió mínima llesta per a ser aprofitada en altres webs.&lt;br /&gt;
&lt;br /&gt;
Un altre objectiu és que l'alumne utilitzi les seves eines de depuració, com ara '''Firebug''', per realitzar la pràctica.&lt;br /&gt;
=Referències=&lt;br /&gt;
*http://www.segundamano.es/&lt;br /&gt;
*Descarrega el projecte: [[Fitxer:Practica map.zip]]&lt;br /&gt;
&lt;br /&gt;
Per definir els polígons (o rectangles o cercles) dins d'un mapa, es poden utilitzar diversos programes:&lt;br /&gt;
*GIMP. Té una opció per definir mapes.&lt;br /&gt;
*També ho pots fer amb el Dreamweaver&lt;br /&gt;
*solucions online: http://www.maschek.hu/imagemap/imgmap&lt;br /&gt;
&lt;br /&gt;
=Adaptació d'un Map Area=&lt;br /&gt;
S'anirà explicant pas a pas el procés que es segueix. Seria bo que l'alumne també seguís els mateixos passos.&lt;br /&gt;
==mapa1.htm==&lt;br /&gt;
1a prova: a www.segundamano.es faig ''Veure codi font'', i ho gravo amb el fitxer mapa1.htm. Es veu el mapa correctament (mapa i la llista de províncies). És un recurs local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
file:///home/joan/M06_WEC/practica_map/mapa1.htm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Però evidentment hi ha referències a fitxers i imatges que estan a Internet, i que es visualitzen bé perquè tinc connectivitat.&lt;br /&gt;
&lt;br /&gt;
==mapa2.htm==&lt;br /&gt;
Ara es tracta d'eliminar tot allò que sigui superflu i quedar-se només amb la part que ens interessa per tal de fer un mapa similar.&lt;br /&gt;
&lt;br /&gt;
En el &amp;lt;head&amp;gt; canvio el title i els metas per tal d'adaptar-los a les meves necessitats.&lt;br /&gt;
Elimino scripts de Javascript que no tenen res a veure amb la nostra adaptació. A mida que vaig suprimint scripts i capes visualitzo el resultat per assegurar-me de què ho estic fent bé i que la funcionalitat del mapa continua sent correcta. Elimino la referència a jquery que no s'utilitza per a res.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;body  onload=&amp;quot;javascript:addTargetAttribute()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
passa a ser &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
doncs aquesta funció no té res a veure amb la nostra adaptació.&lt;br /&gt;
&lt;br /&gt;
la referència al script '''index-min.js?3603''' la deixo tal qual perquè aquest serà el nostre javascript principal.&lt;br /&gt;
&lt;br /&gt;
Elimino capes: id=&amp;quot;BannerTopContainer&amp;quot;, id=&amp;quot;log&amp;quot;, i sobre tot tota la capçalera que ve representada per&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i que incloïa diferents capes com ara el logo,...&lt;br /&gt;
&lt;br /&gt;
Així doncs, identifico on comença el mapa:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mapMain&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que inclou el mapa pròpiament dit, la llista amb totes les províncies, i els post-its.&lt;br /&gt;
&lt;br /&gt;
Elimino totes les capes que fan referència a la appStores i al footer.&lt;br /&gt;
&lt;br /&gt;
També elimino tota la part que diu ''comScore'' fins avall (fins al &amp;lt;/body&amp;gt;), que és funcionalitat que no té res a veure amb l'aplicació.&lt;br /&gt;
&lt;br /&gt;
==mapa3.htm==&lt;br /&gt;
El primer que faré és eliminar els '''post-its'''. Si ens fixem els post-its també és un Area MAP, que vol dir que hem de suprimir la capa que inclou la imatge:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;home-postits&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
com la definició de les coordenades:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;map name=&amp;quot;postitmap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
De moment he reduït el codi a 250 línies.&lt;br /&gt;
&lt;br /&gt;
==mapa4.htm==&lt;br /&gt;
&lt;br /&gt;
el següent objectiu serà que tots els recursos que utilitzem (fitxers CSS, Javascript, imatges) siguin locals. Per fer-ho, crearé les carpetes js/, css/ i img/&lt;br /&gt;
*http://www.segundamano.es/js/index-min.js?3603 passa a anomenar-se js/script_js.js&lt;br /&gt;
la línia quedarà:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;js/script_js.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Descarrego la imatge 1x1.gif a la carpeta img/. Aquesta imatge senzillament és un pixel 1x1, i que aquest pixel es pinta sobre un llençol de dimensions 512x425:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ wget http://www.segundamano.es/img/1x1.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
queda:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;img class=&amp;quot;countyImage&amp;quot; src=&amp;quot;img/1x1.gif&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;425&amp;quot; usemap=&amp;quot;#spain_map&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ara fem el full d'estils:&lt;br /&gt;
*http://www.segundamano.es/css/index-min.css?3603&lt;br /&gt;
la línia quedarà:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;quot;css/style.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i si actualitzem la pàgina veiem que tot ha desaparegut. Això és perquè el fitxer CSS conté moltes referències tipus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
url('/img/sprite_mapa1.png?3582')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i aquestes referències estan malament, tal com s'explica. El primer és descarregar totes les imatges necessàries. El professor ho fa de la següent manera:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd img/&lt;br /&gt;
&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_mapa1.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_mapa2.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_mapa3.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_mapa4.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_mapa5.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/spain_map.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_home.png?3582&lt;br /&gt;
$ wget http://www.segundamano.es/img/sprite_home_icons.png?3582&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S'ha d'eliminar el sufix ''?3582'' en aquestes imatges.&lt;br /&gt;
&lt;br /&gt;
substituïm el llençol de color blanc sobre el qual pintarem el mapa:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;img class=&amp;quot;countyImage&amp;quot; src=&amp;quot;http://www.segundamano.es/img/1x1.gif&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;425&amp;quot; usemap=&amp;quot;#spain_map&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
per&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;img class=&amp;quot;countyImage&amp;quot; src=&amp;quot;img/1x1.gif&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;425&amp;quot; usemap=&amp;quot;#spain_map&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Després de fer aquests canvis no es veuen les imatges per pantalla. El que falta és referenciar amb la url absoluta del recurs local totes les imatges. Per exemple:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.sprite-region-1{background:transparent url('file:///home/joan/M06_WEC/practica_map/img/sprite_mapa1.png') 0 1px no-repeat;width:512px;height:425px}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Però aquesta no és la solució correcta. El correcta és posar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.sprite-region-1{background:transparent url('../img/sprite_mapa1.png') 0 1px no-repeat;width:512px;height:425px}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
és a dir, les imatges que estan referenciades en el fitxer css/style.css han de trobar la seva ruta correcta dins de la carpeta img/.&lt;br /&gt;
&lt;br /&gt;
==mapa5.htm==&lt;br /&gt;
Finalment queda netejar tot el codi. Eliminem tota referència a ''Anuncios...'', i fiquem com a enllaços la informació que ens dóna la wikipedia de cada província. Ens preocupem de què tots els enllaços funcionin, i això passa per eliminar les funcions javascript de tipus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
onclick=&amp;quot;return xt_click(this,'C','1','Acceso_Listado_Home','N')&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Després de fer tota la neteja i comprovar que els enllaços funcionen, el fitxer mapa5.htm té 143 línies.&lt;br /&gt;
&lt;br /&gt;
=Coses a fer=&lt;br /&gt;
*S'hauria de canviar el color de les imatges per tal de què no recordessin a l'aplicació original&lt;br /&gt;
*S'hauria de netejar els fitxers CSS per tal d'eliminar tot allò innecessari&lt;br /&gt;
*No s'ha tocat per res el fitxer javascript (la única cosa que s'ha fet és ressaltar les funcions ''change_image'' i ''hide_image''). S'hauria d'analitzar la funcionalitat javascript que tenim en el ''mouseover'', que d'altra banda és bastant simple.&lt;br /&gt;
&lt;br /&gt;
=Map Area i el DOM=&lt;br /&gt;
L'estudi que estem fent dels '''map area''' ha vingut donat perquè estàvem estudiant el DOM i ens va sorgir un exemple on es veien mapes HTML. Per no perdre de vista que estem estudiant el DOM i com podem accedir (i modificar) a tots els elements d'una pàgina web, i concretament del DOM, anem a fer unes quantes ''perreries'' en el nostre mapa de les províncies: (veure '''mapa_dom.htm''')&lt;br /&gt;
&lt;br /&gt;
*http://www.w3schools.com/jsref/dom_obj_area.asp&lt;br /&gt;
*http://www.w3schools.com/jsref/dom_obj_element.asp&lt;br /&gt;
&lt;br /&gt;
Des del DOM podem accedir programàticament a un mapa. Aquestes són les propietats a les que podem accedir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alt 	Sets or returns the value of the alt attribute of an area&lt;br /&gt;
coords 	Sets or returns the value of the coords attribute of an area&lt;br /&gt;
hash 	Sets or returns the anchor part of the href attribute value&lt;br /&gt;
host 	Sets or returns the hostname:port part of the href attribute value&lt;br /&gt;
hostname 	Sets or returns the hostname part of the href attribute value&lt;br /&gt;
href 	Sets or returns the value of the href attribute of an area&lt;br /&gt;
noHref 	Sets or returns the value of the nohref attribute of an area&lt;br /&gt;
pathname 	Sets or returns the pathname part of the href attribute value&lt;br /&gt;
port 	Sets or returns the port part of the href attribute value&lt;br /&gt;
protocol 	Sets or returns the protocol part of the href attribute value&lt;br /&gt;
search 	Sets or returns the querystring part of the href attribute value&lt;br /&gt;
shape 	Sets or returns the value of the shape attribute of an area&lt;br /&gt;
target 	Sets or returns the value of the target attribute of an area&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el fitxer ''mapa6.htm'' hem afegit el següent codi JS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
//http://www.w3schools.com/jsref/dom_obj_area.asp&lt;br /&gt;
//http://www.w3schools.com/jsref/dom_obj_element.asp&lt;br /&gt;
&lt;br /&gt;
var llista_mapes=document.getElementsByTagName(&amp;quot;map&amp;quot;);&lt;br /&gt;
alert('Número de mapes: '+llista_mapes.length);&lt;br /&gt;
&lt;br /&gt;
var mapa_prov=document.getElementsByTagName(&amp;quot;map&amp;quot;)[0];&lt;br /&gt;
var llista_arees = mapa_prov.getElementsByTagName(&amp;quot;area&amp;quot;);&lt;br /&gt;
alert('Número d\'àrees en el mapa: '+llista_arees.length);&lt;br /&gt;
//accedim a dades de la 5a àrea:&lt;br /&gt;
alert(&amp;quot;title: &amp;quot;+llista_arees[4].title);&lt;br /&gt;
alert(&amp;quot;alt: &amp;quot;+llista_arees[4].alt);&lt;br /&gt;
alert(&amp;quot;href: &amp;quot;+llista_arees[4].href);&lt;br /&gt;
alert(&amp;quot;shape: &amp;quot;+llista_arees[4].shape);&lt;br /&gt;
alert(&amp;quot;coords: &amp;quot;+llista_arees[4].coords);&lt;br /&gt;
&lt;br /&gt;
//recorrem totes les àrees... bé, no totes&lt;br /&gt;
for (var i=0;i&amp;lt;llista_arees.length-48;i++)&lt;br /&gt;
  {&lt;br /&gt;
	document.write(llista_arees[i].title);&lt;br /&gt;
  	document.write(&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
//la primera província és Araba, li canviaré les coordenades:&lt;br /&gt;
llista_arees[0].coords = '0,0,20,0,20,20,0,20';&lt;br /&gt;
&lt;br /&gt;
//canvio el comportament (event) d'Alcant (3) per Albacete (2)&lt;br /&gt;
//http://www.w3schools.com/jsref/dom_obj_event.asp&lt;br /&gt;
llista_arees[1].onmouseover=function(){change_image(3);};&lt;br /&gt;
llista_arees[1].onmouseout=function(){hide_image(3);};&lt;br /&gt;
llista_arees[2].onmouseover=function(){change_image(2);};&lt;br /&gt;
llista_arees[2].onmouseout=function(){hide_image(2);};&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, novembre 2019&lt;br /&gt;
[[Categoria: Institut Jaume Balmes]]&lt;br /&gt;
[[Categoria: Assignatura DAW-M06-WEC]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>