Freigeben über


Erstellen einer Erweiterung für adaptive Karten mit Geolocation-Aktion

Hinweis

Diese Anleitung setzt voraus, dass Sie SPFx v1.14 installiert haben.

Weitere Informationen zur Installation von SPFx v1.14 finden Sie in den SharePoint Framework v1.14 Release Notes.

Erstellen eines Gerüsts für ein Projekt für Erweiterungen adaptiver Karten

Erstellen Sie ein neues Projektverzeichnis für Ihr Projekt, und ändern Sie Ihren aktuellen Ordner zu diesem Verzeichnis.

Erstellen Sie ein neues Projekt, indem Sie den Yeoman SharePoint-Generator aus dem neuen Verzeichnis heraus, das Sie erstellt haben, ausführen:

yo @microsoft/sharepoint

Wenn Sie dazu aufgefordert werden, geben Sie die folgenden Werte ein (wählen Sie für alle unten nicht aufgeführten Eingabeaufforderungen die Standardoption aus):

  • Wie lautet der Name Ihrer Lösung? geolocation-tutorial
  • Welchen Typ von clientseitiger Komponente möchten Sie erstellen? Erweiterung für adaptive Karten
  • Welche Vorlage möchten Sie verwenden? Primäre Textvorlage
  • Wie lautet der Name Ihrer Erweiterung für adaptive Karten? GeoLocation

An diesem Punkt installiert Yeoman die erforderlichen Abhängigkeiten und erstellt ein Gerüst für die Lösungsdateien. Dieser Vorgang kann einige Minuten dauern.

Aktualisieren Sie die URL der gehosteten Workbench Ihres Projekts.

Wenn Sie die gulp-Task serve verwenden, wird standardmäßig ein Browser mit der angegebenen URL der gehosteten Workbench gestartet, die in Ihrem Projekt angegeben ist. Die Standard-URL für die gehostete Workbench in einem neuen Projekt verweist auf eine ungültige URL.

  • Suchen und öffnen Sie die Datei ./config/serve.json in Ihrem Projekt.

  • Suchen Sie die Eigenschaft initialPage:

    {
      "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json",
      "port": 4321,
      "https": true,
      "initialPage": "https://enter-your-SharePoint-site/ _layouts/workbench.aspx"
    }
    
  • Ändern Sie die enter-your-SharePoint-site-Domäne in die URL Ihres SharePoint-Mandanten und dessen Website, die Sie zu Testzwecken verwenden möchten. Zum Beispiel: https://contoso.sharepoint.com/sites/devsite/_layouts/workbench.aspx.

Wenn Sie dies tun gulp serve, wird die GeoLocation Karte angezeigt:

Siehe das Symbol der GeoLocation-Karte in der Toolbox des Webparts

Hinzufügen von Geolocation-Aktionen zu Ihrer Adaptive Card Extension

An diesem Punkt haben wir den fertigen, gerüsteten Code. Lassen Sie uns nun versuchen, der Kartenansicht und der Schnellansicht Geolocation-Aktionen hinzuzufügen.

Wir werden eine Karte mit einer Kartenansicht und einer Schnellansicht erstellen. Auf der Kartenansicht werden wir eine Schaltfläche bereitstellen, die dem Benutzer seinen aktuellen Standort anzeigt, und durch Anklicken der Kartenansicht selbst wird eine Schnellansicht geöffnet.

In der Schnellansicht werden wir drei Schaltflächen bereitstellen, mit denen die folgenden Aktionen ausgeführt werden können:

  • Abrufen des aktuellen Standorts des Benutzers
  • Der Benutzer kann einen Ort auf der Karte auswählen
  • Einen bestimmten Ort auf der Karte anzeigen

Aktualisieren Sie die Etiketten, die auf der Karte erscheinen werden

Bevor wir mit dem Hinzufügen der Aktionen beginnen, sollten wir zunächst die Zeichenfolgen aktualisieren, die auf der Karte zu sehen sind.

Suchen und öffnen Sie hierzu die folgende Datei in Ihrem Projekt: ./src/adaptiveCardExtensions/geoLocation/loc/en-us.js

Ersetzen Sie den Inhalt dieser Datei durch:

