# Nola bilatu garraio geltokiak gertuan API batekin?

> Ezagutu ROOTE APIarekin gertuko geltokiak bilatzeko modua: koordinatuak, erradioa, JavaScript adibidea, emaitzen irakurketa eta akatsen kudeaketa.

Source: https://www.roote.ai/eu/guides/nola-bilatu-gertu-dauden-garraio-geltokiak-api-bat-eredu/
Language: eu
Author: ROOTE

Puntu baten inguruko geltokiak bilatzeko, bidali bere latitudea, longitudea eta erradio bat gertuko API bati. Ondoren egiaztatu erantzunaren egoera, itzuli diren entitateak eta estaldura informazioa, eta erakutsi gero zerrenda edo mapa.

ROOTE roote-1.0.0 kontratuan, GET /v1/transit/nearby bidea gertuko garraio lekuak aurkitzen ditu. Ez du denbora errealean irteerak edo alerta-sistema jasotzen. Leku baten bilaketa eta hurrengo pasaketa bilatzea bi operazio desberdin dira.

## Parametroak zehaztu

Eskaerak lat erabiltzen du latitudearentzat eta lng longitudearentzat. Lon izeneko alias bat ere deskribatzen da kontratuan. Radius parametroak erradioa adierazten du metrotan; limit mugatzen du eskatutako emaitza kopurua. modes iragazkiak garraio moduak zehazten ditu.

| Parametroa | Adibidea | Azalpena |
| --- | --- | --- |
| lat | 44.8378 | Bilaketa puntuko latitudea |
| lng | -0.5792 | Bilaketa puntuko longitudea |
| radius | 600 | Eskaerako erradioa metrotan |
| limit | 10 | Eskaerako emaitza mugatua |
| modes | bus,tram | Bilatu nahi diren moduak |

