CoordInfo-Request
Räumliche Abfrage nach Objekten in einer Umgebung — Halte, POIs, Parkobjekte, Sharing-Fahrzeuge, GIS-Flächen. Zwei Suchmodi: kreisförmig um eine Koordinate oder in einer Bounding-Box. Zusätzlich Detail-Abruf für einzelne Sharing-Fahrzeuge.
Endpoint
- Pfad:
XML_COORD_REQUEST - Methode: GET
Obligatorische Parameter
Suchraum (mindestens eine Variante)
Kreisförmige Suche:
| Parameter | Format | Beschreibung |
|---|---|---|
coord | <x>:<y>:WGS84[dd.ddddd] | Mittelpunkt |
Bounding-Box-Suche:
| Parameter | Format | Beschreibung |
|---|---|---|
boundingBox | (Flag ohne Wert) | Box-Modus aktivieren |
boundingBoxLU | <x>:<y>:WGS84[dd.ddddd] | Linke obere Ecke |
boundingBoxRL | <x>:<y>:WGS84[dd.ddddd] | Rechte untere Ecke |
Objekttyp-Filter (mindestens einer)
| Parameter | Werte | Beschreibung |
|---|---|---|
inclFilter | 1 | Filterschema aktivieren |
type_<FilterIndex> | ANY | BUS_POINT | ENTRANCE | GIS_AREA | GIS_POINT | INFRASTRUCTURE | LINE | POI_AREA | POI_POINT | STOP | STREET | Objekttyp pro Filterblock — siehe Objekttypen |
<FilterIndex> ist eine fortlaufende Ganzzahl; pro Filterblock lassen sich radius_<i>, exclMOT_<i>, etc. ergänzen.
Optionale Parameter
Suchraum-Feintuning
| Parameter | Format | Beschreibung |
|---|---|---|
radius_<FilterIndex> | Meter | Radius je Filterblock (nur Kreis-Suche) |
max | Ganzzahl | Maximale Treffer (Default: unbegrenzt) |
deadline | YYYYMMDD | Bezugsdatum für Objektgültigkeit (Default: heute) |
mapNameOutput | Koordinatensystem | Ausgabe-Koordinatensystem (meist WGS84[dd.ddddd]) |
Halte-Filter
| Parameter | Format | Beschreibung |
|---|---|---|
exclMOT_<FilterIndex> | MOT-IDs, :-separiert | Halte bestimmter Verkehrsmittel ausschließen |
inclMOT_<FilterIndex> | MOT-IDs, :-separiert | Nur Halte bestimmter Verkehrsmittel |
fltrParkObj | 1 | Nur Halte innerhalb markierter Parkzonen |
POI-Filter
| Parameter | Format | Beschreibung |
|---|---|---|
exclLayers_<FilterIndex> | GIS-Layer-Namen, :-separiert | Layer ausschließen |
inclDrawClasses_<FilterIndex> | Draw-Class-IDs, :-separiert | Nur bestimmte Zeichenklassen |
purpose | Ganzzahl | POI nach Zweck filtern |
inclPOIH_<FilterIndex> | Hierarchie-IDs, :-separiert | POI-Hierarchien einschließen |
Parking-Filter
| Parameter | Werte | Beschreibung |
|---|---|---|
parkingSearchMethod | BB | Bounding-Box-Suche für Parkobjekte |
parkingBB | 1 | Parking-BB aktivieren |
parkingBBLU, parkingBBRL | <x>:<y>:WGS84[dd.ddddd] | Ecken der Parking-BB |
parkingObjectType | Bitmaske: -1=alle, 1=Parkhaus, 2=Parkplatz, 4=Einzelplatz, 8=Zone, 32=Ladesäulen | Art der Parkobjekte |
parkingCharge | free | pay | Kostenfilter |
parkingBikeRideInclusion | INCLUDE | EXCLUDE | EXCLUSIVE | B&R-Objekte |
parkingParkRideInclusion | INCLUDE | EXCLUDE | EXCLUSIVE | P&R-Objekte |
parkObjInfo | 1 | Parkobjekt-Details mit ausgeben |
parkObjInfoRealtime | 1 | Echtzeit-Auslastung (setzt parkObjInfo=1 voraus) |
Sharing-Vehicle-Detail-Modus
Einzelnes Sharing-Fahrzeug im Detail abfragen:
| Parameter | Werte | Beschreibung |
|---|---|---|
coordReqType | VEHICLEDETAIL | Detail-Modus aktivieren |
vehDetail | 1 | Detail-Ausgabe aktivieren |
vehSM | ID | Suchmodus: Einzelfahrzeug über ID |
SharingRefId | <ID>:<OperatorID>:<OpAreaID> | Fahrzeug-Kennung (:-separiert) |
vehAtStation | 1 | Auch an Stationen stehende Fahrzeuge |
vehSpec | 1 | Technische Spezifikation ausgeben |
vehAvail | 1 | Verfügbarkeit ausgeben |
vehEngineType | COMBUSTION | ELECTRIC | HYBRID | Antriebsart-Filter (wiederholbar) |
vehLocType<Index> | CLASSIC | FREEFLOATER | STATION | POSITION | Verortungs-Typ-Filter (wiederholbar) |
vehSF | CAR | BIKE | MINIVEHICLE | TAXI | Fahrzeugart-Filter (wiederholbar) |
Beispiel-Requests
Halte und POIs im Umkreis von 400 m, max. 50 Treffer:
GET /XML_COORD_REQUEST
?outputFormat=JSON
&coord=7.0128:51.4513:WGS84[dd.ddddd]
&inclFilter=1
&type_0=STOP&radius_0=400
&type_1=POI_POINT&radius_1=400
&max=50P&R-Parkobjekte in einer Bounding-Box, mit Echtzeit:
GET /XML_COORD_REQUEST
?outputFormat=JSON
&boundingBox
&boundingBoxLU=6.9:51.5:WGS84[dd.ddddd]
&boundingBoxRL=7.1:51.4:WGS84[dd.ddddd]
&inclFilter=1&type_0=ANY
&parkingParkRideInclusion=INCLUDE
&parkObjInfo=1&parkObjInfoRealtime=1Detail zu einem Sharing-Fahrzeug:
GET /XML_COORD_REQUEST
?outputFormat=JSON
&coordReqType=VEHICLEDETAIL
&vehDetail=1&vehSM=ID
&SharingRefId=BIKE-4711:nextbike:essen
&vehSpec=1&vehAvail=1Antwort (Beispiel)
json
{
"pins": [
{
"type": "STOP",
"id": "de:05113:9009",
"name": "Essen Hbf",
"coord": { "lat": 51.4513, "lon": 7.0128 },
"motTypes": "0,1,4,5,13"
},
{
"type": "POI_POINT",
"name": "Museum Folkwang",
"coord": { "lat": 51.4520, "lon": 7.0100 }
}
]
}JavaScript-Beispiele
js
async function coordInfoAround(lat, lon, { radius = 400, types = ['STOP', 'POI_POINT'] } = {}) {
const base = 'https://server:port/virtuellesVerzeichnis/XML_COORD_REQUEST'
const usp = new URLSearchParams({
outputFormat: 'JSON',
coord: `${lon}:${lat}:WGS84[dd.ddddd]`,
inclFilter: '1'
})
types.forEach((t, i) => {
usp.set(`type_${i}`, t)
usp.set(`radius_${i}`, String(radius))
})
const res = await fetch(`${base}?${usp}`)
if (!res.ok) throw new Error('HTTP ' + res.status)
return res.json()
}js
async function coordInfoInBounds({ minLat, minLon, maxLat, maxLon }) {
const base = 'https://server:port/virtuellesVerzeichnis/XML_COORD_REQUEST'
const usp = new URLSearchParams({
outputFormat: 'JSON',
inclFilter: '1',
type_0: 'STOP',
boundingBoxLU: `${minLon}:${maxLat}:WGS84[dd.ddddd]`,
boundingBoxRL: `${maxLon}:${minLat}:WGS84[dd.ddddd]`
})
usp.append('boundingBox', '')
const res = await fetch(`${base}?${usp}`)
return res.json()
}ts
export async function getVehicleDetail(sharingRefId: string) {
const base = 'https://server:port/virtuellesVerzeichnis/XML_COORD_REQUEST'
const usp = new URLSearchParams({
outputFormat: 'JSON',
coordReqType: 'VEHICLEDETAIL',
vehDetail: '1',
vehSM: 'ID',
SharingRefId: sharingRefId,
vehSpec: '1',
vehAvail: '1'
})
const res = await fetch(`${base}?${usp}`)
if (!res.ok) throw new Error('HTTP ' + res.status)
return res.json()
}Hinweise
- URL-Pfad:
XML_COORD_REQUEST— nichtXML_COORDINFO_REQUEST. - Reihenfolge der Koordinatenangabe ist
x:y(alsolon:lat) — anders als in vielen JSON-Responses. - Der Filter-Index ist nur innerhalb eines Requests eindeutig; für eine Karte mit Halten und POIs genügen zwei Blöcke mit
type_0undtype_1. - Für Umkreissuche ohne Typ-Filter:
inclFilter=1&type_0=ANY&radius_0=<m>genügt — liefert alle Objektarten.