Lokacija deljenje na QT stranki
Kako ga uporabiti?
Trivialna uporaba
Če je Location Services
omogočen na napravi, se bo na mapi prikazala lokacija uporabnika, skupaj z lokacijo vseh drugih članov, ki delijo svojo lokacijo (od vseh pogovorov izbranega računa). Uporabnik lahko prekliče izmenjavo lokacije in izklop z klikom na gumb za izmenjavo lokacije.
Ko uporabnik deli svojo lokacijo v pogovoru, se na ikoni pogovora pojavi rdeča ikona lokacije. Če uporabnik prejme lokacijo od drugega člana, se na vseh pogovorih, v katerih je član prisoten, prikaže oranžna ikona lokacije.
Uporabnik lahko interakcijo z zemljevidom z uprezering, zooming in ven, premikanje in zapiranje.
Napredna uporaba
Večkratno delitev
scenarij
Uporabnik že deli lokacijo z pogovorom A in pogovorom B.
Funkcija
Če uporabnik preide na pogovor C, je mapa še vedno vidna in uporabnik ima dve možnosti
Kliknite gumb za delitev lokacije, da se lahko delite tudi z člani pogovora C.
Kliknite gumb končnega deljenja lokacije. To bo pokazalo v vtis, ki uporabniku omogoča, da popolnoma izključi deljenje lokacije ali pa samo preneha deliti svojo lokacijo z člani pogovora C.
Vklopljeno okno
Če je okno odklopljeno, uporabnik ne bo mogel klikniti gumb za delitev lokacije, ker okno ni več povezano z pogovorom. Če želite začeti delitev lokacije z novimi ljudmi, morate ponovno priključiti okno. Upoštevajte, da odklopljanje okna ne vpliva na stalno delitev lokacije. Poleg tega bo klik na gumb za delitev lokacije, medtem ko je okno odklopljeno, ustavilo vse trenutno delitev lokacije in ne bo pojavila vtiska, ki bi uporabniku omogočila, da izbere določen pogovor, s katerim se bo prenehal deliti.
Več računov
Vsak račun ima svojo edinstveno zemljevid. Če uporabnik razkloni zemljevid, ko je na računu A, nato preide na račun B in razkloni zemljevid, bodo vidne dve zemljevidovi. zemljevid za račune A in B prikazujejo položaje, ki so v skupini z njimi in so popolnoma ločeni drug od drugega
Kako to deluje?
Vvod
Ta značilnost je razdeljena na tri dele:
Poslanje položaja.
Prijemajo položaj
Prikaz položaja
Za določitev lokacije se uporablja API [Qt Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html). Ko je bila lokacija določena, se pošlje kot sporočilo na DHT in se prenaša klijentu.
Poslanje pozicije
Ko je mapa odprta, se razred Positioning
poskrbi za pridobivanje trenutne pozicije z uporabo razreda QGeoPositionInfoSource
modula QtPositioning
.
Lokalno preko
localPositionReceived
signala, tako da lahko uporabnik vidi svojo lastno lokacijoNa DHT vse pogovore v seznamu
positionShareConvIds_
. Ta seznam vsebuje ključe vseh pogovorov, s katerimi želi uporabnik deliti svojo pozicijo.
V obliki JSON položaja je naslednje:
Vrsta (posnetek o položaju ali zaustavitvi)
Širinska širina
Dolžina
Čas (ne uporablja QtClient)
Primer podatkov: {\"lat\":45.51616583988481,\"dolg\":-73.620693,\"čas\":1671658862000,\"tip\":\"Poseditev\"}
Ko pošljemo položaj demonu, se prenese tudi avtorjev URI.
Ko uporabnik preneha deliti svojo stališče s pogovorom, se ID pogovorov preprosto odstrani iz seznama positionShareConvIds_
.
Prijemajo položaj
Ko se pozicija prejme, se sproži razdelek „onPositionReceived() „. Ne glede na to, ali gre za lokalno pozicijo iz modula QtPositioning
ali pozicijo iz drugega stika.
Dodajanje (URI ni na seznamu)
Občasni (URI je že prisoten na seznamu)
Izbrišeno (tip = „Stop“)
V seznamu se položaj shranjuje v obliki predmeta tipa positionObject
. Ta tip omogoča nadzor za vsako položaj. Če položaj ni posodobljen v določenem časovnem okviru, se odstrani iz seznama.
Prikaz položaja
Ko je pozicija prejeta (slot onPositionReceived()
) sprožena), se pozicija prenaša v Qml, ki je na svoj način poslala informacije v knjižnico JavaScript [https://openlayers.org/]. Modul Qt WebEngine
omogoča most med knjižnično spletno tehnologijo in Qml. Vsako pozicijo predstavlja vrsti, dodana na zemljevid. Funkcija newPosition()
dodaja novo vrstico, funkcija updatePosition()
posodablja koordinate vrstice, funkcija removePosition()
odstranjuje vrstico.