Implementieren dynamischer Stile für Gebäudepläne von Ersteller

Sie können den Featurezustandsdienst von Azure Maps Creator nutzen, um Stile basierend auf den dynamischen Eigenschaften der Features von Gebäudeplandaten anzuwenden. Beispielsweise können Sie Besprechungsräume der Einrichtung mit einer bestimmten Farbe rendern, um den Belegungsstatus anzuzeigen. Dieser Artikel beschreibt, wie Sie Features von Gebäudeplänen mithilfe des Featurezustandsdiensts und des Indoor-Webmoduls rendern.

Voraussetzungen

In diesem Artikel wird die Anwendung Postman verwendet. Sie können aber auch eine andere API-Entwicklungsumgebung verwenden.

Implementieren dynamischer Stile

Nachdem Sie die Voraussetzungen erfüllt haben, sollten Sie über eine einfache Webanwendung verfügen, die mit Ihrem Abonnementschlüssel und statesetId konfiguriert ist.

Auswählen von Features

Sie verweisen auf ein Feature, wie z. B. einen Besprechungs- oder Konferenzraum, anhand der ID, um dynamische Stile zu implementieren. Verwenden Sie die Feature-ID, um die dynamische Eigenschaft oder den Zustand dieses Features zu aktualisieren. Um die in einem Dataset definierten Features anzuzeigen, verwenden Sie eine der folgenden Methoden:

  • WFS-API (Web Feature Service). Nutzen Sie die WFS-API, um Datasets abzufragen. WFS hält die Features der Open Geospatial Consortium-API ein. Die WFS-API ist hilfreich beim Abfragen von Features innerhalb eines Datasets. Beispielsweise können Sie WFS verwenden, um alle mittelgroßen Besprechungsräume einer bestimmten Einrichtung und in einem bestimmten Stockwerk zu finden.

  • Implementieren Sie benutzerdefinierten Code, der es einem Benutzer ermöglicht, mithilfe Ihrer Webanwendung Features auf einer Karte auszuwählen. Dies wird in diesem Artikel veranschaulicht.

Das folgende Skript implementiert das Mausklick-Ereignis. Der Code ruft die Feature-ID basierend auf dem angeklickten Punkt ab. In Ihrer Anwendung können Sie den Code nach dem Block mit Ihrem Indoor-Manager-Code einfügen. Führen Sie Ihre Anwendung aus, und überprüfen Sie anschließend die Konsole, um die Feature-ID des angeklickten Punkts zu erhalten.

/* Upon a mouse click, log the feature properties to the browser's console. */
map.events.add("click", function(e){

    var features = map.layers.getRenderedShapes(e.position, "unit");

    features.forEach(function (feature) {
        if (feature.layer.id == 'indoor_unit_office') {
            console.log(feature);
        }
    });
});

Im Tutorial Erstellen eines Gebäudeplans wurde das Featurezustandsset für die Annahme von Zustandsaktualisierungen für occupancy konfiguriert.

Im nächsten Abschnitt legen Sie den Zustand von „occupancy“ (Belegung) von Büro UNIT26 auf true und von Büro UNIT27 auf false fest.

Festlegen des Belegungsstatus

Aktualisieren Sie den Zustand der beiden Büros UNIT26 und UNIT27:

  1. Klicken Sie in der Postman-App auf New (Neu).

  2. Wählen Sie im Fenster Create New (Neu erstellen) die Option HTTP Request (HTTP-Anforderung) aus.

  3. Geben Sie einen Request name (Anforderungsnamen) für die Anforderung ein, z. B. POST Data Upload.

  4. Geben Sie die folgende URL für die Zustands-API für Featureupdates ein (ersetzen Sie {Azure-Maps-Subscription-key} durch Ihren Azure Maps-0Abonnementschlüssel und statesetId durch die statesetId):

    https://us.atlas.microsoft.com/featurestatesets/{statesetId}/featureStates/UNIT26?api-version=2.0&subscription-key={Your-Azure-Maps-Subscription-key}
    
  5. Wählen Sie die Registerkarte Headers (Header) aus.

  6. Wählen Sie im Feld KEY (SCHLÜSSEL) die Option Content-Type aus. Wählen Sie im Feld VALUE (WERT) die Option application/json aus.

    Header tab information for stateset creation.

  7. Wählen Sie die Registerkarte Body (Text) aus.

  8. Wählen Sie in den Dropdownlisten raw und JSON aus.

  9. Kopieren Sie den folgenden JSON-Stil, und fügen Sie ihn in das Body-Fenster (Text) ein.

    {
        "states": [
            {
                "keyName": "occupied",
                "value": true,
                "eventTimestamp": "2020-11-14T17:10:20"
            }
        ]
    }
    

    Wichtig

    Das Update wird nur gespeichert, wenn der gepostete Zeitstempel nach dem Zeitstempel liegt, der in früheren Featurezustandsaktualisierungs-Anforderungen für dieselbe Feature-ID verwendet wurde.

  10. Ändern Sie die URL, die Sie in Schritt 7 verwendet haben, indem Sie UNIT26 durch UNIT27 ersetzen:

    https://us.atlas.microsoft.com/featurestatesets/{statesetId}/featureStates/UNIT27?api-version=2.0&subscription-key={Your-Azure-Maps-Subscription-key}
    
  11. Kopieren Sie den folgenden JSON-Stil, und fügen Sie ihn in das Body-Fenster (Text) ein.

    {
        "states": [
            {
                "keyName": "occupied",
                "value": false,
                "eventTimestamp": "2020-11-14T17:10:20"
            }
        ]
    }
    

Visualisieren dynamischer Stile auf einer Karte

Die Webanwendung, die Sie zuvor in einem Browser geöffnet haben, sollte jetzt den aktualisierten Zustand der Kartenfeatures widerspiegeln:

  • Office UNIT27 (142) sollte grün angezeigt werden.
  • Office UNIT26 (143) sollte rot angezeigt werden.

Free room in green and Busy room in red

Livedemo

Nächste Schritte

Weitere Informationen finden Sie unter:

[Was ist Azure Maps Creator?]