define([], function() {
  return {
    "PropertyPaneDescription": "Tutorial on geolocation action in ACE.",
    "TitleFieldLabel": "Geolocation",
    "Title": "GeoLocation",
    "SubTitle": "GeoLocation Actions",
    "PrimaryText": "Location Demo",
    "Description": "Demonstrating GeoLocation Capabilities",
    "ShowCurrentLocation": "My Location"
  }
});

Suchen und öffnen Sie als Nächstes die folgende Datei in Ihrem Projekt: ./src/adaptiveCardExtensions/geoLocation/loc/mystring.d.ts

Fügen Sie Folgendes hinzu:

ShowCurrentLocation: string;

an die IGeoLocationAdaptiveCardExtensionStrings Schnittstelle.

Hinzufügen von Aktionen in der Kartenansicht

Wie bereits erwähnt, werden wir in der Kartenansicht eine Schaltfläche hinzufügen, die dem Benutzer seinen aktuellen Standort anzeigt, und wenn er auf die Kartenansicht klickt, werden wir die Schnellansicht anzeigen.

Wir fügen zunächst die Funktionalität für die Schaltfläche in der Kartenansicht hinzu. Suchen und öffnen Sie hierzu die folgende Datei in Ihrem Projekt: ./src/adaptiveCardExtensions/geoLocation/cardView/CardView.ts

Ersetzen Sie hier die Definition der cardButtons Funktion durch die folgende:

public get cardButtons(): [ICardButton] | [ICardButton, ICardButton] | undefined {
  return [
    {
      title: strings.ShowCurrentLocation,
      action: {
        type: 'VivaAction.ShowLocation'
      }
    }
  ];
}

Mit dieser Änderung haben wir eine Schaltfläche mit Bezeichnung My Location konfiguriert, und die Klickaktion ist VivaAction.ShowLocation, die dem Benutzer den aktuellen Standort zeigt.

Ersetzen Sie als Nächstes den Inhalt onCardSelection Funktion durch Folgendes:

public get onCardSelection(): IQuickViewCardAction | IExternalLinkCardAction | undefined {
  return {
      type: 'QuickView',
      parameters: {
        view: QUICK_VIEW_REGISTRY_ID
      }
  };
}

Diese Änderung bedeutet, dass ein Benutzer, der auf die Kartenansicht klickt, eine Schnellansicht öffnen sollte.

Mit den bisher vorgenommenen Änderungen würde Ihre Kartenansicht wie folgt aussehen:

Erscheinungsbild der Karte nach Einführung der Strings und Änderungen in der Kartenansicht

Hinzufügen von Aktionen in der Schnellansicht

In der Schnellansicht werden wir Schaltflächen für 3 Aktionen einführen:

  • Abrufen des aktuellen Standorts des Benutzers
  • Der Benutzer kann einen Ort auf der Karte auswählen
  • Zeigen Sie einen bestimmten Ort auf der Karte an (in unserem Beispiel zeigen wir den Mount Everest)

Zusätzlich dazu gibt es zwei Textblöcke für die Anzeige Latitude und Longitude, die die jeweiligen Koordinaten anzeigen, wenn die VivaAction.GetLocation Aktion ausgeführt wird (mehr dazu später).

Zunächst definieren wir die Vorlage für die Schnellansicht. Suchen und öffnen Sie hierzu die folgende Datei in Ihrem Projekt: ./src/adaptiveCardExtensions/geoLocation/quickView/template/QuickViewTemplate.json

Ersetzen Sie den Inhalt dieser Datei durch den folgenden Text:

{
  "schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.2",
  "body": [
    {
      "type": "TextBlock",
      "text": "${latitude}"
    },
    {
      "type": "TextBlock",
      "text": "${longitude}"
    }
  ],
  "actions": [
    {
      "title": "Choose location on map",
      "type": "VivaAction.GetLocation",
      "parameters": {
        "chooseLocationOnMap": true
      }
    },
    {
      "title": "Get my location",
      "type": "VivaAction.GetLocation"
    },
    {
      "title": "Show custom location",
      "type": "VivaAction.ShowLocation",
      "parameters": {
        "locationCoordinates": {
          "latitude": 27.98884062493244,
          "longitude": 86.9249751
        }
      }
    }
  ]
}

