மேம்பட்ட புவிஇருப்பிடம்
ட்ரேஸ்லெட் என்பது பின்னணி இருப்பிட ரேப்பரை விட அதிகம். மொபைல் புவிஇருப்பிடத்தில் உள்ள கடினமான சிக்கல்களைச் சமாளிக்க வடிவமைக்கப்பட்ட மேம்பட்ட வழிமுறைகளின் தொகுப்பை இது கொண்டுள்ளது: ஜிபிஎஸ் நடுக்கம், சுரங்கப்பாதை பிளாக்அவுட்கள் மற்றும் அதிக வேகத்தில் பேட்டரி வடிகால்.
1. கல்மான் வடிகட்டி (பாதையை மென்மையாக்குதல்)
மூல GPS தரவு இயல்பாகவே சத்தமாக உள்ளது. ஒரு பயனர் நேரான சாலையில் நடந்து கொண்டிருந்தால், மூல ஆயத்தொலைவுகள் இடது மற்றும் வலதுபுறமாக தோராயமாக குதித்து, “துண்டிக்கப்பட்ட” கோட்டை உருவாக்கும். இந்த துண்டிக்கப்பட்ட கோட்டின் தூரத்தை நீங்கள் கணக்கிட்டால், அது பயனரின் மொத்த தூரத்தை 20% வரை செயற்கையாக உயர்த்தும்.
இது எப்படி வேலை செய்கிறது
useKalmanFilter: true ஐ அமைப்பதன் மூலம், விண்கல வழிசெலுத்தலுக்காக முதலில் உருவாக்கப்பட்ட மேம்பட்ட கணித வழிமுறையை Tracelet பயன்படுத்துகிறது. இது தற்போதைய ஜி.பி.எஸ் நிலையை சாதனத்தின் வேகத்துடன் (வேகம் மற்றும் தலைப்பு) இணைக்கிறது, பயனர் உண்மையில் எங்கிருக்கிறார் என்பதைக் கணிக்க, திறம்பட சத்தத்தை மென்மையாக்குகிறது மற்றும் சரியான, வளைந்த கோட்டை உருவாக்குகிறது.
final config = Config.highAccuracy(
geo: tl.GeoConfig(
filter: tl.LocationFilter(
useKalmanFilter: true, // Enable trajectory smoothing
trackingAccuracyThreshold: 50,
),
),
);2. டெட் ரெக்கனிங் (சுரங்கங்கள் & ஜிபிஎஸ் மறுக்கப்பட்டது)
ஒரு பயனர் நீண்ட சுரங்கப்பாதையில் அல்லது நிலத்தடி பார்க்கிங் கேரேஜில் ஓட்டும்போது, அவர்கள் ஜிபிஎஸ் செயற்கைக்கோள்களுக்கான இணைப்பை இழக்கிறார்கள். பாரம்பரிய டிராக்கர்கள் சுரங்கப்பாதையின் நுழைவாயிலிலிருந்து வெளியேறும் வரை ஒரு நேர் கோட்டை வரைந்து, உண்மையான நிலத்தடி வழியைத் தவிர்த்துவிடும்.
இது எப்படி வேலை செய்கிறது
enableDeadReckoning: true ஐ அமைப்பதன் மூலம், GPS தொலைந்தால் ட்ரேஸ்லெட் கண்டறிந்து, சாதனத்தின் உள் IMUக்கு (Inertial Measurement Unit) உடனடியாக மாறுகிறது. இது முடுக்கமானி மற்றும் கைரோஸ்கோப்பைப் பயன்படுத்தி பயனரின் கடைசியாக அறியப்பட்ட வேகத்தின் அடிப்படையில் அவரது பாதையைத் தொடர்ந்து கணக்கிடுகிறது, GPS புதுப்பிப்புகளை முழுமையாக நிலத்தடியில் இருந்தும் உருவகப்படுத்துகிறது.
final config = Config.balanced(
geo: tl.GeoConfig(
enableDeadReckoning: true,
deadReckoningActivationDelay: 10, // Wait 10 seconds of no GPS before activating
deadReckoningMaxDuration: 300, // Stop dead reckoning after 5 minutes to prevent drift
),
);3. நெகிழ்ச்சி (அதிவேக மேம்படுத்தல்)
உங்கள் distanceFilter 20 மீட்டராக அமைக்கப்பட்டால், ட்ரேஸ்லெட் ஒவ்வொரு 20 மீட்டருக்கும் எழுந்திருக்கும். நேரான நெடுஞ்சாலையில் பயனர் மணிக்கு 120 கிமீ வேகத்தில் ஓட்டினால், ஒரு நொடிக்கும் குறைவான நேரத்தில் 20 மீட்டரைக் கடக்கும். இது நூற்றுக்கணக்கான பயனற்ற புள்ளிகளால் தரவுத்தளத்தை ஒரு நேர்கோட்டில் நிரப்பி, பேட்டரியை வடிகட்டுகிறது.
இது எப்படி வேலை செய்கிறது
ட்ரேஸ்லெட்டின் எலாஸ்டிசிட்டி என்ஜின் அதிக வேகத்தைக் கண்டறிந்து, உங்கள் தூர வடிப்பானை மாறும் வகையில் நீட்டுகிறது. 20மீ வடிகட்டியானது நெடுஞ்சாலையில் தானாக 200மீ வரை நீட்டிக்கப்படலாம், மேலும் பயனர் ஒரு நகரத்திற்குச் செல்லும்போது 20மீட்டராக சுருங்கலாம்.
final config = Config.balanced(
geo: tl.GeoConfig(
disableElasticity: false, // Ensure elasticity is on
elasticityMultiplier: 2.0, // Make the dynamic stretching 2x more aggressive
),
);4. அடாப்டிவ் பயன்முறை (பேட்டரி பாதுகாப்பு)
ஒரு பணியாளரின் ஃபோன் பேட்டரி செயலிழந்தால், அதிக அதிர்வெண் கொண்ட 5 மீட்டர் கண்காணிப்பு உங்கள் முன்னுரிமையாக இருக்கக்கூடாது. ஷிப்ட் முடியும் வரை ஃபோன் உயிர்வாழ்வதை உறுதிசெய்ய வேண்டும்.
இது எப்படி வேலை செய்கிறது
enableAdaptiveMode: true ஐ அமைப்பதன் மூலம், இயக்க முறைமையின் பேட்டரி APIகளை Tracelet தொடர்ந்து கண்காணிக்கிறது. பேட்டரி முக்கியமான வரம்புகளுக்குக் கீழே (எ.கா., 20%, 10%) குறைவதால், ட்ரேஸ்லெட் தானாகவே desiredAccuracy ஐ GPS இலிருந்து Wi-Fi/செல்லுலருக்கு தரமிறக்கி, distanceFilter ஐ விரிவுபடுத்தி, ஃபோனை உயிர்ப்புடன் வைத்திருக்க போதுமான சக்தியைப் பாதுகாக்கிறது.
final config = Config.balanced(
geo: tl.GeoConfig(
enableAdaptiveMode: true,
),
);5. குறைவான புதுப்பிப்புகள் (செல்-டவர் மட்டும்)
சில நேரங்களில் உங்களுக்கு டர்ன்-பை-டர்ன் நேவிகேஷன் துல்லியம் தேவையில்லை; பயனர் எந்த நகரம் அல்லது சுற்றுப்புறத்தில் இருக்கிறார் என்பதை நீங்கள் தெரிந்து கொள்ள வேண்டும் (எ.கா., சமூக வலைப்பின்னல் பயன்பாடு அல்லது வானிலை பயன்பாடு).
இது எப்படி வேலை செய்கிறது
enableSparseUpdates ஐ இயக்குவதன் மூலம், ட்ரேஸ்லெட் ஆற்றல்-பசி GPS சிப்பை முழுவதுமாக கடந்து செல்கிறது. இருப்பிடத்தைப் புதுப்பிக்க, இது பிரத்தியேகமாக செல்-டவர் ஹேண்ட்ஆஃப்கள் மற்றும் Wi-Fi முக்கோணத்தைப் பயன்படுத்துகிறது. பேட்டரி வடிகால் பூஜ்ஜியத்திற்கு அருகில் குறைகிறது.
final config = Config.lowPower(
geo: tl.GeoConfig(
enableSparseUpdates: true,
sparseDistanceThreshold: 500.0, // Only trigger if they move 500m
sparseMaxIdleSeconds: 3600, // Or trigger once an hour even if they haven't moved
),
);6. நேரடி வழங்குநர் விருப்பங்கள் (இயக்க நேர மேலெழுதுதல்கள்)
சில சமயங்களில் SDKயால் செய்ய முடியாத ஒன்றை உங்கள் பயன்பாட்டிற்குத் தெரியும்: ஒரு டெலிவரி டிரைவர் 30 நிமிட இடைவெளியை எடுத்தார், ஒரு ரைடர் ஒரு மைதானத்திற்குள் காத்திருக்கிறார் அல்லது உங்கள் சொந்த ஸ்டேஷனரி ஹியூரிஸ்டிக்ஸ் நீக்கப்பட்டது. நீங்கள் GPS ஐ எளிதாக்க விரும்புகிறீர்கள் இப்போதே — மற்றும் விஷயங்கள் மாறும் தருணத்தில் முழுத் துல்லியத்திற்குத் திரும்பவும்.
இதுவரை setConfig() என்ற ஒரே குமிழ் இருந்தது. ஆனால் desiredAccuracy மற்றும் distanceFilter ஆகியவை கண்காணிப்புக்குத் தொடர்புடைய விசைகள், எனவே அவற்றை config மூலம் மாற்றுவது புதிய மதிப்புகளைத் தொடரும் மற்றும் சுத்தமான முழு-பைப்லைன் மறுதொடக்கம் - நிரந்தர உள்ளமைவுக்கு சரியானது, ஆனால் இது தவிர்க்கக்கூடிய கண்காணிப்பு இடைவெளியை உருவாக்குகிறது மற்றும் தற்காலிக சக்தி கொள்கையைப் பயன்படுத்துவதற்கு செயலி நிலையை மீண்டும் உருவாக்குகிறது. மோசமானது, மாற்றம் தொடர்ந்து இருப்பதால், “குறைந்த சக்தி” கட்டத்தில் ஒரு பயன்பாடு அழிக்கப்பட்டு மீண்டும் தொடங்கப்பட்டால், அது சீரழிந்த துல்லியத்தில் நிரந்தரமாக கண்காணிக்கப்படும்.
இது எப்படி வேலை செய்கிறது
Tracelet.updateLocationProviderOptions() ஆனது இயங்கும் OS இருப்பிட வழங்குநரைப் புதுப்பிக்கிறது - stop() இல்லை, start() இல்லை, சரிசெய்தல் ஸ்ட்ரீமில் இடைவெளி இல்லை:
- iOS புதிய மதிப்புகளை நேரலை
CLLocationManagerக்கு நேரடியாக ஒதுக்குகிறது (desiredAccuracy/distanceFilterசெயலில் உள்ள மேலாளரில் மாறக்கூடியது). - Android புதிய
LocationRequestமூலம் ஏற்கனவே இணைக்கப்பட்ட வழங்குநரின் அழைப்பை மீண்டும் சந்தா செலுத்துகிறது. அதே அழைப்பை மீண்டும் பதிவுசெய்வது கோரிக்கையை இடத்தில் *பதிலீடு செய்கிறது, எனவே சந்தா குறையாது. - இணையம் எந்த நேரலை வழங்குநர் கட்டுப்பாடுகள் மற்றும் எப்போதும்
falseதிரும்பும்.
மேலெழுதல் வேண்டுமென்றே இடைக்காலமானது மற்றும் வழங்குநருக்கு மட்டுமே:
- தொடர்ந்து இருக்கும்
Configமற்றும்Tracelet.activeConfigஆகியவை தொடப்படாது - சேமிப்பகத்திற்கு எதுவும் எழுதப்படவில்லை, எனவே செயல்முறை மறுதொடக்கம் எப்போதும் உங்கள் உண்மையான உள்ளமைவில் மீண்டும் வரும். - ரஸ்ட் ஏற்றுக்கொள்ளப்பட்ட-புள்ளி வடிகட்டி மற்றும் செயலி நிலை மாறாது: தொடர்ச்சி, ஓடோமீட்டர் மற்றும் வழங்கப்பட்ட புள்ளிகள் ஏற்றுக்கொள்ளப்பட்டவை அனைத்தும் உள்ளமைக்கப்பட்டதைப் போலவே செயல்படுகின்றன.
stop()ஐ அழைப்பது மீறல் தானாகவே அழிக்கப்படும்.
// Device confirmed stationary — drop Core Location to ~100m accuracy
// and only deliver a fix every 25 meters:
await Tracelet.updateLocationProviderOptions(
desiredAccuracy: DesiredAccuracy.medium,
distanceFilter: 25,
);
// Movement detected — restore the configured provider options.
// No arguments = clear the override:
await Tracelet.updateLocationProviderOptions();மதிப்பு மற்றும் சரிபார்ப்பு
லைவ் அப்டேட் பயன்படுத்தப்படும்போது, அழைப்பு trueஐயும், அது முடியாதபோது falseஐயும் வழங்கும் - இது ஒரு பின்னடைவாக பைப்லைனை மறுதொடக்கம் செய்யாது:
| சூழ்நிலை | முடிவு |
|---|---|
| தொடர்ச்சியான கண்காணிப்பு செயலில் (iOS / Android) | true — நேரலையில் பயன்படுத்தப்படும் விருப்பங்கள் |
கண்காணிப்பு தொடங்கப்படவில்லை அல்லது stop() என அழைக்கப்பட்டது | நோட்ரான்ஸ்1லேட் |
| கால கண்காணிப்பு பயன்முறை செயலில் | false — காலமுறை திருத்தங்கள் தங்கள் சொந்த கையகப்படுத்துதலை நிர்வகிக்கின்றன |
| வலை | false — நேரடி வழங்குநர் புதுப்பிப்புகள் இல்லை |
distanceFilter கண்டிப்பாக வரையறுக்கப்பட்டதாகவும் எதிர்மறையானதாகவும் இருக்க வேண்டும் (ஒரு RangeError இல்லையெனில் வீசப்படும்). 0 இன் மதிப்பு வழங்குநர் உருவாக்கும் ஒவ்வொரு திருத்தத்தையும் கோருகிறது (iOS இல் kCLDistanceFilterNone).
இயக்க நேர மேலெழுதல் எதிராக அடாப்டிவ் பயன்முறை — enableAdaptiveMode (பிரிவு 4) என்பது இதன் தானியங்கு பதிப்பாகும்: SDK ஆனது பேட்டரியைப் பார்த்து உங்களுக்காக தரமிறக்குகிறது. கொள்கையானது உங்களுடையது - நிலையான கண்டறிதல், ஷிப்ட் பிரேக்குகள், ஜியோஃபென்ஸ் ட்வெல், பிரத்தியேக பேட்டரி வரம்புகள் என இருக்கும்போது updateLocationProviderOptions() ஐப் பயன்படுத்தவும்.