Sākums/Ceļveži/Izstrādātāji
Izstrādātāji

Velosipēdu pieejamība reālajā laikā: kā to parādīt lietotnē?

Parādiet velosipēdu pieejamību ar ROOTE API: laika zīmogi, datu svaigums, nezināmas vērtības, atsvaidzināšana un novecojuši dati jūsu lietotnē.

By ROOTE·7 min lasīšanas
Velosipēdu pieejamība reālajā laikā: kā to parādīt lietotnē?
Novērota pieejamība ar tās kontekstu.

Svarīgākais dažās sekundēs

Rādiet pieejamo daudzumu ar tā svaiguma statusu, laika zīmogu un velosipēda saņemšanas nosacījumiem. Nezināma vērtība paliek nezināma; novecojusi novērošana nekļūst par reālās laika datu avotu tikai tāpēc, ka jūsu lietotne to tikko saņēmusi.

Lai lietotnē parādītu velosipēdu pieejamību reālajā laikā, saistiet saņemto skaitu ar tā svaigumu un transportlīdzekļa saņemšanas iespējām. Novērojums apraksta, ko avots zināja konkrētā brīdī; tas negarantē, ka velosipēds joprojām būs pieejams ierašanās brīdī.

ROOTE mobilitātes līgums atšķir stacijas, atsevišķus transportlīdzekļus un to statusus. Saskarnei jāatspoguļo šīs atšķirības, nesajaucot nezināmu vērtību, tukšu staciju un pagaidu nepieejamu avotu.

Atšķirt staciju no atsevišķa transportlīdzekļa

Stacija var parādīt velosipēdu un atgriešanas vietu skaitītājus. Atsevišķam transportlīdzeklim ir pieejamības statuss un citi iespējamie dati. Izvairieties no stacijas skaitīšanas kā velosipēda vai tādu pašu krājumu skaitītāju summēšanas.

ROOTE mobilitātes DTO lauki availability.bikes un availability.docks var būt nezināmi. Propulcijas vai baterijas lauki jāparāda tikai tad, ja tie pastāv un tiek interpretēti saskaņā ar līgumu.

ROOTE OpenAPI līgums

Lasīt svaigumu un laika zīmogus

LauksInterpretācija
freshness.statePaziņotais statuss: fresh (svaigs), stale (novecojis), unknown (nezināms) vai static (statiskums)
freshness.source_updated_atAvota atjaunināšanas datums, ja zināms
freshness.received_atSaņemšanas datums, ko norāda līgums
freshness.expires_atNorādītais derīguma termiņš, ja zināms
availability.bikesZināmais daudzums vai nezināma vērtība
pickup.enabled un pickup.stateInformācija par velosipēda saņemšanu stacijā

Jūsu zvana laiks nav automātiski novērojuma laiks. Rezultāts, kas saņemts plkst. 10:00, var saturēt avotu atjaunotu plkst. 9:45. Nerādiet “atjaunināts tagad” tikai pamatojoties uz saskarnes saņemšanas laiku.

Paredzēt atšķirīgus displeja statusus

Saņemtie datiParedzamais attēlojums
Zināms daudzums un svaigi datiNovērots daudzums un laika indikācija
Daudzums ir nulleNeviens velosipēds nav novērots, ar tā laika kontekstu
Daudzums nullPieejamība nav zināma
Statuss stale vai beidzies derīgumsVeci dati; ieteicams atjaunot
pickup.enabled=falseSaņemšana nav pieejama, pat ja skaitītājs ir pozitīvs
Meklēšanas kļūdaPieejamība ir īslaicīgi nepieejama, bez pārvēršanas uz nulli

Neuzskatiet statusu unknown vai static par svaigu. Stacijas informācija var būt stabila, kamēr skaitītājs mainās ātri. Saglabājiet arī brīdinājumus un pieprasītās atzīmes atbildē.

Normalizācijas piemērs pirms attēlošanas

Šī funkcija rada attēlojuma statusu no jau validētas stacijas pret ROOTE shēmu. Tā nav pilnīgs atbildes validētājs. Redzamie nosaukumi jāņem no jūsu saskarnes tulkojumu atslēgām.

