Skip to content

StopFinder-Request

Finde Haltestellen, Adressen oder POIs anhand eines Suchbegriffs oder Koordinaten. Die Antwort erfolgt im JSON-Format.

Endpoint

  • Pfad: XML_STOPFINDER_REQUEST
  • Methode: GET

TIP

Die Base-URL hängt von Ihrer Installation ab, z. B. https://server:port/virtuellesVerzeichnis/.

Wichtige Parameter (Auszug)

ParameterTypBeschreibung
namestringSuchbegriff (Haltestelle, Adresse, POI)
typestringSuchtyp, z. B. stop, poi, address, any
coordstringKoordinaten als lat,lon zur Umgebungssuche
radiusnumberSuchradius in Metern
maxnumberMaximale Trefferanzahl
formatstringKoordinatenformat, z. B. WGS84

NOTE

Die exakten Parameternamen können je nach Systemkonfiguration abweichen (siehe PDF). Nutzen Sie die Beispiele als Vorlage und passen Sie die Keys an.

Beispiel-Requests

GET /XML_STOPFINDER_REQUEST?name=Essen%20Hbf&type=stop&max=10
GET /XML_STOPFINDER_REQUEST?coord=51.4501,7.0131&radius=500&type=any&max=20

Antwort (vereinfachtes Beispiel)

json
{
  "stops": [
    { "id": "de:05513:1001", "name": "Essen Hbf", "coord": { "lat": 51.4513, "lon": 7.0128 } }
  ],
  "query": { "name": "Essen Hbf", "type": "stop" }
}

JavaScript-Beispiele

js
const baseUrl = 'https://server:port/virtuellesVerzeichnis/XML_STOPFINDER_REQUEST'

async function searchStopsByName(name, options = {}) {
  const params = new URLSearchParams({
    name,
    type: options.type ?? 'stop',
    max: String(options.max ?? 10)
  })

  const res = await fetch(`${baseUrl}?${params}`)
  if (!res.ok) throw new Error(`HTTP ${res.status}`)
  return res.json()
}

searchStopsByName('Essen Hbf').then(console.log)
ts
import axios from 'axios'

const baseUrl = 'https://server:port/virtuellesVerzeichnis/XML_STOPFINDER_REQUEST'

export async function searchNearby(lat: number, lon: number, radius = 500) {
  const params = new URLSearchParams({
    coord: `${lat},${lon}`,
    radius: String(radius),
    type: 'any',
    max: '20'
  })
  const { data } = await axios.get(`${baseUrl}?${params}`)
  return data
}
js
const baseUrl = 'https://server:port/virtuellesVerzeichnis/XML_STOPFINDER_REQUEST'

async function withTimeout(ms = 5000) {
  const ctrl = new AbortController()
  const t = setTimeout(() => ctrl.abort(), ms)
  try {
    const res = await fetch(`${baseUrl}?name=Essen&type=stop`, { signal: ctrl.signal })
    clearTimeout(t)
    return res.json()
  } catch (e) {
    if (e.name === 'AbortError') throw new Error('Request timeout')
    throw e
  }
}

Best Practices

  • Immer max begrenzen, um Datenmengen zu kontrollieren.
  • Für Koordinatenabfragen sinnvollen radius wählen.
  • Cachen Sie Suchergebnisse clientseitig (debounce bei Eingabe-Suche).