Programmgesteuertes Hinzufügen einer Geolocation-Spalte zu einer Liste in SharePoint

Erfahren Sie, wie programmgesteuert eine Geolocation-Spalte zu einer Liste in SharePoint hinzufügen. Integrieren Sie Standortinformationen und Karten in SharePoint-Listen und standortbasierte Websites, indem Sie mithilfe des neuen Geolocation-Felds ihren eigenen Geolocation-basierten Feldtyp erstellen.

SharePoint bietet jetzt einen neuen Feldtyp namens „Geolocation“, mit dem Sie SharePoint-Listen um Standortinformationen ergänzen können. In Spalten des Typs „Geolocation“ können Sie Standortinformationen als Paare von Breiten- und Längengraden in Dezimalgrad angeben oder die Koordinaten der aktuellen Position des Benutzers aus dem Browser abrufen, sofern dieser die W3C Geolocation API unterstützt. Weitere Informationen über die Geolocation-Spalte finden Sie unter Integration der Standort- und Karten-Funktionalität in SharePoint. Die Spalte Geolocation ist in SharePoint-Listen nicht standardmäßig verfügbar. Um die Spalte zu einer SharePoint-Liste hinzuzufügen, müssen Sie Code schreiben. In diesem Artikel erfahren Sie, wie Sie das Geolocation-Feld mithilfe des SharePoint-Clientobjektmodells programmgesteuert zu einer Liste hinzufügen.

Sie müssen ein MSI-Paket mit dem Namen "SQLSysClrTypes.msi" auf jedem SharePoint-Front-End-Webserver installieren, um Geolocation-Feldwerte oder -Daten in einer Liste anzuzeigen. Dieses Paket installiert Komponenten, welche die neuen Geometrie-, Geografie- und Hierarchie-ID-Typen in SQL Server 2008 implementieren. Für SharePoint Online wird diese Datei standardmäßig installiert. Es handelt sich jedoch nicht um eine lokale Bereitstellung von SharePoint. Sie müssen Mitglied der Gruppe „Farmadministratoren“ sein, um diesen Vorgang ausführen zu können. Informationen zum Herunterladen SQLSysClrTypes.msi finden Sie unter Microsoft SQL Server 2008 R2 SP1 Feature Pack für SQL Server 2008 oder Microsoft SQL Server 2012 Feature Packfür SQL Server 2012 im Microsoft Download Center.

Voraussetzungen für das Hinzufügen einer Geolocation-Spalte

  • Zugriff auf eine Liste von SharePoint, mit der ausreichenden Berechtigungen, um eine Spalte hinzuzufügen.

  • Ein gültiger Bing Karten Schlüssel, der auf Farm- oder Webebene festgelegt ist und vom Bing Karten-Kontocenter abgerufen werden kann.

    Wichtig

    Bitte beachten Sie, dass Sie für die Einhaltung der geschäftsbedingungen verantwortlich sind, die für Ihre Verwendung des Bing Karten-Schlüssels gelten, sowie für alle erforderlichen Offenlegungen gegenüber Benutzern Ihrer Anwendung in Bezug auf Daten, die an den Bing Karten-Dienst übergeben werden.

  • Visual Studio 2010

  • SharePoint Online-Verwaltungsshell: https://www.microsoft.com/download/details.aspx?id=35588

  • SharePoint PnP-PowerShell (Legacy): https://github.com/SharePoint/PnP-PowerShell/

  • SharePoint PnP.PowerShell (neueste Version): https://github.com/pnp/powershell

Hinweis

PnP PowerShell ist eine Open Source-Lösung mit aktiver Community, die Support dafür bietet. Es gibt keine SLA für den Support des Open-Source-Tools durch Microsoft.

Codebeispiel: Programmgesteuertes Hinzufügen eine Geolocation-Spalte zu einer vorhandenen Liste

Führen Sie diese Schritte aus, um die Geolocation-Spalte zu einer Liste hinzuzufügen. Dies muss programmgesteuert mit CSOM oder PowerShell erfolgen.

So fügen Sie die Geolocation-Spalte zu einer Liste mithilfe von PnP-PowerShell hinzu

  1. Öffnen von PowerShell

  2. Stellen Sie die Verbindung mit der Website her, der Sie die Spalte hinzufügen möchten.

    Connect-PnPOnline -url "https://TENANT.sharepoint.com/sites/SITEURL"
    
  3. Öffnen Sie die Liste, der Sie die Spalte hinzufügen möchten.

    $list = Get-PnPList -Identity "LISTNAME"
    
  4. #Add des Felds "Geolocation" – Parameter nach Bedarf ändern

    Add-PnPField -List $list -Type GeoLocation -DisplayName "GeoLocationField" -InternalName "GeoLocationField" -AddToDefaultView -Required
    

