Standort Teilen auf QT-Kunden
Wie soll ich es benutzen?
Kleine Verwendung
Wenn Location Services
auf dem Gerät aktiviert ist, wird die Position des Benutzers auf der Karte angezeigt, zusammen mit den Standorten aller anderen Mitglieder, die ihren Standort teilen (von allen Gesprächen des ausgewählten Kontos). Der Benutzer kann den Standort-Teilen ein- und ausschalten, indem er auf die Standort-Teilungs-Taste klickt. Standardmäßig wird der Standort des Benutzers für 15 Minuten geteilt, aber diese Einstellung kann in den Einstellungen der App geändert werden.
Wenn ein Benutzer seinen Standort in einer Konversation teilt, erscheint ein rotes Standort-Icon auf dem Konversations-Icon. Wenn der Benutzer einen Standort von einem anderen Mitglied erhält, wird auf allen Gesprächen, in denen das Mitglied anwesend ist, ein orangefarbener Standort-Icon angezeigt.
Der Benutzer kann mit der Karte interagieren, indem er sie neuerdings, zoomend, bewegt und schließt. Die Karte kann auch festgeschnallt oder unpinned werden. Wenn die Karte unpinned ist, kann sie wieder geschnallt werden, wenn der Benutzer sich im richtigen Konto befindet. Diese Funktion ermöglicht es dem Benutzer, die Karte sichtbar zu halten, während er Jami weiterhin verwendet.
Fortgeschrittene Verwendung
Mehrfachverteilung
Szenario
Der Benutzer teilt bereits den Standort mit Gespräch A und Gespräch B.
Eigenschaft
Wenn der Benutzer auf Konversation C wechselt, ist die Karte immer noch sichtbar und der Benutzer hat zwei Optionen
Klicken Sie auf die Ort-Teil-Taste, um auch den Ort mit den Mitgliedern des Gesprächs C zu teilen.
Klicken Sie auf die Endknopf für die Ortteilungsfunktion. Hierbei wird ein Popup angezeigt, mit dem der Benutzer entweder die Standortteilungsfunktion ausschalten oder nur die Standortteilungsfunktion mit den Mitgliedern des Gesprächs C einstellen kann.
Verpflanztes Fenster
Wenn das Fenster nicht eingeschaltet ist, kann der Benutzer nicht auf den Standort-Teilknopf klicken, da das Fenster nicht mehr mit einer Konversation verbunden ist. Um mit neuen Personen zu beginnen, muss der Benutzer das Fenster erneut anschalten. Beachten Sie, dass das Entfernen des Fensters keinen laufenden Standort-Teil beeinflusst. Zusätzlich klicken Sie auf den Standort-Teilknopf, während das Fenster nicht eingeschaltet ist, wird alle aktuelle Standort-Teilungen gestoppt und kein Popup erscheinen, mit dem der Benutzer eine bestimmte Konversation auswählen kann, um das Teilen zu beenden.
Mehrfachkonten
Jedes Konto hat seine eigene einzigartige Karte. Wenn der Benutzer die Karte während des Konto A entzieht, dann auf Konto B wechselt und die Karte entzieht, werden zwei Karten sichtbar sein. Die Karten für Konten A und B zeigen die Positionen, die mit diesen Konten geteilt werden, bzw. sind völlig voneinander getrennt
Wie funktioniert das?
Einführung
Diese Eigenschaft ist in drei Teile unterteilt:
Senden Sie Ihre Position
Ein Positionsantrag
Anzeige einer Position
Zur Bestimmung des Standorts wird [Qt Positioning] (https://doc.qt.io/qt-6/qtpositioning-index.html) API verwendet. Sobald die Position bestimmt ist, wird sie als Nachricht auf der DHT gesendet und an den Client übertragen. Die empfangene Position wird dann mit der JavaScript-Bibliothek [OpenLayers] (https://openlayers.org/) angezeigt.
Eine Position zu senden
Sobald eine Karte geöffnet ist, kümmert sich die Positioning
-Klasse um die Abrufung der aktuellen Position mit der QGeoPositionInfoSource
-Klasse des QtPositioning
-Moduls. Die Position wird dann in JSON-Format umgewandelt und an den positionManager
übertragen. Diese Klasse koordiniert den gesamten Positionsteilprozess. Die Position wird dann über die sendPosition()
-Funktion geteilt.
Lokal über das
localPositionReceived
-Signal, damit der Benutzer seine eigene Position sehen kannAuf der DHT zu allen Gesprächen in der
positionShareConvIds_
Liste. Diese Liste enthält die Schlüssel für alle Gespräche, mit denen der Benutzer seine Position teilen möchte. Von dieser Schlüssel werden die URIs aller Teilnehmer ermittelt und eine Positionnachricht an jeden Teilnehmer gesendet.
Das JSON-Format einer Position ist wie folgt:
Typ (Positions- oder Stoppnachricht)
Breite
Längsgrenze
Zeit (nicht vom QtClient verwendet)
Ein Beispiel für Daten: {\"lat\":45.51616583988481,\"long\":-73.620693,\"Time\":1671658862000,\"type\":\"Position\"}
Bei der Übermittlung der Position an den Daemon wird auch die URI des Autors übertragen.
Wenn der Benutzer seine Position mit einer Konversation nicht weitergibt, wird die Konversations-ID einfach aus der positionShareConvIds_
Liste entfernt.
Ein Positionsantrag
Wenn eine Position empfangen wird, wird der Slot „onPositionReceived() “ ausgelöst. Ob es sich um eine lokale Position aus dem QtPositioning
Modul oder eine Position aus einem anderen Kontakt handelt. Auf der Ebene positionManager
speichert die objectListSharingUris_
Liste alle Positionen des Kunden.
Hinzugefügt (die URI ist nicht in der Liste enthalten)
Aktualisiert (die URI ist bereits in der Liste enthalten)
Löscht (Typ = „Stop“)
Die Position wird in der Liste in Form eines Objekts des Typs positionObject
gespeichert. Dieser Typ ermöglicht eine Überwachung für jede Position.
Anzeige einer Position
Wenn eine Position empfangen wird (Slot onPositionReceived()
ausgelöst), wird die Position an Qml übertragen, die wiederum die Informationen an die [OpenLayers] (https://openlayers.org/) JavaScript-Bibliothek sendet. Das Qt WebEngine
Modul ermöglicht die Verbindung zwischen der Webtechnologie der Bibliothek und Qml. Jede Position wird durch eine Schicht auf der Karte hinzugefügt. Die newPosition()
Funktion fügt eine neue Schicht hinzu, die updatePosition()
Funktion aktualisiert die Koordinaten der Schicht und die removePosition()
Funktion entfernt die Schicht.