CSS3: introduzione alle novità

Ok, a differenza di alcuni mesi fa, ora i tempi sono maturi per iniziare ad esplorare le novità introdotte da CSS3 e, giusto per rompere il ghiaccio, inizieremo dalle istruzioni che maggiormente si stanno diffondendo: quelle che riguardano colori, testi, ombre e bordi.

In realtà CSS3 introduce una miriade di novità, che vi illustrerò di volta in volta in articoli successivi a questo: una delle mie preferite sono le transition che, vi assicuro, riescono spesso a sostituire alla grande jQuery per animazioni, rotazioni, ecc.

Ma torniamo alle prime novità di CSS3: eh sì, per la gioia di tutti i web designer che sinora avevano solo Photoshop come alleato per applicare ombre a testi ed oggetti o realizzare bordi arrotondati, ora possiamo fare tutto con CSS3 🙂 …ma so già cosa state per chiedervi: quali browser supporteranno quanto stiamo per vedere ?

A questa domanda risponderò dopo ma vi anticipo che, a meno di voler estendere la compatibilità ad IE 6 (che è un po’ come cercare di resuscitare i morti :D), tutti gli altri browser se la cavano egregiamente, magari con alcuni accrocchi come Modernizr.

Modificatore rgba

Ma torniamo a noi: partiamo con un nuovo modificatore che riguarda, in generale, la definizione del colore per un qualunque oggetto.

Guardate le seguenti istruzioni:

background: rgba(255,255,255,0.75);

border: 1px solid rgba(255,255,255,1);

Notate qualcosa di diverso rispetto al solito ?

Rispetto alla precedente codifica (esadecimale) dei colori (#ffffff), in questo caso abbiamo utilizzato un formato basato sui valori di luminosità delle tre componenti di colore RGB in una scala da 0 a 255.

L’ultimo valore, invece, rappresenta il coefficiente “alpha” relativo all’opacità che va da 0 (trasparente) a 1 (colore pieno).

Come vedete, il modificatore rgba può essere usato in qualsiasi dichiarazione di un colore che prima era riservato al solo formato esadecimale (la seconda riga dell’esempio, infatti, lo applica al colore del bordo).

Ombra dei testi

Questa è una nuova direttiva che riesce a dare maggior risalto ai testi, ad esempio, per conferire un minimo di profondità o aggiungere ombre evidenti ad un testo.

L’istruzione è, appunto, text-shadow, vediamola in azione:

text-shadow: 0px 1px 2px #000;

Vi spiego i valori utilizzati:

  • il primo valore (in questo caso 0px) rappresenta l’offset orizzontale dell’ombra rispetto al testo: valori positivi indicano uno spostamento a destra del testo, valori negativi a sinistra.
  • il secondo valore, invece, rappresenta l’offset verticale (in questo caso 1 pixel)….anche qui: valori positivi per offset in basso rispetto al testo, valori negativi in alto rispetto al testo.
  • il terso valore è il “radius”, il raggio dell’ombra: è mio modesto parere che le famose “drop shadow”, quelle ombre enooooormi sotto al testo, siano ormai old-style 🙂 …io adoro utilizzare valori molto bassi per conferire tridimensionalità ai testi senza eccessi 😉
  • l’ultimo valore è chiaramente il colore dell’ombra, in questo caso espresso in valori esadecimali con 8bit per colore (ma avrei potuto utilizzare rgba tranquillamente ;))

Bordi arrotondati

Questa istruzione, devo dire, porta i segni della costante guerra tra i browser e, di fatto, richiede 4 istruzioni per fare praticamente la stessa cosa, ma per 4 tipologie di browser differenti.

Se volessimo arrotondare, ad esempio, di 10pixel un oggetto qualsiasi, dovremmo scrivere:

-moz-border-radius: 10px;

-khtml-border-radius: 10px;

-webkit-border-radius: 10px;

border-radius: 10px;

Le prime tre istruzioni sono specifiche per alcuni browser, l’ultima è quella che “si spera” diventi lo standard…ma per il momento sono richieste tutte e 4.