So fügen Sie die Geolocation-Spalte zu einer Liste mithilfe des Clientobjektmodells in Visual Studio hinzu

  1. Starten Sie Visual Studio.

  2. Wählen Sie auf der Menüleiste die Optionen Sie Datei, neues Projekt aus. Das Dialogfeld Neues Projekt wird geöffnet.

  3. Klicken Sie im Dialogfeld Neues Projekt wählen Sie c# im Feld Installierte Vorlagen, und wählen Sie dann die Vorlage Konsolenanwendung.

  4. Benennen Sie dem Projekt, und wählen Sie dann auf die Schaltfläche OK.

  5. Visual Studio erstellt das Projekt. Fügen Sie einen Verweis auf die folgenden Assemblys hinzu, und wählen Sie OK.

    • Microsoft.SharePoint.Client.dll
    • Microsoft.SharePoint.Client.Runtime.dll
  6. Fügen Sie eine Richtlinie using in der Standard-cs-Datei wie folgt.

    using Microsoft.SharePoint.Client;
    
  7. Fügen Sie den folgenden Code zur Main-Methode in der CS-Datei hinzu.

    class Program
    {
      static void Main(string[] args)
      {
        AddGeolocationField();
        Console.WriteLine("Location field added successfully");
      }
      private static void AddGeolocationField()
      {
        // Replace site URL and List Title with Valid values.
        ClientContext context = new ClientContext("<Site Url>");
        List oList = context.Web.Lists.GetByTitle("<List Title>");
        oList.Fields.AddFieldAsXml("<Field Type='Geolocation' DisplayName='Location'/>",true, AddFieldOptions.AddToAllContentTypes);
        oList.Update();
        context.ExecuteQuery();
      }
    }
    
  8. Ersetzen Sie <Site Url> und <List Title> mit gültigen Werten.

  9. Legen Sie das Zielframework in den Projekteigenschaften als .NET Framework 4.0 oder 3.5 fest, und führen Sie das Beispiel aus.

  10. Navigieren Sie zu der Liste. In der Liste sollte eine Spalte mit dem Namen Standort des Typs Geolocation angezeigt werden. Sie können jetzt einige Werte eingeben und in Aktion sehen. Abbildung 1 zeigt die Standardmäßigen Standort- und Kartenfeatures, die Sie in Ihrer Liste erwarten können.

    Abbildung 1: Zusammengefasste Ansicht der Standardstandort- und Kartenfeatures Standardmäßiges Geolocation- und Karten-Feature

Programmgesteuertes Hinzufügen eines Listenelements mit dem Wert des Geolocation-Feld zu einer SharePoint-Liste

Nachdem das Feld Geolocation einer SharePoint-Liste hinzugefügt wurde, kann der Entwickler das Listenelement programmgesteuert zur Liste hinzufügen. Es gibt zwei Möglichkeiten, das Listenelement programmgesteuert hinzuzufügen: durch Übergeben des FieldGeolocationValue-Objekts an das Geolocation-Feld und durch Übergeben des Rohwerts an das Geolocation-Feld.

Methode A: übergeben Sie komplexer FieldGeolocationValue-Objekt an die Geolocation-Feld

  • Die folgende Methode fügt ein Listenelement, indem Sie als ein Objekt den Geolocation-Wert übergeben.

    private void AddListItem() {
      // Replace site URL and List Title with Valid values.
      ClientContext context = new ClientContext("<Site Url>");
      List oList = context.Web.Lists.GetByTitle("<List Name>");
    
      ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation();
      ListItem oListItem = oList.AddItem(itemCreationInfo);
    
      oListItem["Title"] = "New Title";
    
      FieldGeolocationValue oGeolocationValue = new FieldGeolocationValue();
      oGeolocationValue.Latitude = (double)17.4;
      oGeolocationValue.Longitude = (double)78.4;
      oListItem["location"] = oGeolocationValue;
    
      oListItem.Update();
      context.ExecuteQuery();
    }
    

Methode B: übergeben Sie unformatierten Wert an die Geolocation-Feld

  • Die folgende Methode fügt ein Listenelement zur SharePoint-Liste, indem Sie auf das Geolocation-Feld unformatierte Werte übergeben.

    private void AddListItem() {
      // Replace site URL and List Title with Valid values.
      ClientContext context = new ClientContext("<Site Url>");
      List oList = context.Web.Lists.GetByTitle("<List Name>");
    
      ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation();
      ListItem oListItem = oList.AddItem(itemCreationInfo);
    
      oListItem["Title"] = "New Title";
      // Data in WKT (World Known Text) format.
      oListItem["location"] = "POINT (78.4 17.4)" ;
    
      oListItem.Update();
      context.ExecuteQuery();
    }
    

Siehe auch