Bene, nei precedenti post abbiamo capito quali vie abbiamo per poter inserire un campo di tipo GeoLocation all'interno di una lista SharePoint 2013.
Vi ricordo che possiamo farlo tramite:
Vediamo ora come possiamo leggere o scrivere informazioni geografiche (longitudine e latitudine) all'interno di elementi che hanno un campo di tipo GeoLocation tra i campi che ne definiscono la struttura, sfruttando il Server Object Model e il Client Object Model di SharePoint 2013.
Abbiamo due modi differenti.
Il primo vede l'utilizzo di una classe apposita per gestire valori di questo tipo, che è stata aggiunta in entrambi i modelli: la classe SPFieldGeoLocationValue (o la relativa FieldGeoLocationValue del Client Object Model).
Scrittura
SPWeb web = SPContext.Current.Web; SPList list = web.Lists.TryGetList("YOUR LIST NAME"); SPListItem item = list.AddItem(); item[list.Fields.GetFieldByInternalName("YOUR FIELD NAME").Id] = new SPFieldGeolocationValue(42, 42); item.Update();
SPWeb web = SPContext.Current.Web; SPList list = web.Lists.TryGetList("YOUR LIST NAME"); SPListItem item = list.GetItemById(1); SPFieldGeolocationValue geoValue = item["YOUR FIELD NAME"] as SPFieldGeolocationValue; if (geoValue != null) { var lat = geoValue.Latitude; var lon = geoValue.Longitude; var mes = geoValue.Measure; var alt = geoValue.Altitude; }
Il secondo modo è quello di utilizzare la "POINT syntax". Una particolare notazione che vi permette di inserire coordinate geografiche in formato stringa.
Vi consiglio di utilizzare questa sintassi solo in scrittura e utilizzare la classe SPFieldGeoLocationValue per leggere.
Vi consiglio di utilizzare questa sintassi solo in scrittura e utilizzare la classe SPFieldGeoLocationValue per leggere.
Scrittura
using (ClientContext context = new ClientContext("http://URL")) { List list = context.Web.Lists.GetByTitle("YOUR LIST NAME"); ListItem item = list.AddItem(new ListItemCreationInformation()); item["YOUR FIELD NAME"] = "POINT (42 42)"; //sample location item.Update(); context.ExecuteQuery(); }