Dziś będzie o czymś nowym, a mianowicie jak działają Współrzędne geograficzne w SharePoint (Geolocation column) . Jest to temat, który jest poruszany stosunkowo rzadko, a czasami okazuje się bardzo użyteczny. Do celów tego wpisu będę korzystał z mojego developerskiego SharePoint online. Kolumna do przechowywania współrzędnych geograficznych, to nowość, która pojawiła się w wersji 2013. Jeżeli temat jest Wam całkowicie obcy to zapraszam do zapoznania się artykułem na MSDN. Bardzo ogólnie rzecz ujmując pojawiła się możliwość przechowywanie w kolumnie typu współrzędne geograficzne (Geolocation column) długości i szerokości geograficznej, a następnie wyświetlania tego punktu na mapie. No dobrze, zobaczmy więc jak możemy uzyskać współrzędne geograficzne w SharePoint.
[adblockingdetector id=”577b6d6010f9e”]
Współrzędne geograficzne w SharePoint
Na początek będziemy potrzebować klucza do map Bing, który można uzyskać na tym portalu Microsoft. Dla naszych potrzeb zupełnie wystarczy klucz typu Basic, który jest za darmo. Jeżeli myślimy o jakiś większych zastosowaniach, to niestety musimy liczyć się z płatnymi kluczami. Jeżeli nam się udało pozyskać klucz to pora na aktywację opcji współrzędnych geograficznych w naszych witrynach. Domyślnie nie mamy tej funkcjonalności. Jeżeli mamy SharePointa zainstalowanego lokalnie możemy skorzystać ze skryptu PowerShell.
[ps] $WebUrl = "https://mojaWitryna.sharepoint.com/KRMBasicData" $EmailAddress = “mojUser” $Context = New-Object Microsoft.SharePoint.Client.ClientContext($WebUrl) $Credentials = Get-Credential -UserName $EmailAddress -Message “Podaj hasło do Office 365” $Context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($EmailAddress,$Credentials.Password) $List = $Context.Web.Lists.GetByTitle(“Moja lista“) $FieldXml = “<Field Type=’Geolocation’ DisplayName=’Location‘/>” $Option=[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldToDefaultView $List.Fields.AddFieldAsXml($fieldxml,$true,$option) $Context.Load($list) $Context.ExecuteQuery() $Context.Dispose() [/ps]
Niektórzy twierdzą, że udało im się uruchomić ten skrypt dla SharePointa online, korzystając z SharePoint online management shell, ale ja cały czas dostawałem błędy. Nie wiem, może to kwestia wersji jakiegoś pliku – w sumie Microsoft cały czas aktualizuje swoje rozwiązanie… W moim przypadku zadziało proste rozwiązanie CSOM, jako aplikacja konsolowa.
[code language="csharp"] var webUrl = new Uri("https://mojawitryna.sharepoint.com/Site"); using (ClientContext ctx = new ClientContext(webUrl)) { var login = "user"; var password = "password"; var secureStrPwd = new SecureString(); foreach (char c in password) { secureStrPwd.AppendChar(c); } var creds = new SharePointOnlineCredentials(login, secureStrPwd); ctx.Credentials = creds; var web = ctx.Web; web.AllProperties["BING_MAPS_KEY"] = "Klucz map BING"; web.Update(); ctx.ExecuteQuery(); List officeLocationList = ctx.Web.Lists.GetByTitle("Moja lista"); officeLocationList.Fields.AddFieldAsXml("<Field Type='Geolocation' DisplayName='Nazwa kolumny'/>", true,AddFieldOptions.AddToAllContentTypes); try { officeLocationList.Update(); ctx.ExecuteQuery(); } catch (Exception) { throw; } [/code]
I to tyle. Zwracam uwagę na to, że nasz skrypt od razu dodaje kolumnę do istniejącej listy! Nie możecie aktywować kolumny typy współrzędne geograficzne i potem ją sobie ręcznie dodawać do listy – jest ona niewidoczna. Za każdym razem musimy użyć kodu do tego celu, dla konkretnej listy.
Powyżej widzicie fragment mapy, która wyświetla nam nasze lokalizacje. Normalnie nie mamy możliwości stworzyć takiego widoku, aktywacja danych geograficznych powoduje pojawienie się „Map View” na liście dostępnych wzorców dla użytkownika. Warto zwróć jeszcze uwagę na jedną rzecz. Współrzędne geograficzne w SharePoint są dość problematyczne w dodawaniu, w następnym wpisie postaram się pokazać jak sobie ułatwić życie.