QT வாடிக்கையாளரில் இருப்பிடம் பகிர்வு

அதை எப்படி பயன்படுத்துவது?

சிறு பயன்பாடு

ஒரு உரையாடலில், பயனர் ஒரு வரைபடத்தை காண்பிக்க இருப்பிட ஐகானை கிளிக் செய்யலாம். Location Services சாதனத்தில் இயக்கப்பட்டிருந்தால், பயனரின் இருப்பிடம் வரைபடத்தில் காண்பிக்கப்படும், மேலும் தேர்ந்தெடுக்கப்பட்ட கணக்கின் அனைத்து உரையாடல்களிலிருந்தும் (அவர்கள் இருப்பிடத்தைப் பகிர்ந்து கொள்ளும் மற்ற உறுப்பினர்களின் இருப்பிடங்களும்) காண்பிக்கப்படும். இருப்பிட பகிர்வு பொத்தான்களைக் கிளிக் செய்வதன் மூலம் பயனர் இருப்பிட பகிர்வை இயக்கலாம் மற்றும் அணைக்கலாம். இயல்பாக, பயனரின் இருப்பிடம் 15 நிமிடங்கள் பகிரப்படுகிறது, ஆனால் இந்த அமைப்பை பயன்பாட்டின் அமைப்புகளில் மாற்றலாம்.

ஒரு பயனர் உரையாடலில் தனது இருப்பிடத்தை பகிர்ந்து கொள்ளும்போது, உரையாடல் ஐகானில் சிவப்பு இருப்பிட ஐகான் தோன்றும். பயனர் மற்றொரு உறுப்பினரிடமிருந்து இருப்பிடத்தைப் பெற்றால், உறுப்பினர் இருக்கும் அனைத்து உரையாடல்களிலும் ஆரஞ்சு இருப்பிட ஐகான் காண்பிக்கப்படும்.

பயனர் வரைபடத்துடன் தொடர்புகொள்வது, புதிதாகப் பெறுவது, பெரிதாக்குவது, நகர்த்துவது மற்றும் அதை மூடுவது ஆகியவற்றைக் கொண்டுள்ளது. வரைபடத்தை இணைக்கலாம் அல்லது இணைக்க முடியாது. வரைபடம் இணைக்கப்படாதபோது, பயனர் சரியான கணக்கில் இருந்தால் அதை மீண்டும் இணைக்கலாம். இந்த அம்சம் பயனருக்கு வரைபடத்தை தொடர்ந்து பயன்படுத்தும் போது காட்சியளிக்கும்.

மேம்பட்ட பயன்பாடு

பல பகிர்வு

சூழ்நிலை

பயனர் ஏற்கனவே உரையாடல் A மற்றும் உரையாடல் B உடன் இருப்பிடத்தை பகிர்ந்து கொண்டிருக்கிறார்.

அம்சம்

பயனர் உரையாடல் C க்கு மாறும்போது, வரைபடம் இன்னும் தெரியும் மற்றும் பயனர் இரண்டு விருப்பங்கள் உள்ளன

  1. உரையாடல் C உறுப்பினர்களுடன் இருப்பிடத்தை பகிர்ந்து கொள்ள இருப்பிட பகிர்வு பொத்தானை கிளிக் செய்யவும்.

  2. இருப்பிட பகிர்வு முடிவு பொத்தானைக் கிளிக் செய்க. இது பயனருக்கு இருப்பிட பகிர்வை முற்றிலும் முடக்க அல்லது உரையாடல் C உறுப்பினர்களுடன் தங்கள் இருப்பிடத்தைப் பகிர்வதை நிறுத்த அனுமதிக்கும் ஒரு பாப்-அப்பைக் காண்பிக்கும்.

பின்னட் ஜன்னல்

விண்டோ திறக்கப்பட்டால், பயனர் இருப்பிட பகிர்வு பொத்தானை கிளிக் செய்ய முடியாது, ஏனெனில் விண்டோ இனி உரையாடலுடன் இணைக்கப்படவில்லை. புதிய நபர்களுடன் இருப்பிட பகிர்வைத் தொடங்க பயனர் விண்டோவை மீண்டும் இணைக்க வேண்டும். விண்டோவை திறப்பது எந்த நிலையான இருப்பிட பகிர்வைப் பாதிக்காது என்பதை நினைவில் கொள்க. கூடுதலாக, விண்டோ திறக்கப்படும்போது இருப்பிட பகிர்வு முடிவு பொத்தானைக் கிளிக் செய்வது தற்போதைய இருப்பிட பகிர்வை நிறுத்தும், மேலும் பயனருக்கு பகிர்வை நிறுத்த ஒரு குறிப்பிட்ட உரையாடலைத் தேர்ந்தெடுக்க அனுமதிக்கும் பாப்-அப் எதுவும் தோன்றாது.

பல கணக்குகள்

ஒவ்வொரு கணக்கும் அதன் சொந்த தனித்துவமான வரைபடத்தைக் கொண்டுள்ளது. கணக்கு A இல் இருக்கும்போது பயனர் வரைபடத்தை அகற்றினால், பின்னர் கணக்கு B க்கு மாறி வரைபடத்தை அகற்றினால், இரண்டு வரைபடங்கள் தெரியும். கணக்குகள் A மற்றும் B க்கான வரைபடங்கள் அந்த கணக்குகளுடன் பகிர்ந்த நிலையை முறையே காண்பிக்கும், மேலும் அவை ஒருவருக்கொருவர் முற்றிலும் தனித்தனியாக உள்ளன

அது எப்படி வேலை செய்கிறது?

அறிமுகம்

