QT bezeroan kokapena partekatzea

Nola erabili?

Erabilera txikia

Elkarrizketa batean, erabiltzaileak kokapen ikonoan klik egin dezake mapa bat erakusteko. Location Services gailuan aktibatzen bada, erabiltzailearen kokapena erakutsiko da mapan, bere kokapena partekatzen ari diren beste kide guztien kokapenak ere bai (aukeratutako kontuaren elkarrizketa guztietatik).

Erabiltzaile batek elkarrizketan bere kokapena partekatzen duenean, kokapen ikono gorria agertuko da elkarrizketa ikonan. Erabiltzaileak beste kide batengandik kokapena jasotzen badu, kokapen ikono laranja bat agertuko da kideak duen elkarrizketa guztietan.

Erabiltzaileak mapa berriztatze, zoomatu, mugitu eta itxiz interakzio egin dezake.

Erabilera aurreratua

Banaketa anitza

Eszenarioak

Erabiltzaileak dagoeneko A eta B elkarrizketekin leku partekatzen ari da.

Funtzioa

Erabiltzaileak C elkarrizketara pasatzen bada, mapa oraindik ikusgai dago eta erabiltzaileak bi aukera ditu

  1. Sakatu kokapen partekatzeko botoia C elkarrizketako kideekin ere partekatzeko.

  2. Sakatu kokapen partekatzearen bukaerako botoia. Honek agertuko da agerraldi bat, erabiltzaileari ahalbidetzen diona kokapen partekatzea erabat itzaltzea edo C elkarrizketako kideekin kokapena partekatzeari uztea soilik.

Leiho zapiak

Leihoa desblokeatuta badago, erabiltzaileak ezin izango du kokapen partekatzeko botoia sakatu, leihoa ez delako jada konektatuta elkarrizketarekin. Jende berriarekin kokapena partekatzeko, erabiltzaileak leihoa berriro sakatu behar du. Kontuan izan leihoa desblokeatzeak ez duela kokapen partekatze jarraian eragiten. Gainera, leihoa desblokeatuta dagoen bitartean kokapen partekatzeko bukaerako botoia sakatzeak kokapen partekatze guztiak geldituko ditu eta ez da agertuko agerraldi bat erabiltzaileari elkarrizketa jakin bat aukeratzeko aukera emango diona.

Kontu asko

Kontu bakoitzak bere mapa berezia du. Erabiltzaileak mapa A kontuan zegoela deskargatzen badu, eta gero B kontuan pasatzen bada eta mapa deskargatzen badu, bi mapa agertuko dira. A eta B kontuan dauden mapak elkarren artean partekatzen diren posizioak erakusten dituzte, hurrenez hurren, eta guztiz bereizita daude.

Nola funtzionatzen du?

Aurkezpena

Funtzio hau hiru zatitan banatuta dago:

  1. Norberaren posizioa bidaltzen.

  2. Postua jasotzen

  3. Postu bat erakutsi

Kokapena zehazteko, [Qt posizionamendua] (https://doc.qt.io/qt-6/qtpositioning-index.html) API erabiltzen da. Kokapena zehaztutakoan, DHTn mezu gisa bidaltzen da eta bezeroari igortzen zaio. Hartuen kokapena gero [OpenLayers] (https://openlayers.org/) JavaScript liburutegia erabiliz agertzen da.

Postua bidaltzen

Mapa irekitzean, Positioning klaseak egungo posizioa berreskuratzen du QGeoPositionInfoSource modulearen QtPositioning klasea erabiliz.

  • Tokikoz, localPositionReceived seinalearen bidez, erabiltzaileak bere posizioa ikus dezan

  • DHT-n elkarrizketa guztiei positionShareConvIds_ zerrendan. Zerrenda honek erabiltzaileak bere posizioa partekatu nahi dituen elkarrizketa guztien gakoak ditu. Gako honetatik, parte hartzaile guztien URIak lortzen dira eta posizio mezu bat bidaltzen da parte hartzaile bakoitzari.

JSON formatua da posizio bat:

  • Tipoa (posiziazio edo geldialdi mezuak)

  • Latitudua

  • Luzera

  • Denbora (QtClientek erabili ez duena)

Datuen adibide bat: {\"lat\":45.51616583988481,\"luzea\":-73.620693,\"denbora\":1671658862000,\"motakoa\":\" posizioa\"}

Postua deabruari bidaltzen diogunean, egilearen URI ere igortzen da.

Erabiltzaileak bere posizioa elkarrizketarekin partekatzeari uzten dionean, elkarrizketaren IDa positionShareConvIds_ zerrendatik kentzen da.

Postua jasotzen

Postu bat jasotzen denean, ‹onPositionReceived()›slot-a pizten da. QtPositioning moduluko tokiko posizioa edo beste kontaktu bateko posizioa izan ala ez. positionManager mailan, objectListSharingUris_ zerrendak bezeroaren posizio guztiak gordetzen ditu.

  • gehitu (URI ez dago zerrendan)

  • Eguneratu (URI dagoeneko zerrendan dago)

  • Ezabatu (motakoa = «Gelditu»)

Postua zerrendan gordetzen da positionObject motako objektu baten moduan.

Postu bat erakutsi

Postu bat jasotzen denean (slot onPositionReceived() aktibatzen denean, posizioa Qml-era igortzen da eta horrek informazioa [OpenLayers]https://openlayers.org/) JavaScript liburutegira bidaltzen du. Qt WebEngine modulua liburutegiko web teknologia eta Qml-en arteko zubi bat egiteko aukera ematen du. Postu bakoitza mapa gehitutako geruza batekin irudikatzen da. newPosition() funtzioak geruza berri bat gehitzen du, updatePosition() funtzioak geruza koordinatuak eguneratzen ditu, eta `removePosition() funtzioak geruza kentzen du.