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

  1. Kliknite na dugme dijeljenja lokacije kako biste također dijelili lokaciju s članovima razgovora C.

  2. 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:

  1. Poslanje pozicije

  2. Dobivanje pozicije

  3. 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 poziciju

  • U 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.