In questo esempio, però, ci siamo tenuti sul caso semplice: stesso raggio per tutti i 4 bordi dell’oggetto in questione.

Se volessimo, ad esempio, definire raggi differenti per i 4 angoli di un oggetto, avremmo:

border-radius: 5px 10px 15px 20px;

dove i valori sono, nell’ordine: top-left, top-right, bottom-right, bottom-left.

Quindi, in questo caso, avrò applicato un raggio di:

5pixel in alto a sinistra

10pixel in alto a destra

15pixel in basso a destra

20pixel in basso a sinistra

Ombra degli oggetti

Analogamente a quanto abbiamo visto per i testi, è possibile applicare un’ombra anche agli oggetti – il concetto è lo stesso applicato ai testi, con le quattro istruzioni specifiche per i singoli browser:

-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5);

-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5);

-khtml-box-shadow: 0 1px 3px rgba(0,0,0,0.5);

box-shadow: 0 1px 3px rgba(0,0,0,0.5);

In questo esempio sto applicando un’ombra:

  • di colore nero con opacità al 50%
  • sfasata verticalmente di 1pixel
  • di un raggio di 3pixel

Modernizr, e browser supportati

Ok, tutto bellissimo: ma ora che me ne faccio di queste istruzioni se i browser più diffusi non le supportano ? …e qui entra in gioco Modernizr una libreria Javascript che estende il supporto ad HTML 5 e CSS3 a browser poco avvezzi alle novità.

Basterà infatti includere lo script di Modernizr nelle nostre pagine per applicare bordi ed ombre:

<script src=”modernizr-1.1.min.js”></script>

Discorso a parte, invece, per il modificatore rgba: purtroppo per questo non c’è Modernizr che tenga e, a costo di rinunciare all’alpha, possiamo utilizzare rgb per IE, ecco un esempio:

border: 5px solid rgb(255,255,255); /*rgba fix per IE */

border: 5px solid rgba(255,255,255,0.75);

Pixel ? ma ora non conviene usare i punti ?

Eh già, negli esempi appena riportati ho usato pixel come unità di misura per i bordi…in realtà, mentre vi scrivo, è in corso una evoluzione nei display di alcuni dispositivi, ad esempio un certo Retina Display di iPhone 4…non so se avete presente ?! un display con densità di pixel doppia rispetto al numero di punti.

Pertanto, sarà buona norma utilizzare i punti (pt) al posto dei pixel (px), ma per i dettagli vi rimando all’articolo in questione 😉

ciaooo 🙂

Google Nexus One: un flop ? …inaspettato ?

La notizia non è freschissima: sono circa 2 mesi che dai blog ufficiali di Google e del Nexus One si legge della scelta di Big G, relativamente alla interruzione della commercializzazione online del loro primo (e, probabilmente, l’ultimo ?) smartphone.

Qualche giorno fa un aggiornamento: in cui si legge che è proprio di questi giorni l’ultima consegna di dispositivi e che, una volta venduti, renderanno il prodotto non più acquistabile online.  (Notate bene, il comunicato si riferisce solo alla vendita online: il Nexus One resterà comunque acquistabile mediante i vari operatori telefonici, quali Vodafone, KT, ecc).

Nel blog ufficiale di Google, invece, si legge chiaramente che i dati di vendita online del dispositivo sono stati al di sotto delle aspettative, contrariamente alla diffusione di Android.

Effettivamente, i dati di vendita del Nexus One non sono stati proprio entusiasmanti: si parlava di circa 80 mila dispositivi venduti nel primo mese …numeri molto bassi se si pensa che il neonato iPhone 4 viaggia su 1 Milione di vendite/SETTIMANA nonostante il famoso “effetto mano”.

Ma voglio chiarire l’obiettivo di questo post: non intendo confrontare i due device né decantare le caratteristiche dell’uno a sfavore delle scelte di marketing dell’altro…piuttosto gettare le basi per qualche spunto di riflessione 😉

