വിപുലമായ ജിയോലൊക്കേഷൻ
ട്രേസ്ലെറ്റ് ഒരു പശ്ചാത്തല ലൊക്കേഷൻ റാപ്പർ മാത്രമല്ല. മൊബൈൽ ജിയോലൊക്കേഷനിലെ ഏറ്റവും ബുദ്ധിമുട്ടുള്ള പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ പ്രത്യേകം രൂപകൽപ്പന ചെയ്തിരിക്കുന്ന വിപുലമായ അൽഗരിതങ്ങളുടെ ഒരു സ്യൂട്ട് ഇതിൽ അടങ്ങിയിരിക്കുന്നു: ജിപിഎസ് വിറയൽ, ടണൽ ബ്ലാക്ക്ഔട്ടുകൾ, ഉയർന്ന വേഗതയിൽ ബാറ്ററി ചോർച്ച.
1. കൽമാൻ ഫിൽട്ടർ (ട്രാജക്ടറി സുഗമമാക്കൽ)
അസംസ്കൃത ജിപിഎസ് ഡാറ്റ അന്തർലീനമായി ശബ്ദമുണ്ടാക്കുന്നതാണ്. ഒരു ഉപയോക്താവ് നേരായ റോഡിലൂടെ നടക്കുകയാണെങ്കിൽ, അസംസ്കൃത കോർഡിനേറ്റുകൾ ഇടത്തോട്ടും വലത്തോട്ടും ക്രമരഹിതമായി ചാടുകയും “മുല്ലയുള്ള” ലൈൻ സൃഷ്ടിക്കുകയും ചെയ്യും. ഈ ജഗ്ഗ്ഡ് ലൈനിൻ്റെ ദൂരം നിങ്ങൾ കണക്കാക്കുകയാണെങ്കിൽ, അത് ഉപയോക്താവിൻ്റെ മൊത്തം ദൂരത്തെ 20% വരെ കൃത്രിമമായി വർദ്ധിപ്പിക്കും.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു
useKalmanFilter: true സജ്ജീകരിക്കുന്നതിലൂടെ, ബഹിരാകാശവാഹന നാവിഗേഷനായി ആദ്യം വികസിപ്പിച്ചെടുത്ത ഒരു നൂതന ഗണിത അൽഗോരിതം ട്രേസ്ലെറ്റ് പ്രയോഗിക്കുന്നു. ഉപയോക്താവ് യഥാർത്ഥത്തിൽ എവിടെയാണെന്ന് പ്രവചിക്കാൻ ഉപകരണത്തിൻ്റെ വേഗതയും (വേഗതയും തലക്കെട്ടും) നിലവിലെ ജിപിഎസ് സ്ഥാനത്തെ ഇത് സംയോജിപ്പിക്കുന്നു, ഫലപ്രദമായി ശബ്ദം സുഗമമാക്കുകയും മികച്ചതും വളഞ്ഞതുമായ ഒരു രേഖ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.
final config = Config.highAccuracy(
geo: tl.GeoConfig(
filter: tl.LocationFilter(
useKalmanFilter: true, // Enable trajectory smoothing
trackingAccuracyThreshold: 50,
),
),
);2. ഡെഡ് റെക്കണിംഗ് (തുരങ്കങ്ങളും GPS നിരസിച്ചു)
ഒരു ഉപയോക്താവ് ഒരു നീണ്ട തുരങ്കത്തിലേക്കോ ഒരു ഭൂഗർഭ പാർക്കിംഗ് ഗാരേജിലേക്കോ ഡ്രൈവ് ചെയ്യുമ്പോൾ, അവർക്ക് GPS ഉപഗ്രഹങ്ങളുമായുള്ള ബന്ധം നഷ്ടപ്പെടും. പരമ്പരാഗത ട്രാക്കറുകൾ യഥാർത്ഥ ഭൂഗർഭ റൂട്ട് ഒഴിവാക്കിക്കൊണ്ട് തുരങ്കത്തിൻ്റെ പ്രവേശന കവാടത്തിൽ നിന്ന് പുറത്തുകടക്കുന്നതിന് ഒരു നേർരേഖ വരയ്ക്കും.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു
enableDeadReckoning: true സജ്ജീകരിക്കുന്നതിലൂടെ, GPS നഷ്ടപ്പെടുമ്പോൾ ട്രാക്ക്ലെറ്റ് കണ്ടെത്തുകയും ഉപകരണത്തിൻ്റെ ആന്തരിക IMU (ഇനർഷ്യൽ മെഷർമെൻ്റ് യൂണിറ്റ്) ലേക്ക് തൽക്ഷണം മാറുകയും ചെയ്യുന്നു. പൂർണ്ണമായി ഭൂമിക്കടിയിലായിരിക്കുമ്പോഴും 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 മീറ്ററിലും Tracelet ഉണരും. ഉപയോക്താവ് നേരായ ഹൈവേയിലൂടെ മണിക്കൂറിൽ 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-കൾ നിരന്തരം നിരീക്ഷിക്കുന്നു. ബാറ്ററി നിർണ്ണായക പരിധികൾക്ക് താഴെയായി (ഉദാ. 20%, 10%), Tracelet സ്വയമേവ desiredAccuracy-നെ GPS-ൽ നിന്ന് Wi-Fi/സെല്ലുലാറിലേക്ക് തരംതാഴ്ത്തുന്നു, കൂടാതെ distanceFilter വിപുലീകരിക്കുകയും ഫോൺ സജീവമായി നിലനിർത്താൻ ആവശ്യമായ ഊർജ്ജം സംരക്ഷിക്കുകയും ചെയ്യുന്നു.
final config = Config.balanced(
geo: tl.GeoConfig(
enableAdaptiveMode: true,
),
);5. വിരളമായ അപ്ഡേറ്റുകൾ (സെൽ-ടവർ മാത്രം)
ചിലപ്പോൾ നിങ്ങൾക്ക് ടേൺ-ബൈ-ടേൺ നാവിഗേഷൻ കൃത്യത ആവശ്യമില്ല; ഉപയോക്താവ് ഏത് നഗരത്തിലോ അയൽപക്കത്തിലോ ആണെന്ന് നിങ്ങൾക്ക് ഏകദേശം അറിയേണ്ടതുണ്ട് (ഉദാ. ഒരു സോഷ്യൽ നെറ്റ്വർക്കിംഗ് ആപ്പ് അല്ലെങ്കിൽ കാലാവസ്ഥ ആപ്പ്).
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു
enableSparseUpdates പ്രവർത്തനക്ഷമമാക്കുന്നതിലൂടെ, ട്രെയ്സ്ലെറ്റ് പവർ-ഹാൻറി ജിപിഎസ് ചിപ്പിനെ പൂർണ്ണമായും മറികടക്കുന്നു. ലൊക്കേഷൻ അപ്ഡേറ്റ് ചെയ്യുന്നതിന് ഇത് സെൽ-ടവർ ഹാൻഡ്ഓഫുകളും വൈഫൈ ട്രയാംഗുലേഷനും മാത്രം ഉപയോഗിക്കുന്നു. ബാറ്ററി ചോർച്ച പൂജ്യത്തിനടുത്തായി കുറയുന്നു.
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 മിനിറ്റ് ഇടവേള എടുക്കുന്നു, ഒരു റൈഡർ ഒരു വേദിക്കുള്ളിൽ കാത്തിരിക്കുന്നു, അല്ലെങ്കിൽ നിങ്ങളുടെ സ്വന്തം സ്റ്റേഷണറി ഹ്യൂറിസ്റ്റിക്സ് ഫയർ ചെയ്തു. നിങ്ങൾക്ക് ജിപിഎസ് ഇപ്പോൾ എളുപ്പമാക്കണം - കാര്യങ്ങൾ മാറുന്ന നിമിഷത്തിൽ പൂർണ്ണ കൃത്യതയിലേക്ക് മടങ്ങുക.
ഇതുവരെ setConfig() മാത്രമായിരുന്നു നോബ്. എന്നാൽ desiredAccuracy ഉം distanceFilter ഉം ട്രാക്കിംഗ്-പ്രസക്തമായ കീകളാണ്, അതിനാൽ കോൺഫിഗറിലൂടെ അവ മാറ്റുന്നത് പുതിയ മൂല്യങ്ങൾ നിലനിൽക്കുകയും ശുദ്ധമായ പൂർണ്ണ പൈപ്പ്ലൈൻ പുനരാരംഭിക്കുകയും ചെയ്യുന്നു — സ്ഥിരമായ കോൺഫിഗറേഷന് ശരിയാണ്, എന്നാൽ ഇത് ഒഴിവാക്കാവുന്ന ട്രാക്കിംഗ് വിടവ് സൃഷ്ടിക്കുകയും ഒരു താൽക്കാലിക പവർ പോളിസി പ്രയോഗിക്കുന്നതിനായി പ്രോസസർ നില പുനർനിർമ്മിക്കുകയും ചെയ്യുന്നു. ഏറ്റവും മോശമായ കാര്യം, മാറ്റം നിലനിൽക്കുന്നതിനാൽ, “ലോ പവർ” ഘട്ടത്തിൽ ഒരു ആപ്പ് നശിപ്പിക്കപ്പെടുകയും വീണ്ടും സമാരംഭിക്കുകയും ചെയ്താൽ, അത് ശാശ്വതമായി ട്രാക്ക് ചെയ്യപ്പെടും.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു
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() ഉപയോഗിക്കുക - സ്റ്റേഷണറി ഡിറ്റക്ഷൻ, ഷിഫ്റ്റ് ബ്രേക്കുകൾ, ജിയോഫെൻസ് താമസം, ഇഷ്ടാനുസൃത ബാറ്ററി ത്രെഷോൾഡുകൾ - ഒന്നും തുടരുകയോ ട്രാക്കിന് തടസ്സം സൃഷ്ടിക്കുകയോ ചെയ്യാതെ നിങ്ങൾക്ക് ഇത് തൽക്ഷണം പ്രയോഗിക്കേണ്ടതുണ്ട്.