function availabilityView(station, now = Date.now()) {
  const freshness = station.freshness;
  const expiresAt = freshness.expires_at
    ? Date.parse(freshness.expires_at) : null;
  const expired = expiresAt !== null &&
    Number.isFinite(expiresAt) && expiresAt <= now;
  if (station.pickup.enabled === false ||
      station.pickup.state === 'unavailable_now') {
    return { state: 'pickup_unavailable', count: null };
  }
  if (expired || freshness.state === 'stale') {
    return { state: 'stale', count: null };
  }
  const count = station.availability.bikes;
  if (freshness.state !== 'fresh' || count === null ||
      !Number.isFinite(count) || count < 0) {
    return { state: 'unknown', count: null };
  }
  return {
    state: count === 0 ? 'empty' : 'observed', count,
    sourceUpdatedAt: freshness.source_updated_at,
    receivedAt: freshness.received_at,
    pickupState: station.pickup.state
  };
}

Pat ar statusu observed nepārvērtiet pickupState=unknown par apstiprinātu saņemšanu. Skaitītājs paliek novērojums. Parādiet saņemšanas kontekstu, ja jūsu produkts palīdz lietotājam izvēlēties staciju.

Atsvaidzināt bez nevajadzīgas zvanu palielināšanas

Pielāgojiet atsvaidzināšanu pēc publicētā derīguma termiņa, pakalpojuma nosacījumiem un lietotāja uzvedības. Grupējiet identiskus pieprasījumus, izvairieties no fona zvaniem neaktīvā lapā un atceliet aizvietotus meklējumus.

Vietējais kešatmiņas termiņš nepierāda avota svaigumu. Pēc kļūdas varat saglabāt pēdējo datēto novērojumu, ja jūsu saskarne to skaidri rāda kā novecojušu. Nepārdzēsiet šo atšķirību pirmajā veiksmīgajā atjaunošanā, ja avots paliek stale.

Saprast saikni ar GBFS

GBFS apraksta koplietojamos mobilitātes pakalpojumus un to izziņotos statusus. Tieša integrācija jāinterpretē failus, versiju un datplūsmas laika zīmogus. Ar standartizētu API izmantojiet API līgumu; nepievienojiet GBFS lauku, kas nav paredzēts atbildē.

Izvēle starp GTFS, GTFS Realtime un GBFS

Testēt situācijas, kas var maldināt lietotāju

Testējiet īstu nulli, nezināmu vērtību, beigušos derīgumu, deaktivizētu saņemšanu un kļūdu pēc derīga rezultāta. Pārbaudiet arī laika joslu attēlošanu. Pozitīvs skaitītājs nekad nedrīkst radīt “rezervētu velosipēdu”, un nepieejamība nekad nerada izdomātu nulli.

Apstrādāt tukšas atbildes un kļūdas

Piemērot šīs vadlīnijas mākslīgā intelekta palīgprogrammā

Lietotāja ceļvedis velosipēda atrašanai

IzstrādātājiemROOTE mobilitātes API

Mobilitāte ap vienu punktu.
Tieši jūsu lietotnē.

  • Meklēt
    ap jūsu atrašanās vietu
  • Piekļūt
    mobilitātes datiem
  • Iebūvēt
    savā lietotnē

No kartes pie datiem: ar ROOTE API meklējiet mobilitātes un pakalpojumus tuvumā.

Bieži uzdotie jautājumi

Vai pozitīvs daudzums garantē velosipēdu ierašanās brīdī?

Nē. Tas apraksta novērojumu, kas var mainīties starp meklēšanu un jūsu ierašanos.

Vai null var aizvietot ar nulli (0)?

Nē. Null norāda nezināmu vērtību; nulle ir zināms daudzums ar citu nozīmi.

Vai vajag atsvaidzināt ik pēc dažām sekundēm?

Izmantojiet derīguma, pakalpojuma ierobežojumu un lietotnes vajadzību norādes. Patvaļīga frekvence negarantē svaigākus avotus.

Vai negribētu palūkoties apkārt?

Izpētiet apkārtni ar ROOTE un atrodiet pieejamo informāciju, lai plānotu pārvietošanos.

Izpētīt ROOTE karti ↗