Fermo restando che, come ho sempre pensato, non basta il sistema operativo a rendere appetibile un prodotto (come per i PC non basta infilare schede in un case per fare un PC 🙂 e che il Nexus One, a mio avviso, non poteva diventare l’anti-iPhone, quello che a me fa riflettere, a valle della decisione di Big G, è l’approccio con il quale il gigante delle ricerche sul web abbia “sondato il terreno” del mobile.

Terreno molto battuto ultimamente e che, sono più che convinto, costituisca ormai il pensiero dominante dei colossi che di servizi e contenuti ne fanno il proprio business.

Ma facciamo un passo indietro: Google inizia a sviluppare un sistema operativo che finisce negli smartphone di Samsung, Motorola, ecc…sistema operativo che integra tutti i servizi di Big G e che, per poter contare su applicazioni custom, va nella direzione degli sviluppatori più smaliziati (sviluppo in Java, con installazione del SDK per Eclipse).

Poi realizza un dispositivo che, per il motivo di cui sopra, alimenta il desiderio degli utenti “geek” e tenta il grande passo commercializzando il prodotto, sia con gli operatori telefonici che mettendolo in vendita online.

Ma perché il Nexus One, probabilmente come gli altri dispositivi Android, non si diffonde con la stessa rapidità dell’iPhone ?

  • Difficoltà nello sviluppo delle applicazioni ? …a cominciare dal’ installazione della suite di sviluppo per Android ?Beh, sicuramente, a mio avviso, costituisce un deterrente per gli sviluppatori (magari quelli alle prime armi) dedicare almeno 1h del proprio tempo (o le prime 90 pagine di un famoso manuale per Android), solo per installare Eclipse+Android SDK…ma non credo affatto sia questo il punto 😉
  • Eterogeneità dei dispositivi (per citare il mio amico Gianfranco), per cui essendoci troppe varianti di cellulari Android, gli sviluppatori hanno difficoltà a lavorare su un dispositivo di riferimento ?Mah…probabilmente questo potrebbe creare qualche non banale problema di compatibilità di una stessa applicazione su dispositivi diversi: ma, se vogliamo, accade qualcosa di simile anche su iPhone/iPod touch a causa delle varie versioni tutt’ora in commercio (non vi dico quanto rosico per la mancanza della bussola sul mio iPhone 3G: non posso user le app di augmented reality!!! 🙂
  • Marketing totalmente differente ?Molto probabile, ma non credo che questo possa indurre in così poco tempo Big G a gettare la spugna sullo sviluppo di un device ad appena 6 mesi dalla commercializzazione.
  • Obiettivi differenti ?Ci siamo quasi 🙂 …ma allora perché commercializzare un prodotto, dotato di un sistema operativo veramente evoluto (perché come qualcuno che segue il mio blog ricorderà, io ne ho apprezzato ampiamente i pregi sul fronte tecnico).

OK, vi dico la mia: Android, incarnando tutti i servizi, compresa la ricerca di Google, si basa sulla FORNITURA DEI SERVIZI, NON DI CONTENUTI!!!

Ed è in quest’ultimo punto che secondo me c’è nocciolo della questione: la differenza sostanziale tra Google ed Apple, in questo settore, è che mentre il primo fornisce servizi e li estende al mobile mediante Android, il secondo ha catalizzato la vendita dei dispositivi basati sulla riproduzione di contenuti che, con iTunes Music Store (di cui App store ne è una naturale evoluzione), Apple rende accessibili su qualsiasi dispositivo, ivi compresi PC Windows.

Alla luce di questo, nonostante il Nexus One possa essere stato utilizzato (IMHO) come un cavallo di Troia pieno di robottini verdi, è fin troppo evidente la difficoltà di Google  nel innescare una azione di concorrenza ad un “dispositivo” Apple: sto pensando ai contenuti… per i servizi, invece, resto dell’idea che Google abbia tra le mani il più potente cluster al mondo su cui indicizzare contenuti, far girare applicazioni web e fare storage (se pensate a quanto spazio ci mette a disposizione per la sola Gmail 🙂 )

Del resto, nel comunicato del 14 Maggio scorso è chiaro che l’utenza cui Google si è rivolta con il proprio device, è interessata ad avere dei servizi, necessariamente legati ad un operatore di telefonia…

Quindi, se condividete la mia corrente di pensiero, convenite sul fatto che Google abbia cercato di promuovere ulteriormente Android con un dispositivo ? …la cui vendita non è andata benissimo, ok…ma se si guarda questa azione come una azione di marketing, probabilmente l’esito delle vendite di Nexus One diventano quasi trascurabili a fronte dell’obiettivo di promuovere Android, no ?!

Torniamo per un istante ad Apple: se guardiamo i dati relativi alle revenue per segmento di prodotto/servizio non è fin troppo evidente che, pochi mesi fa, la maggior parte del fatturato Apple derivava dalla vendita di dispositivi che fondamentalmente consentono la riproduzione, piuttosto che la creazione, di contenuti audio/video ?

Sono il solo che pensa che Apple, in definitiva, stia assecondato le esigenze degli utenti di creazione di contenuti in secondo luogo rispetto alla fruizione degli stessi ? …guardate l’iPad
…certo, è anche vero che sull’iPhone 4 si possono registrare e montare video in HD…ma è proprio di questi giorni la notizia che iTunes inizierà a vendere contenuti in alta definizione, proprio per il nuovo gioiellino.

…insomma, per quanto mi riguarda, sembrerebbe fin troppo evidente ciò che sta accadendo in questo momento epocale di lotta alla conquista delle tasche degli utenti (…ma che banali!!! 😀 …non mi riferivo al costo degli smartphone! …piuttosto a dove si tengono in genere: in tasca! ;))

…ma, a parte gli scherzi, questa è la mia idea (magari fantasiosa o amplificata dai fumi dell’alcol contenuto nel mio Jager con 2 cubetti di ghiaccio :D) , voi che ne pensate ?

[l’immagine è tratta da wired.com]

Retina Display: come cambia il web design

Dalla presentazione del nuovo iPhone 4 le speculazioni su come “ora tutto cambia, di nuovo” non hanno smesso di ronzarmi in testa.

All’inizio la mia prima considerazione è stata: “ok, la prima cosa che cambia è il saldo del mio conto corrente”, visto che il nuovo gioiellino costa un botto.

La seconda è stata “ma davvero dovrò impugnarlo solo con la mano destra ???” 😀

…vabbè, tralascio le polemiche su quello che accadrà in questi giorni in merito a qualche “problema di gioventù” (e mi auguro che tutto si risolva per il meglio).

Ma aldilà di questi (poco trascurabili) dettagli 🙂 …il primo vero elemento di innovazione di questo dispositivo, che non vedo l’ora di sperimentare di persona, è il display: il famigerato Retina Display, infatti, ha una risoluzione di 960×640 pixel, ovvero il DOPPIO dei pixel per ogni punto.

Cosa cambia, quindi, nella realizzazione di interfacce per questo dispositivo ?

Sostanzialmente tutto ciò che è realizzato con grafica vettoriale (quindi, elementi della gui per applicazioni native, font ed immagini vettoriali) avrà una migliore visualizzazione potendo contare, a parità di punti, di un numero doppio di pixel…e per questi elementi, tra l’altro, non è richiesta alcuna azione di ottimizzazione da parte dello sviluppatore (sia di applicazioni native che web).

Il discorso cambia, invece, per le immagini: per quest’ultime, infatti, il display dell’iPhone 4 tenderà a rappresentare immagini dalle dimensioni X,Y su un numero di pixel pari ad 2*X, 2*Y, ciò si traduce in una rappresentazione meno definita delle immagini rispetto alla risoluzione reale del display.

Per ovviare a questo problema:

  • per lo sviluppo di app native basterà creare immagini con risoluzione doppia e rinominarle adeguatamente per far sì che XCode associ automaticamente l’immagine giusta al dispositivo su cui dovrà essere visualizzata (nella documentazione di Apple per gli sviluppatori ci sono tutti i dettagli)
  • per lo sviluppo di applicazioni web, invece, lo scenario è un po’ più complesso: per ottimizzare la visualizzazione di immagini su dispositivi con risoluzione differente dai classici 72dpi, infatti, oltre che disporre delle immagini in alta risoluzione, bisognerà ricorrere all’utilizzo delle media queries del CSS3, specificando il rapporto di moltiplicazione tra il numero di punti ed il numero di pixel.

Cosa sono le media query ?
La semplifico parecchio: sono delle query ovvero dei filtri che restringono le condizioni entro cui applicare un foglio di stile (come nell’esempio che segue) o un blocco di codice CSS3.

Una buona pratica, secondo me, potrebbe essere quella di realizzare un foglio di stile ad hoc per ogni specifico dispositivo, come nel caso dell’iPhone, in cui il rapporto in questione è 2 ed includerlo nell’header della pagina, ad esempio, in questo modo:

[sourcecode language=’html’]
[/sourcecode]

In questo modo, all’interno del file 2x.css andremo a ridefinire i riferimenti ad immagini per gli elementi della pagina, con immagini specifiche per un display con densità doppia di pixel per punti, rispetto ai monitor tradizionali.

Come vedete, avendo definito la media query a livello di riferimento al file da richiamare in quella circostanza, nel file CSS basterà inserire i blocchi di istruzioni senza applicare ulteriormente le media query.

Personalmente non credo che tutti i siti web o le applicazioni web in generale richiedano un simile intervento, magari Flickr o altri siti il cui contenuto principale è costituito da immagini, questo tipo di attenzione farà la differenza ma è anche vero che, nel frattempo, il web si evolve anche sul fronte del supporto ad immagini vettoriali, canvas, ecc…motivo per cui, secondo me, questi interventi “lato CSS” tenderanno a diminuire.

E’ anche vero, però, che il Retina Display ha solcato un terreno sinora poco battuto: immagino che nei prossimi mesi/anni inizieranno a fioccare display con densità di pixel per punti ben oltre i 72dpi (dei monitor tradizionali).

…vedremo 🙂

Facebook Connect e Twitter Connect: cosa sono e come funzionano

Ho deciso di dettagliare un minimo in cosa consiste e come funziona il Facebook/Twitter connect, visto che l’ho integrato sul mio blog e che, in un articolo che pubblicherò in questi giorni, vi suggerirò dei plug-in per integrare queste funzionalità nel proprio blog in WordPress.
Cos’è il Facebook/Twitter Connect:
Facebook/Twitter connect permette ad utenti già registrati su Facebook o su Twitter di autenticarsi sul vostro blog per lasciare commenti, ad esempio, senza richiedere l’inserimento di: nome, email, sito web.
In realtà, di questi tre campi, i primi due sono obbligatori e generalmente il primo (il nome) può non essere preciso, come pure l’email può non essere quella che l’utente utilizza tipicamente per autenticarsi sul web.
Inoltre, dato che i lettori del vostro blog possono non avere una immagine associata all’email con la quale commentano (magari registrata su Gravatar), usare il Facebook e/o Twitter connect, permette di mostrare accanto al loro nome anche l’immagine che hanno sul profilo di Facebook / Twitter.
Una brevissima parentesi: questo sistema di autenticazione si basa sul medesimo concetto del SSO (Single Sign On) in cui una autorità si fa da “garante” per l’utente, senza chiedergli di inserire sul nostro blog i suoi dati. (tralascio in questa sede i pro e i contro di questa azione…starei qui ore ed ore a parlarne…probabilmente lo farò in un altro post 😉 )
Requisiti minimi:
Va precisato che per realizzare il Facebook / Twitter connect, dovremo registrare una applicazione, su entrambi i social network (se vogliamo consentire l’autenticazione con entrambi).
Questo passo è necessario in quanto dovremo ottenere dai social network delle chiavi di autenticazione, da inserire nelle schermate di configurazione dei plug-in (per i plug-in di WordPress) o nei file Php (in caso di applicazioni sviluppate ad hoc), affinché possano identificare le applicazioni di connessione al nostro sito/blog.
Funziona così (ad esempio su Twitter, ma la cosa è molto simile anche per Facebook):
  1. Su Twitter si registra una nuova applicazione, specificando l’url del sito dove vogliamo integrare la funzione di connect, specifichiamo che vogliamo consentire il connect mediante Twitter, che si tratta di una applicazione che dovrà accedere a Twitter in lettura e scrittura, ecc (nel caso del plug-in per WordPress, i dettagli li trovate sul sito del plug-in).
  2. A quel punto, Twitter vi rilascerà le chiavi (una coppia di stringhe di caratteri) che identificano univocamente la vostra applicazione appena creata. Queste stringhe servono a consentire la comunicazione tra l’applicazione appena creata sul social network ed il plug-in che si occupa del Connect e, non a caso, vanno inserite nel pannello di configurazione di Simple Twitter Connect.
  3. A questo punto, quando l’utente clicca sul pulsante Connect with Twitter, questo viene rimbalzato su Twitter, nel suo account Twitter (qualora non sia loggiato, gli verrà chiesto di loggarsi su Twitter) in quanto dovrà acconsentire a collegare il suo account alla applicazione descritta al punto 1.Una volta che l’utente avrà acconsentito alla richiesta di collegamento dell’app al suo profilo, quest’ultimo sarà reindirizzato sul sito, già autenticato! 😉
Questo sistema di autenticazione sfrutta OAuth per collegare l’account dell’utente all’applicazione: si tratta di un metodo ormai diffusissimo per consentire l’autenticazione in maniera molto robusta (=sicura), basata sui seguenti criteri:
  • l’utente finale non rilascia a terzi altre informazioni in quanto collega al suo profilo Facebook/Twitter una applicazione Facebook/Twitter: questo vuol dire anche che Facebook/Twitter hanno altresì la facoltà di spegnere l’app di connessione (quella al punto 1), qualora questa non rispetti le policy o per qualunque altro motivo ne giustifichi la rimozione.
  • la comunicazione avviene, di fatto, tra l’applicazione (al punto 1) ed il sito che utilizza la funzione di connect, generando un token che “lega” l’account utente all’applicazione (al punto 1).
    Il token in questione non contiene alcuna informazione sui dati sensibili dell’utente e viene salvato sul server.
  • l’accesso alle eventuali informazioni sull’utente avviene, una volta che l’autenticazione è andata a buon fine, a carico dell’applicazione di Connect che li ottiene da quella sul social network (al punto 1).
  • l’utente, inoltre, può disinstallare/scollegare l’applicazione (al punto1) dal suo profilo per evitare che questa continui ad accedere ai dati funzionali all’autenticazione sul sito collegato all’app (al punto 1)
Spero che questa breve descrizione riesca a darvi un’idea di come funziona questa funzionalità, tra l’altro presente anche su questo sito 🙂
Se volete integrare le funzioni di Facebook / Twitter Connect sul vostro blog in WordPress, vi consiglio di seguire il mio blog nei prossimi giorni, visto che sto preparando un articolo sull’argomento (e sui migliori plug-in meno invasivi che ho trovato sinora) 😉
ciaooo

HTML5 e la geolocalizzazione

Una delle novità introdotte in HTML5 è la GeoLocation, ovvero la possibilità di ottenere dal browser le informazioni sulla posizione geografica dell’utente.

Funzionamento

In breve, come funziona: lo standard (per cui vi rimando alla pagina del W3C)  prevede che il browser possa esporre le coordinate geografiche dell’utente fornitegli dal sistema operativo su cui è installato, qualora quest’ultimo consenta di determinare la posizione geografica mediante antenna GPS o WiFi.

Pertanto, affinché un’applicazione web ottenga la posizione geografica, è necessario che il sistema operativo ed il browser supportino tale funzionalità.

C’è da dire, inoltre, che la richiesta della posizione geografica, da parte dell’applicazione web in questione, è sempre preceduta da una richieste esplicita fatta all’utente pertanto, sulla questione privacy, è l’utente a dover accettare esplicitamente di voler fornire al browser questo dato.

Sul discorso compatibilità dei browser: Safari e Chrome supportano pienamente le API per questa funzionalità (aggiunta di recente al draft di HTML5), altri browser potrebbero supportarla, magari con l’utilizzo di Modernizr , sull’uso di alcune istruzioni del CSS3) per cui vi rimando su diveintohtml5 (sito dalla grafica molto grunge ma pieno di spunti per avvicinarsi all’HTML5).

