
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>informatica&#38;tlc.it - Blog &#187; javascript</title>
	<atom:link href="http://www.informaticaetlc.it/blog/category/programmazione/js/feed" rel="self" type="application/rss+xml" />
	<link>http://www.informaticaetlc.it/blog</link>
	<description>Portale dedicato all&#039;informatica e alle telecomunicazioni</description>
	<lastBuildDate>Fri, 12 Aug 2011 20:49:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Utilizzare lightbox su immagini caricate con innerHTML</title>
		<link>http://www.informaticaetlc.it/blog/utilizzare-lightbox-da-immagini-caricate-con-innerhtml.html</link>
		<comments>http://www.informaticaetlc.it/blog/utilizzare-lightbox-da-immagini-caricate-con-innerhtml.html#comments</comments>
		<pubDate>Sun, 24 Jul 2011 12:50:56 +0000</pubDate>
		<dc:creator>ilos37</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[funzione]]></category>
		<category><![CDATA[initLightbox]]></category>
		<category><![CDATA[innerHTML]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[onclick]]></category>
		<category><![CDATA[tag]]></category>

		<guid isPermaLink="false">http://www.informaticaetlc.it/blog/?p=277</guid>
		<description><![CDATA[Il lightbox è un&#8217;applicazione javascript per la visualizzazione delle immagini in maniera elegante. Per maggiori informazioni sull&#8217;utilizzo e per il download dei files andate qui.
Il lightbox è uno strumento molto utilizzato. Di recente mi è capitato di dover utilizzare il lightbox su immagini caricate dinamicamente all&#8217;interno di un div; dopo svariate prove sono giunto a [...]]]></description>
			<content:encoded><![CDATA[<p>Il <strong>lightbox </strong>è un&#8217;applicazione <em>javascript </em>per la visualizzazione delle immagini in maniera elegante. Per maggiori informazioni sull&#8217;utilizzo e per il download dei files andate <a rel="nofollow" href="http://www.lokeshdhakar.com/projects/lightbox2/" target="_blank">qui</a>.</p>
<p>Il lightbox è uno strumento molto utilizzato. Di recente mi è capitato di dover utilizzare il lightbox su immagini caricate <em>dinamicamente </em>all&#8217;interno di un div; dopo svariate prove sono giunto a utilizzare la seguente funzione javascript:</p>
<pre class="brush:javascript;">&lt;script type="text/javascript" language="javascript"&gt;
function showImage(w,h,image) {
 var obj=document.getElementById("id_div");
 obj.innerHTML="";
 obj.innerHTML+="&lt;a href='"+image+"' rel='lightbox'&gt;&lt;img src='"+image+"' width='"+w+"' height='"+h+"'&gt;&lt;/a&gt;";
 initLightbox();
 }
&lt;/script&gt;

&lt;div id="id_div"&gt;
&lt;/div&gt;</pre>
<p>La funzione<strong> showImage()</strong> va a scrivere all&#8217;interno del div con id uguale a &#8220;<strong>id_div</strong>&#8221; inserendo sia il tag <em>&lt;a&gt;</em> che il tag <em>&lt;img&gt;</em> con il metodo <strong>innerHTML</strong>, passando anche l&#8217;altezza e la larghezza che dovrà avere l&#8217;immagine. Ovviamente per poter far funzionare il lightbox bisogna inserire all&#8217;interno del tag <em>&lt;a&gt;</em> l&#8217;attributo <strong>rel=&#8221;lightbox&#8221;</strong>.<br />
Dopodiché bisogna reinizializzare il lightbox tramite la funzione<strong> initLightbox()</strong>, questo accade perché ogni variazione dinamica dell&#8217;HTML sul codice delle immagini richiede la reinizializzazione del lightbox.<br />
Nota: il primo innerHTML con argomento vuoto serve a evitare che le chiamate della funzione successive alla prima abbiano come effetto la sovrapposizione delle immagini precedentemente caricate.</p>
<p>Un&#8217;altra soluzione molto simile alla prima è la seguente:</p>
<pre class="brush:js;">&lt;script type="text/javascript" language="javascript"&gt;
function showImage(w,h,image) {
 var obj=document.getElementById("linkID");
 var objIMG=document.getElementById("imgID");
 obj.href=image;
 objIMG.src=image;
 objIMG.width=w;
 objIMG.height=h;
 initLightbox();
 }
&lt;/script&gt;

&lt;div id="id_div"&gt;
&lt;a id="linkID" rel="lightbox"&gt;&lt;img id="imgID"  /&gt;&lt;/a&gt;
&lt;/div&gt;</pre>
<p>La differenza rispetto al caso precedente sta nell&#8217;inserire a priori all&#8217;interno del div i tag <em>&lt;a&gt;</em> e <em>&lt;img&gt;</em> e nell&#8217;inserire dinamicamente i contenuti degli attributi.<br />
L&#8217;utilizzo della funzione è molto semplice, basta richiamarla in un qualsiasi punto della pagina web, ad esempio tramite <em>onclick </em>dentro un tag.</p>
<p>Entrambe le soluzioni proposte sono state testate su firefox 4/5 e su IE9.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.informaticaetlc.it/blog/utilizzare-lightbox-da-immagini-caricate-con-innerhtml.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizzare località in Google Maps da coordinate inserite in un database</title>
		<link>http://www.informaticaetlc.it/blog/visualizzare-localita-in-google-maps-da-coordinate-inserite-in-un-database.html</link>
		<comments>http://www.informaticaetlc.it/blog/visualizzare-localita-in-google-maps-da-coordinate-inserite-in-un-database.html#comments</comments>
		<pubDate>Mon, 28 Dec 2009 21:18:26 +0000</pubDate>
		<dc:creator>ilos37</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[addoverlay]]></category>
		<category><![CDATA[createmarker]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[geocoder5]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[gevent]]></category>
		<category><![CDATA[gicon]]></category>
		<category><![CDATA[gmap2]]></category>
		<category><![CDATA[gpoint]]></category>
		<category><![CDATA[gsize]]></category>
		<category><![CDATA[indirizzo]]></category>

		<guid isPermaLink="false">http://www.informaticaetlc.it/blog/?p=29</guid>
		<description><![CDATA[Questo articolo cerca di fornire una soluzione semplice all'utilizzo delle Google Maps prendendo dati dal database. La soluzione utilizza sia javascript che php.]]></description>
			<content:encoded><![CDATA[<p>Posto questo articolo per un problema che mi ha fatto dannare per qualche sera. Avevo degli indirizzi in un database da convertire tramite <strong><em>geocoding</em></strong> in coordinate e quindi visualizzarli in google maps. Problema: non riuscivo ad avere un comportamento coerente delle visualizzazioni a ogni caricamento della pagina&#8230; Perciò ho cambiato il codice inserendo nel DB non solo l&#8217;indirizzo ma direttamente le coordinate. Lo script proposto avrà una parte php per l&#8217;inserimento delle coordinate nel DB e una parte javascript per la visualizzazione della mappa.</p>
<p>Per prima cosa vediamo come fare l&#8217;inserimento di un indirizzo nel DB utilizzando la <strong>classe geocoder5</strong> che ho trovato al <a title="geocoding in php" rel="nofollow" href="http://www.mariospada.net/2008/04/php-una-classe-per-trovare-le.html" target="_blank">questo</a> indirizzo.  Supponiamo di aver inserito i valori che ci interessano (via, cap, città, proviancia ed, eventualmente, nazione) in un form e di riprenderli in un file che li elabora.</p>
<pre class="brush:php,html;">require(&quot;geocoder5.class.php&quot;);

//inseriamo la nostra apiKey
$gmpKey = &quot;tua apiKey&quot;;
$data = array();

//la variabile sede contiene tutti i campi sopra citati
array_push($data, addslashes($sede));
$test = &amp; new geocodeaddr($data,$gmpKey); //istanzio il nuovo oggetto
$geocodeResults = $test-&gt;getAddress(); //richiamo la funzione
$a=0;

//controllo che l&#039;indirizzo sia stato trovato altrimenti visualizzo l&#039;errore
$controlla=$test-&gt;errorMsg1;
if ($controlla==&#039;&#039;)
foreach ($geocodeResults as $rowResult){

//prendo i valori solo alla prima iterazione
if($a==0){
$query=&quot;INSERT INTO mappa (sede, latitudine, longitudine) VALUES( &#039;$sede&#039;, &#039;&quot;.$rowResult[&#039;lat&#039;].&quot;&#039;, &#039;&quot;.$rowResult[&#039;lng&#039;].&quot;&#039;);&quot;;
mysql_query($query) or die(mysql_error());
}

$a++;
}
else
echo $test-&gt;errorMsg1;
} ?&gt;
</pre>
<p>Il codice fin qua è molto semplice, stiamo solamente utilizzando la classe per tradurre l&#8217;indirizzo (che ricordo deve essere possibilmente nella forma via, cap, città, proviancia ed, eventualmente, nazione) in coordinate geografiche e inseriamo tali dati in una tabella del DB. Inoltre vi è la possibilità di gestire l&#8217;eventuale errore (indirizzo non trovato) personalizzandolo a vostro piacimento .</p>
<p>Passiamo adesso alla visualizzazione della mappa. Per prima cosa bisogna recuperare i dati dal database e inserirli in un vettore; avremo tre vettori: uno per l&#8217;indirizzo (lo useremo come descrizione nella nuvoletta che compare cliccando sopra un punto ben preciso), uno per la latitudine e uno per la longitudine. Salto questa parte che è abbastanza semplice e passiamo al resto del codice.</p>
<pre class="brush:js;">
&lt;script src=&quot;http://maps.google.com/maps?file=api&amp;amp;dev=2&amp;amp;hl=it&amp;amp;key=&quot;&lt;span style=&quot;color: #888888;&quot;&gt;tuaKey&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
//&lt; ![CDATA[&lt;/code&gt;

var map = null;

&lt;span style=&quot;color: #ccffcc;&quot;&gt;&lt;span style=&quot;color: #333399;&quot;&gt;function load()&lt;/span&gt; &lt;/span&gt;{
if (GBrowserIsCompatible()) {

map = new GMap2(document.getElementById(&quot;map&quot;));
map.addControl(new GSmallMapControl());   /* pannellino in alto a sx x ingrandire o diminuire lo zoom */
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(41.90, 12.49), 5);  /* centro la mappa sull&#039;italia */
geocoder = new GClientGeocoder();    /* oggetto che mi consente di comunicare col server gg x ottenere lat e log degli indirizzi*/

}
}//load

&lt;span style=&quot;color: #333399;&quot;&gt;function createMaker&lt;/span&gt;(infos, lat, lon){

var point;
point = new GLatLng(lat,lon); //creo il punto
map.addOverlay(createMarker(point, infos)); //aggiunge il punto alla mappa

}

&lt;span style=&quot;color: #333399;&quot;&gt;function createMarker&lt;/span&gt;(point, infos)
{
var icona = new GIcon();
icona.image = &quot;img/marker.png&quot;; //scelgo il puntatore
icona.iconSize = new GSize(12, 20);
icona.iconAnchor = new GPoint(6, 20);
icona.infoWindowAnchor = new GPoint(6, 20);
icona.shadowSize = new GSize(24, 20);

// Variabile marker
var marker = new GMarker(point, icona);

// Crea listener per il click sull&#039;oggetto
GEvent.addListener(marker, &quot;click&quot;, function()
{
marker.openInfoWindowHtml(infos);
});

return marker;
}

&lt;span style=&quot;color: #333399;&quot;&gt;function showAll()&lt;/span&gt;{

var infos=Array(
&lt; ?php
$b=0;
while($b&lt;(count($x)-1)){
echo &quot;$indirizzi[$b]&quot;;
if($b!=(count($indirizzi)-2)) echo &quot;,&quot;;
$b++;
}//while1
?&gt;
);

var latitudine=Array(
&lt; ?php
$c=0;
while($c&lt;(count($latitudine)-1)){
echo &quot;$latitudine[$c]&quot;;
if($c!=(count($latitudine)-2)) echo &quot;,&quot;;
$c++;
}//while2
?&gt;
);

var longitudine=Array(
&lt; ?php
$d=0;
while($d&lt;(count($longitudine)-1)){
echo &quot;$longitudine[$d]&quot;;
if($d!=(count($longitudine)-2)) echo &quot;,&quot;;
$d++;
}//while3
?&gt;
);

for(var i=0; i&lt;indirizzi .length; i++) createMaker(infos[i], latitudine[i], longitudine[i]);

}//showAll
//]]&gt;
&lt;/indirizzi&gt;&lt;/script&gt;
</pre>
<p>La funzione <span style="color: #333399;">load()</span> ha il compito di istanziare un oggetto del tipo <span style="color: #333399;">GMap2</span> che è quello che ci permette di comunicare con il server di google per ottenere i servizi necessari al nostro scopo. Successivamente verrà richiamata la funzione <span style="color: #333399;">showAll()</span> che ha il compito di trasformare gli array php in array javascript per passarli alla funzione <span style="color: #333399;">createMaker<span style="color: #000000;">. Quest&#8217;ultima funzione verrà richiamata più volte per quante sono le località da visualizzare nella mappa.</span></span></p>
<p><span style="color: #333399;"><span style="color: #000000;">La funzione </span></span><span style="color: #333399;">createMaker <span style="color: #000000;">deve creare, per ogni coppia di coordinate geografiche, un punto per la mappa che verrà aggiunto dalla funzione </span></span><span style="color: #333399;">addOverlay </span>della classe GMap2<span style="color: #333399;"><span style="color: #000000;"> </span>. <span style="color: #000000;">Tale funzione accetta in ingresso, però, un oggetto di tipo GMarker e, per ottenere tale oggetto, richiamiamo la funzione </span></span><span style="color: #333399;">createMarker. <span style="color: #000000;">All&#8217;interno di tale funzione </span></span><span style="color: #333399;"><span style="color: #000000;">possiamo definire l&#8217;icona (un&#8217;immagine a nostra scelta) da utilizzare e le sue proprietà, ma lo scopo principale è quello di creare il <span style="color: #333399;">marker </span>passandogli il punto e le informazioni da visualizzare nella relativa nuvoletta. Nell&#8217;esempio riportato la nuvoletta delle informazioni viene visualizzata al click del mouse sull&#8217;icona ed è gestita da </span></span><span style="color: #333399;">GEvent.addListener</span><span style="color: #333399;"><span style="color: #000000;">.</span></span></p>
<p><span style="color: #333399;"><span style="color: #000000;">Supponiamo di inserire il codice appena visto in un file chiamato mappa.php, per terminare il nostro script non ci resta che richiamare le funzioni al caricamento della pagina:</span></span></p>
<pre class="brush:js;">&lt;body onLoad=&quot;load(); showAll();&quot; onUnload=&quot;GUnload()&quot;&gt;</pre>
<p><span style="color: #333399;"><span style="color: #000000;"> Se volessimo integrare la mappa in una nostra pagina web a parte basta inserire il codice:</span></span></p>
<pre class="brush:html;">&lt;iframe align=&quot;middle&quot; width=&quot;430&quot; height=&quot;450&quot; frameborder=&quot;0&quot; src=&quot;mappa.php&quot;&gt;</pre>
<p>nel punto della pagina in cui vogliamo visualizzare la mappa e il gioco è fatto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.informaticaetlc.it/blog/visualizzare-localita-in-google-maps-da-coordinate-inserite-in-un-database.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