Damit stellen wir zwei Textblöcke bereit, um die Latitude und Longitude des Speicherorts anzuzeigen, den wir über VivaAction.GetLocation erhalten. Darüber hinaus haben wir drei Geolokalisierungsaktionen beschrieben.

Nachdem Sie diese Aktionen hinzugefügt haben, würde Ihre Schnellansicht wie folgt aussehen:

Aussehen der Karte nach der Einführung von Änderungen in der Schnellansicht

Richten Sie den Status für unsere Adaptive Card Extension ein

Bislang haben wir unsere Kartenansicht und Schnellansicht erstellt. Wenn Sie zu diesem Zeitpunkt eine gulp serve durchführen, können Sie die oben beschriebenen Aktionen ausführen.

Aber jetzt wollen wir noch einen Schritt weiter gehen.

Wir möchten nun die Koordinaten des aktuellen Standorts des Benutzers oder des vom Benutzer gewählten Standorts in der Schnellansicht anzeigen, wenn die entsprechenden Aktionen ausgeführt werden.

Dazu nutzen wir die beiden Textblöcke, die wir zuvor in der Datei QuickViewTemplate.json eingeführt hatten

Zu diesem Zweck werden wir zunächst neue Zustände einführen. Suchen und öffnen Sie zuerst die folgende Datei in Ihrem Projekt: ./src/adaptiveCardExtensions/geoLocation/GeoLocationAdaptiveCardExtension.ts

Fügen Sie hier der Schnittstelle states Folgendes IGeoLocationAdaptiveCardExtensionState hinzu:

latitude: string;
longitude: string;

Ändern Sie als Nächstes in der onInit Funktion this.state={} in

this.state = {
  latitude: 'TBD',
  longitude: 'TBD'
};

Wir werden nun ähnliche Änderungen auch in der Schnellansicht vornehmen.

Suchen und öffnen Sie die folgende Datei in Ihrem Projekt: ./src/adaptiveCardExtensions/geoLocation/quickView/QuickView.ts

Fügen Sie der IQuickViewData Schnittstelle die folgenden Eigenschaften hinzu:

latitude: string;
longitude: string;

und fügen Sie dann die folgenden beiden Zeilen im zurückgegebenen Objekt von data Getter hinzu:

latitude: "Latitude: " + this.state.latitude,
longitude: "Longitude: " + this.state.longitude

Implementieren Sie die Funktion onAction

Bisher haben wir unsere Geolocation-Aktionen definiert und in unseren Staaten verdrahtet. Jetzt können wir endlich die onAction Funktion implementieren, die dem Drittentwickler die Möglichkeit gibt, zu entscheiden, was er mit den Standortkoordinaten machen möchte, die der Benutzer ihm mitgeteilt hat.

Dazu öffnen Sie die Datei QuickView.ts (./src/adaptiveCardExtensions/geoLocation/quickView/QuickView.ts) und importieren die IGetLocationActionArguments Schnittstelle wie folgt:

import {IGetLocationActionArguments} from '@microsoft/sp-adaptive-card-extension-base';

Führen Sie abschließend die folgende onAction Funktion in der QuickView-Klasse ein:

public onAction(action: IGetLocationActionArguments): void {
  if (action.type === 'VivaAction.GetLocation') {
    this.setState({
      latitude: action.location.latitude.toString(),
      longitude: action.location.longitude.toString()
    });
  }
}

Wenn nun also die VivaAction.GetLocation Aktion über die Schnellansicht ausgelöst wird, übergibt das Framework für die adaptive Kartenerweiterung abhängig von den übergebenen Parametern entweder die aktuellen Koordinaten des Benutzers oder die vom Benutzer ausgewählten Koordinaten an den onAction Rückruf. In der oben gezeigten Implementierung wird geprüft, ob der action Typ vom Typ ist VivaAction.GetLocation, und wenn ja, wird die Schnellansicht neu dargestellt, indem ein setState, ausgeführt wird, in dem die Textblöcke latitude und longitude aktualisiert werden.

An diesem Punkt können Sie gulp serve erneut ausführen und sehen, wie alle bisher vorgenommenen Änderungen zusammengekommen sind.

Das ist es! Herzlichen Glückwunsch zur erfolgreichen Erstellung Ihrer adaptiven Kartenerweiterung mit Geolocation-Aktionen.