In realtà eseguendo l’esempio che riporterò a breve, potrete verificare direttamente se la vostra versione del browser supporta la geolocalizzazione.

Come utilizzarlo

Ma tornando sul pezzo: come facciamo ad utilizzare le api di HTML5 relative alla geolocation ?

Premesso che per le API applicative HTML5 richiedono l’uso di Javascript, per verificare la compatibilità del vostro browser relativamente a geolocation basterà inserire in una pagina il seguente script:

[sourcecode language=’js’]

[/sourcecode]

In questo esempio memorizzo in due variabili globali (latitudine e longitudine) i rispettivi valori mediante una callback.

Le API di GeoLocation non si limitano alla latitudine ed alla longitudine – nel momento in cui vi scrivo, infatti, sono previste le seguenti proprietà:

  • latitude
  • longitude
  • altitude (optional)
  • accuracy
  • altitudeAccuracy (optional)
  • heading (optional)
  • speed (optional)
  • timestamp

L’accuracy, ad esempio, si rivela molto utile per stimare il grado di precisione della lettura dei parametri latitudine e longitudine: se pensate di integrare sulla vostra web app la geolocalizzazione, con l’accuracy, ad esempio sarebbe utile riportare tale valore dato che, soprattutto in assenza di una antenna gps, la lettura della posizione potrebbe avere degli scarti anche dell’ordine di centinaia di metri.