இந்த அம்சம் மூன்று பகுதிகளாகப் பிரிக்கப்பட்டுள்ளதுஃ

  1. ஒருவரை நிலைப்படுத்தும்

  2. பதவி பெறுதல்

  3. ஒரு நிலையை காண்பித்தல்

இருப்பிடத்தை தீர்மானிக்க [Qt Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html) API பயன்படுத்தப்படுகிறது. இருப்பிடம் தீர்மானிக்கப்பட்டவுடன், அது DHT இல் ஒரு செய்தியாக அனுப்பப்பட்டு கிளையண்டுக்கு அனுப்பப்படுகிறது. பெறப்பட்ட இருப்பிடம் பின்னர் [OpenLayers]https://openlayers.org/) JavaScript நூலகத்தைப் பயன்படுத்தி காண்பிக்கப்படுகிறது.

ஒரு நிலைப்பாட்டை அனுப்புதல்

ஒரு வரைபடம் திறக்கப்பட்டவுடன், Positioning வகுப்பு QGeoPositionInfoSource வகுப்பைப் பயன்படுத்தி தற்போதைய நிலையை மீட்டெடுப்பதை கவனிக்கிறது. பின்னர் நிலை JSON வடிவத்திற்கு மாற்றப்பட்டு positionManager க்கு அனுப்பப்படுகிறது. இந்த வகுப்பு முழு நிலையை பகிர்வதற்கான செயல்முறையையும் ஒருங்கிணைக்கிறது. நிலை sendPosition() செயல்பாடு மூலம் பகிரப்படுகிறது.

  • localPositionReceived சிக்னல் மூலம், பயனர் தமது சொந்த நிலையை பார்க்க முடியும்

  • positionShareConvIds_ பட்டியலில் உள்ள அனைத்து உரையாடல்களுக்கும் DHT இல். இந்த பட்டியல் பயனர் தங்கள் நிலையை பகிர்ந்து கொள்ள விரும்பும் அனைத்து உரையாடல்களின் விசைகளைக் கொண்டுள்ளது. இந்த விசை மூலம், அனைத்து பங்கேற்பாளர்களின் URIs பெறப்பட்டு ஒவ்வொரு பங்கேற்பாளருக்கும் ஒரு நிலை செய்தியை அனுப்பப்படுகிறது.

ஒரு நிலை JSON வடிவத்தில் பின்வருமாறுஃ

  • வகை (நிலை அல்லது நிறுத்த செய்தி)

  • அகலம்

  • நீளநிலை

  • நேரம் (QtClient பயன்படுத்தாதது)

தரவுகளின் உதாரணம்ஃ {\"lat\":45.51616583988481,\"long\":-73.620693,\"time\":1671658862000,\"type\":\"position\"}

அந்த நிலையை டேமோனுக்கு அனுப்புவதன் மூலம், ஆசிரியரின் URIவும் அனுப்பப்படுகிறது.

பயனர் ஒரு உரையாடலுடன் தனது நிலையை பகிர்ந்து கொள்வதை நிறுத்தும்போது, உரையாடலின் ஐடி positionShareConvIds_ பட்டியலில் இருந்து அகற்றப்படுகிறது. ஒவ்வொரு பங்கேற்பாளருக்கும் "நிறுத்த" செய்தியும் அனுப்பப்படுகிறது.

பதவி பெறுதல்

ஒரு நிலை பெறும்போது, இது 'onPositionReceived()'இடத்தைத் தூண்டுகிறது. இது QtPositioning தொகுதிகளிலிருந்து உள்ளூர் நிலை அல்லது மற்றொரு தொடர்பு இருந்து ஒரு நிலை என்பதைக் குறிக்கிறது. positionManager மட்டத்தில், objectListSharingUris_ பட்டியல் வாடிக்கையாளரின் அனைத்து நிலைகளையும் சேமிக்கிறது. நிலைஃ

  • சேர்க்கப்பட்டது (URI பட்டியலில் இல்லை)

  • புதுப்பிக்கப்பட்டது (URI ஏற்கனவே பட்டியலில் உள்ளது)

  • நீக்கப்பட்டது (வகை = "நிறுத்தவும்")

இந்த நிலை ஒரு positionObject வகை பொருளின் வடிவத்தில் பட்டியலில் சேமிக்கப்படுகிறது. இந்த வகை ஒவ்வொரு நிலைக்கும் ஒரு கண்காணிப்பு நாயை அனுமதிக்கிறது. ஒரு குறிப்பிட்ட காலத்திற்குள் நிலை புதுப்பிக்கப்படாவிட்டால், அது பட்டியலில் இருந்து நீக்கப்படுகிறது.

ஒரு நிலையை காண்பித்தல்

ஒரு நிலை (slot onPositionReceived() செயல்படுத்தப்படும் போது), நிலை Qml க்கு அனுப்பப்படுகிறது, இது மறுபடியும் தகவல்களை [OpenLayers]https://openlayers.org/) JavaScript நூலகத்திற்கு அனுப்புகிறது. Qt WebEngine தொகுதி நூலகத்தின் வலை தொழில்நுட்பத்திற்கும் Qml க்கும் இடையிலான பாலத்தை அனுமதிக்கிறது. ஒவ்வொரு நிலை வரைபடத்திற்கு ஒரு அடுக்கு சேர்க்கப்படுகிறது. newPosition() செயல்பாடு ஒரு புதிய அடுக்கு சேர்க்கிறது, updatePosition() செயல்பாடு அடுகையின் ஆயத்தொலைகளை புதுப்பிக்கிறது, மற்றும் removePosition() செயல்பாடு அடுகையை அகற்றுகிறது.