Lokacija dijeljenje na QT klijentu
Kako ga koristiti?
Uobičajena upotreba
U razgovoru korisnik može kliknuti na ikonu lokacije kako bi prikazao mapu. Ako je Location Services
omogućen na uređaju, na mapi će se prikazati položaj korisnika, zajedno s lokacijama svih ostalih članova koji dijele svoju lokaciju (od svih razgovora o odabranom nalogu). Korisnik može uključiti i isključiti dijeljenje lokacije klikom na dugme dijeljenja lokacije. Po prednapisu, lokacija korisnika je dijeljena 15 minuta, ali to podešavanje može se promijeniti u postavkama aplikacije.
Kada korisnik deli svoju lokaciju u razgovoru, na ikoni razgovora pojavljuje se crvena ikona lokacije. Ako korisnik primi lokaciju od drugog člana, na svim razgovorima u kojima je član prisutan prikazan narandžasti ikona lokacije.
Korisnik može komunicirati s mapom tako što je novi, povećava i izlazi, pomera i zatvara.
Razvijena uporaba
S druge strane, u skladu s člankom 1.
scenarij
Korisnik već dijeli lokaciju sa razgovorom A i razgovorom B.
Karakteristika
Ako korisnik pređe na razgovor C, mapa je još uvijek vidljiva i korisnik ima dvije opcije
Kliknite na dugme dijeljenja lokacije kako biste također dijelili lokaciju s članovima razgovora C.
Kliknite na kraj dugme dijeljenja lokacije. To će prikazati pop-up koji omogućuje korisniku da isključi dijeljenje lokacije u potpunosti ili samo prestane dijeljenje svoje lokacije s članovima razgovora C.
Vrata
Ako je prozor otključan, korisnik neće moći kliknuti na dugme dijeljenja lokacije jer prozor više nije povezan s razgovorom. Za početak dijeljenja lokacije s novim ljudima, korisnik mora ponovno otključati prozor.
Računovodstvo
Svaki račun ima svoju jedinstvenu mapu. Ako korisnik otkloni mapu dok je na računu A, zatim pređe na računu B i otkloni mapu, dvije karte će biti vidljive.
Kako to funkcionira?
Uvod
Ova je osobina podijeljena na tri dijela:
Poslanje pozicije
Dobivanje pozicije
Prikaz pozicije
Za određivanje lokacije, koristi se API [Qt pozicioniranje]https://doc.qt.io/qt-6/qtpositioning-index.html). Nakon što se pozicija utvrdi, ona se šalje kao poruka na DHT-u i prenosi klijentu.
Poslanje pozicije
Čim se mapa otvori, klasa Positioning
se brine o povratku trenutne pozicije koristeći klasu QGeoPositionInfoSource
u modulu QtPositioning
.
Lokalno putem
localPositionReceived
signala kako bi korisnik mogao vidjeti svoju vlastitu pozicijuU DHT-u sve razgovore u listi
positionShareConvIds_
. Ovaj popis sadrži ključeve svih razgovora s kojima korisnik želi podijeliti svoju poziciju.
U skladu s člankom 1. stavkom 1. stavkom 1.
U skladu s člankom 4. stavkom 1.
Latitud
Dugoznačna
Vrijeme (ne koristi se od strane QtClienta)
Primjer podataka: {\"lat\":45.51616583988481,\"duge\":-73.620693,\"vreme\":1671658862000,\"tip\":\"Positija\"}
Kada šaljete poziciju demonu, autor je URI također prenosi.
Kada korisnik prestane dijeliti svoju poziciju s razgovorom, ID razgovora jednostavno se uklanja s liste positionShareConvIds_
.
Dobivanje pozicije
Kada se pozicija primi, pokreće slot „onPositionReceived() „. Bilo da je to lokalna pozicija iz modula QtPositioning
ili pozicija iz drugog kontakta. Na nivou positionManager
, popis objectListSharingUris_
pohranjuje sve pozicije klijenta.
U skladu s člankom 4. stavkom 1. stavkom 1.
Uprkos tome, u skladu s člankom 4. stavkom 1. stavkom 1.
U slučaju da se ne može utvrditi u skladu s člankom 4. stavkom 1.
U popis se pozicija pohranjuje u obliku objekta tipa positionObject
. Ovaj tip omogućuje nadzor za svaku poziciju.
Prikaz pozicije
Kada se pozicija primi (slot onPositionReceived()
) aktivirana), pozicija se prenosi na Qml koji zauzvrat šalje informacije u biblioteku JavaScript-a. Qt WebEngine
modul omogućuje most između biblioteke web tehnologije i Qml. Svaka pozicija je predstavljena slojem dodanom na mapu.