Zum Inhalt springen
Suche

Suche

Den Endpunkt nach der Aktion der Nutzer wählen.

AufgabeEndpunkt
Eine eingetippte Adresse oder einen Ort in Koordinaten umwandeln/v1/geocode
Vorschläge während der Eingabe zeigen/v1/searchbox/suggest
Ein Postadress-Formular ausfüllen/v1/autofill/suggest
Eine Adresse prüfen/v1/address/validate
Die Adresse an einem Punkt finden/v1/reverse
Orte einer Art zeigen (Apotheke, Bahnhof)/v1/searchbox/category/{category}

Alle Endpunkte brauchen einen Token (Zugang und Limits). Alle Daten sind amtlich: Adressregister, Ortsnamen, Verwaltungsgrenzen und Kataster vom BEV. Anfragen liegen in der Zone search, 10 pro Sekunde.

Eine Adresse geocodieren

const url = "https://api.mapx.at/v1/geocode?q=Herrengasse%2013%20Wien&types=address&limit=3";
const { features } = await (await fetch(url, { headers: { Authorization: "Bearer DEIN_TOKEN" } })).json();
const [lon, lat] = features[0].center;

Immer types angeben (address, street, locality, place, district, region, postcode, poi). Das Ergebnis lässt sich mit bbox=minlon,minlat,maxlon,maxlat eingrenzen oder mit proximity=lon,lat nach Entfernung ordnen.

Reverse Geocoding

curl -s -H "Authorization: Bearer DEIN_TOKEN" "https://api.mapx.at/v1/reverse?lng=16.3725&lat=48.2085&types=address&limit=1" | jq '.features[0].place_name'

Type-ahead-Suche

suggest bei jeder Tipppause aufrufen (Debounce 200 ms), danach retrieve einmal für den gewählten Eintrag. Für beide Aufrufe denselben session_token senden.

const token = crypto.randomUUID();
const s = await (await fetch(`https://api.mapx.at/v1/searchbox/suggest?q=Stephansdom&proximity=16.3725,48.2085&limit=5&session_token=${token}`, { headers: { Authorization: "Bearer DEIN_TOKEN" } })).json();
const id = s.suggestions[0].mapbox_id;
const r = await (await fetch(`https://api.mapx.at/v1/searchbox/retrieve/${id}?session_token=${token}`, { headers: { Authorization: "Bearer DEIN_TOKEN" } })).json();
const [lon, lat] = r.features[0].geometry.coordinates;

Vorschläge tragen eine Kategorie (poi_category_ids, zum Beispiel place_of_worship_church) und den Verwaltungskontext. Die vorige Anfrage abbrechen, wenn eine neue Taste gedrückt wird (AbortController). Beispiel: Suche.

Orte nach Kategorie

curl -s -H "Authorization: Bearer DEIN_TOKEN" "https://api.mapx.at/v1/searchbox/list/category?language=en" | jq ".listItems[0:3]"
curl -s -H "Authorization: Bearer DEIN_TOKEN" "https://api.mapx.at/v1/searchbox/category/pharmacy?proximity=16.3725,48.2085&limit=5"

list/category liefert alle Kategorie-IDs mit lokalisierten Namen (language=de oder en).

Adressformulare

Autofill liefert getrennte Felder, die sich auf Formularfelder abbilden lassen.

const a = await (await fetch("https://api.mapx.at/v1/autofill/suggest?q=Herrengasse%2013%20Wien&limit=3", { headers: { Authorization: "Bearer DEIN_TOKEN" } })).json();
const { address_line1, postcode, place, coordinates } = a.suggestions[0];

Die Validierung prüft, was der Nutzer eingegeben hat:

curl -s -H "Authorization: Bearer DEIN_TOKEN" "https://api.mapx.at/v1/address/validate?q=Hauptstr.%2012a,%203390" | jq '{status, confidence, address}'

status ist match, corrected, ambiguous (dann candidates[]) oder not_found. Abkürzungen, Umlaute und ß werden verstanden. Für strukturierte Eingaben POST mit JSON verwenden.

Batch

POST /v1/geocode/batch geocodiert bis zu 1000 Anfragen in einem Request (Zone heavy, 30 pro Minute).

Nächste Schritte