Zum Inhalt springen

Beispiele

Alle Beispiele am 14.09.2026 gegen die Live-Dienste ausgeführt.

async function orteSuchen(text, naheBei) {
const p = new URLSearchParams({
q: text,
lang: 'de',
limit: '6',
lat: String(naheBei.lat),
lon: String(naheBei.lon),
});
const { features } = await (
await fetch(`/ihr-server/photon/api?${p}`)
).json();
return features.map((f) => ({
name: f.properties.name,
ort: f.properties.city ?? f.properties.state,
art: `${f.properties.osm_key}/${f.properties.osm_value}`,
koordinaten: f.geometry.coordinates, // [lon, lat]
}));
}

Die praktischste Anwendung der Messung im Vergleich: Enthält die Eingabe eine Ziffer, sieht sie nach einer Hausadresse aus — dann Pelias, sonst Photon.

async function suchen(text, naheBei) {
const wirktWieAdresse = /\d/.test(text);
if (wirktWieAdresse) {
const p = new URLSearchParams({
text,
size: '6',
layers: 'address,street',
'focus.point.lat': String(naheBei.lat),
'focus.point.lon': String(naheBei.lon),
});
const { features } = await (
await fetch(`/ihr-server/pelias/search?${p}`)
).json();
if (features.length > 0) return features.map(ausPelias);
}
return orteSuchen(text, naheBei); // Photon
}
const ausPelias = (f) => ({
name: f.properties.label,
art: `${f.properties.layer} (${f.properties.source})`,
koordinaten: f.geometry.coordinates,
});

Der Rückfall auf Photon greift auch dann, wenn Pelias nichts findet — eine leere Liste kommt mit 200, nicht als Fehler.

async function wasIstHier(lat, lon) {
const p = new URLSearchParams({
lat: String(lat),
lon: String(lon),
lang: 'de',
limit: '5',
'osm_tag': '!highway', // keine Bussteige, keine Fahrbahnen
});
const { features } = await (
await fetch(`/ihr-server/photon/reverse?${p}`)
).json();
return features[0]?.properties ?? null;
}

Ohne osm_tag=!highway lieferte dieselbe Abfrage in Klagenfurt gemessen Stand 7 – Klagenfurt Heiligengeistplatz, also einen Bussteig — technisch der nächste Treffer, praktisch selten die gemeinte Antwort.

Siehe Suchvorschläge — mit AbortController, Verzögerung und dem Grund, warum die Ortsbindung dort nicht optional ist.