Koordenatu hauek Bordeauxko bilaketarako adibide bat dira; ez dute bermatzen geltoki bat. Begiratu [ROOTE OpenAPI kontratua](https://api.roote.ai/openapi.json) mugak, eremuak eta baldintzak eguneratuta.

## Lehen eskaera bidali zerbitzari aldetik

Hona hemen Node.js ingurune batean fetch erabilita JavaScript adibide bat. Token-a, zure sarbideak badu bat, ingurune aldagaian gordetzen da zerbitzari aldean. Adibide honek ez du sekreturik nabigatzailean txertatzea behar.

```
async function rechercherArrets(token = process.env.ROOTE_API_TOKEN) {
  const url = new URL('https://api.roote.ai/v1/transit/nearby');
  url.search = new URLSearchParams({
    lat: '44.8378',
    lng: '-0.5792',
    radius: '600',
    limit: '10',
    modes: 'bus,tram'
  }).toString();

  const headers = { Accept: 'application/json' };
  if (token) headers.Authorization = `Bearer ${token}`;

  const response = await fetch(url, {
    headers,
    signal: AbortSignal.timeout(10000)
  });
  if (!response.ok) {
    throw new Error(`Erreur HTTP ${response.status}`);
  }

  const data = await response.json();
  if (data.contract_version !== 'roote-1.0.0') {
    throw new Error('Version du contrat non reconnue');
  }
  if (!['success', 'empty', 'partial'].includes(data.status)) {
    throw new Error('Recherche indisponible');
  }
  if (!Array.isArray(data.stations)) {
    throw new Error('Réponse sans collection stations valide');
  }

  return {
    status: data.status,
    stations: data.stations,
    lines: data.lines,
    operators: data.operators,
    coverage: data.coverage,
    warnings: data.warnings,
    attributions: data.attributions,
    meta: data.meta
  };
}
```

Kontsultatuta dagoen kontratuek sarbide anonimoa edo token bidezkoa ahalbidetzen dute, aplikagarri diren politikaren arabera. Egiaztatu zure eskubideak eta sarbide mugak. HTTP erantzun zuzena jasotzeak ez du edukia baliozkotu behar ezabatzen; produkzioan, objektu malakaren arabera ere balidatu.

## Entitateak eta haien loturak irakurri

stations bildumak itzuli diren lekuak ditu. Horietako bakoitzerako kontsultatu bereziki id, name, entity_kind, location eta distance_meters. line_ids eta operator_ids erreferentziak lines eta operators bildumekin lotzeko balio dute, informazioa badagoenean.

Erakutsi distantzia geografikoa hala nola. Ez bihurtu oinezko denbora itzulingururik egin gabe. Gida [gertu dagoen geltoki bat aurkitu](https://www.roote.ai/eu/guides/nonbai-geltoki-hurbilena-nola-aurkitu/) azaltzen du zergatik atzipenak mugimendu errealari eragin diezaiokeen.

Trata ezazu baita ere informazio ezezaguna modu argian. Kontratuan, accessibility.wheelchair balioak unknown izan dezake; hau ez da bai edo ez berdina. Irteera ahalmenak jakinarazitakoa ez da irteera zerrenda.

## Zerrenda edo mapan erakutsi

Identifikadorea erabili interfazeko elementuak finkatzeko, izena etiketan eta location posizioarentzako. Lotu lerroak erreferentziekin, baino ez izenak gerturatu gabe.

Lerro koloreak edo datuetatik datozen etiketa batzuk erakusten badituzu, kanpoko sarrera moduan balidatu. Izenetarako testua erabili, HTML zuzenean sartu beharrean.

Iturriaren atzipenak mantendu eta kontratuak behar bezala adierazten dituenak erakutsi.

## Emaitza hutsak, erantzun partzialak eta akatsak kudeatu

empty egoerak ez du emaitzarik gertuko eremuan. Ez du garraiobide fisikorik ez dagoela frogatzen. partial erantzunak leku erabilgarriak izan ditzake eta mugak adierazi; erakutsi emaitzak eta oharkabeak.

Irakurri coverage, warnings eta meta barneko mugak. Zerrenda mugatua ez da estaldura osoa. Sare edo HTTP akatsetan, erakutsi erabilgarritasun falta, baina ez ordezkatu emaitza "geltokiik ez" esatearekin.

429 kodea jasotzen baduzu, jarraitu berriro saiatzeko jarraibideak eta zerbitzuaren goiburu posibleak. Ekintza kateatuak saihestu.

## Bereizi geltokiak, eremuak eta andelak

entity_kind eremua lekuen maila anitz bereizten du. Bi emaitza gertuenak andel desberdinak izan daitezke; izen antzekoak iturri desberdinetakoa izan.

Ez elkartu tokiak automatikoki gertutasunaren arabera bakarrik. Erabili zerbitzuak dokumentatutako loturak eta identitateak. Gure gida [GTFS, GTFS-RT eta GBFS](https://www.roote.ai/eu/guides/gtfs-gtfs-rt-eta-gbfs-zer-diferentziak/) datuen testuingurua azaltzen du.

## Prestatu produkzio integrazioa

Bilaketak abiarazi posizioa edo iragazkiak baliagarri aldatzen direnean. Taldeatu deialdi berdinak, ezarri denbora muga eta egokitu cachea datu motaren eta zerbitzuaren baldintzen arabera.

Leku zerrenda batek eta denbora errealean erabilgarritasunak ez dute freskotasun berbera eskatzen. Balidatu ibilbidea erantzun osatu, huts, partzial eta akatsak jasotzen direla ziurtatuta erabiltzailearen aurretik.

## Bilaketa zerbitzu urbanoetara zabaldu

Geltoki eta zerbitzu urbanoek ibilbide bereiziak erabiltzen dituzte. Komun publikoak puntu berean bilatu nahi badituzu, GET /v1/services/nearby ibilbideak lat eta lon behar ditu, junto con types=toilets. Ez bidali modes=toilets ibilbide horretan: hiztegi hori maparen URL-ari dagokio, ez Zerbitzuen filtroari.

Ondorengo JavaScript adibideak 600 metroko erradioa duen Zerbitzuen URL bat sortzen du. Ez du eskaerarik abiarazten; berrerabili goian deskribatutako HTTP eta kontratu kontrolak. Hartutako bilduma services izango da, stations ordez. Gorde service_type, location, distance_meters eta benetan dauden atributuak.

REST kontratuak, besteak beste, dokumentatzen ditu toilets, drinking_water, fountain, wifi, parking, charging, aed eta locker. MCPk agerian uzten dituen motak desberdinak izan daitezke. Onartutako parametroak, mugak eta zure sarbide murrizketak ezagutzeko, erabili erabilitako interfazearen eskema.

Zerbitzu baten atributuek ez dute bilaketa momentuan irekita dagoela bermatzen. Ezagutzen ez den irisgarritasuna ez da zerbitzu ezezaguna; errore batzuetatik lortutako zerrenda hutsak ez du komunik eza frogatzen. Gorde datuak familiaren arabera isolatuta, izena eta puntu batean murriztu gabe.

Mapa konbinatu baterako, lotu emaitzak haien familia eta identifikatzaileekin. Erakutsi Zerbitzuen errorea Transit-ek itzuli dizkion geltokiak ez ezabatuz. Bilaketa puntu berean jarraitzen du, baina egoera eta estaldurak desberdinak izan daitezke.

```
const url = new URL('https://api.roote.ai/v1/services/nearby');
url.search = new URLSearchParams({
  lat: '44.8416106', lon: '-0.5810938',
  radius: '600', limit: '10', types: 'toilets'
}).toString();
console.log(url.toString());
```

[Bilaketa huts edo errore baten diagnostikoa](https://www.roote.ai/eu/guides/emailema-txikia-edo-api-akatsa-nola-berdintzen/)

[Filtratuta dagoen mapa bat zuzenean gune batean integratu](https://www.roote.ai/eu/guides/nola-integratu-mugikortasun-mapa-sakon-sarean/)

[Bilaketa hauek erabiliz laguntzailea eraiki](https://www.roote.ai/eu/guides/nola-sortu-mugikortasun-laguntzaile-helbide-inguruan/)

## Ohiko galderak

### Nearby-k hurrengo irteerak ematen ditu?

Ez da kontratuan jasotzen hemen. Bidaia lekua aurkitzen du; irteerak beste gaitasun bat eskatzen du.

### Ondorio hutsak agerian jar daitezke akatsaren ondoren?

Erakutsi erabilgarritasun falta. Akats batek ez du drofaren faltarik frogatzen.

### API tokena nabigatzailean kokatu daiteke?

Sekretua zerbitzari aldean geratu behar du. Erabili aplikazioaren eta kontuaren sarrera eredua.
