Nella nuova versione del prodotto di collaborazione Microsoft ci ha portato, oltre a tante novità per noi sviluppatori, anche un nuovo campo: il campo "GeoLocation". 

In sé per sé non è niente di complicato. E' un campo che permette di salvare latitudine e longitudine a rappresentare delle coordinate geografiche. 
Questo tipo di campo è stato pensato più per noi sviluppatori che per l'utente finale. Ed è proprio per questo che non è possibile creare un nuovo campo di questo tipo tramite l'interfaccia di default di SharePoint 2013. Anche perché, pensateci bene, è molto difficile che un utente conosca longitudine e latitudine di un posto oppure che abbia la voglia e le capacità di andarle a recuperare da Google Maps o dalle mappe di Bing. Non è proprio user-friendly, no? 

Cmq, poco importa. E' stato tolto dall'interfaccia e sta a noi aggiungerlo all'interno delle liste che vogliamo arricchire con informazioni geo-localizzate. Per farlo abbiamo svariati modi, quello più immediato è sicuramente utilizzare PowerShell. 

$spweb = Get-SPWeb http://YOURSITEURL
$spList = $spWeb.Lists["YOUR LIST NAME"]
$spFieldType = [Microsoft.SharePoint.SPFieldType]::Geolocation
$spList.Fields.Add("YOUR FIELD NAME",$spFieldType,$false)
$spweb.Dispose()

Fatto questo potete già iniziare ad utilizzare il nuovo campo.
Oltre a poter inserire longitudine e latitudine a mano, possiamo recuperare la posizione corrente sfruttando le API di geo-localizzazione introdotte con l’avvento di HTML5 (dobbiamo però utilizzare un browser che le supporti). 

Il campo GeoLocation di SharePoint 2013

Oltre al campo, una volta inserito all’interno di una lista, vedrete che verrà creata in automatico una nuova vista: la "map view". Questa vista permette di vedere i punti inseriti nei vari elementi della lista, tramite una mappa di Bing. 

La MapView di SharePoint 2013

Per permettere l’utilizzo delle mappe di Bing all'interno della vostra intranet SharePoint 2013, dovete specificare la chiave con cui accedere a questo servizio. Per farlo, avete due vie.

1- Specificare una chiave per tutta la farm, utilizzando il comando Powershell Set-SPBingMapsKey: 

Set-SPBingMapsKey -BingKey "<Enter a valid Bing Maps key>"

2- Specificare una chiave diversa per ogni singolo sito, tramite uno dei modelli ad oggetti disponibili (io ho utilizzato il Client Object Model in questo caso):

ClientContext context = new ClientContext(url);
Web web = context.Web;
web.AllProperties["BING_MAPS_KEY"] = "<Enter a valid Bing Maps key>";
web.Update();
context.ExecuteQuery();

Ovviamente, le mappe di Bing non sono gratis. Le condizioni di utilizzo delle mappe di Bing le potete trovare qua: http://www.microsoft.com/maps/product/terms.html 

Come vi dicevo, questo è un campo fatto più per noi sviluppatori che per l’utente finale. E’ proprio per questo che nei prossimi post vedremo tutte le vie che abbiamo per aggiungere un campo di questo tipo all’interno di una lista SharePoint e tutti i modi che abbiamo per scrivere o leggere informazioni su tale tipo di campo.