Mentre scrivevo questo articolo mi sono, ovviamente, divertito a creare uno script leggermente più complesso, che visualizzi una Google Map con un marker sulla posizione rilevata dal browser.

Potete vedere qui lo script in azione 😉

Un dettaglio sul codice dell’esempio: nell’inclusione del javascript per la mappa di Google, ho disabilitato il sensor (che era un metodo alternativo di geolocalizzazione basato su Gears).

Inoltre, ho utilizzato tutti i parametri che è possibile passare alla funzione navigator.geolocation.getCurrentPosition:

  • la callback in caso di esito positivo della lettura della posizione
  • la funzione per l’esito negativo
  • l’array di opzioni (io ne ho inserite due: timeout della richiesta e flag sull’accuratezza della lettura)

Considerazioni

Non vi nascondo che sono sempre stato scettico sul fornire ad una web app la posizione geografica e, come me, gran parte degli utenti potrebbero avere delle remore a fornire queste informazioni durante la navigazione di un sito web.

In realtà esistono svariati contesti in cui la geolocation si rivela molto utile e, secondo me, è in quegli ambiti che può trovare applicazione:

Come raggiungerci

Pensate ad esempio alla classica pagina “Dove siamo/Come raggiungerci” di siti relativi ad esercizi commerciali – leggendo la posizione dell’utente gli si può presentare una mappa con il percorso per raggiungere in auto la vostra sede, cosa sicuramente più evoluta rispetto alla classica mappa.

Geotagging

Pensate a tutte le applicazioni di ugc (user generate content) dove pubblicare contenuti corredati di una posizione geografica può fare la differenza – geolocalizzare il contenuto o l’azione di pubblicazione del contenuto consente di sviluppare web app come quelle di Flickr e Twitter che basano alcune delle loro funzionalità sulla posizione geografica dei contenuti e che in questo caso verrebbero valorizzate senza ulteriore intervento da parte dell’utente.

Around me

Citando il nome di una famosissima app su iPhone, sfruttando la posizione geografica si potrebbero suggerire contenuti, servizi, esercizi commerciali e tutto quanto ci viene in mente, da quelli più vicini alla posizione dell’utente.

…provate a immaginare il tipo di applicazioni che potremo sviluppare quando a questa funzionalità si va ad aggiungere la ricerca semantica dei contenuti: potrei, ad esempio, cercare il negozio più vicino che vende un libro con un dato codice ISBN!!!

…incredibile, no ?! 🙂