Bouw een moderne geocoding ervaring in React met hooks, debouncing, autocomplete en MapLibre kaartintegratie.
React en Next.js zijn de go-to frameworks voor moderne webapplicaties. In deze guide bouwen we een complete geocoding ervaring: van autocomplete input tot interactieve kaart.
Server-side API route
De API key moet server-side blijven. Maak een API route die de token-based authenticatie afhandelt:
import { NextRequest, NextResponse } from 'next/server';// Token caching (in productie: gebruik Redis of database)let cachedToken: string | null = null;let tokenExpiry = 0;async function getToken(): Promise<string> {if (!cachedToken || Date.now() > tokenExpiry - 60000) {const res = await fetch('https://api.georex.nl/api/token', {method: 'POST',headers: { 'X-API-Key': process.env.GEOREX_API_KEY! }});const data = await res.json();cachedToken = data.token;tokenExpiry = Date.now() + (data.expires_in * 1000);}return cachedToken!;}export async function POST(request: NextRequest) {const { address } = await request.json();const token = await getToken();const query = encodeURIComponent(address);const res = await fetch(`https://api.georex.nl/geocode?q=${query}&token=${token}`);const data = await res.json();// GeoJSON naar frontend-friendly formaatif (data.features?.length > 0) {const feature = data.features[0];const [lon, lat] = feature.geometry.coordinates;return NextResponse.json({lat, lon,...feature.properties});}return NextResponse.json({ error: 'Not found' }, { status: 404 });}
Custom useGeocode hook
import { useState, useCallback } from 'react';interface GeocodeResult {lat: number;lon: number;street: string;housenumber: string;postcode: string;city: string;}export const useGeocode = () => {const [loading, setLoading] = useState(false);const [error, setError] = useState<string | null>(null);const [result, setResult] = useState<GeocodeResult | null>(null);const geocode = useCallback(async (address: string) => {setLoading(true);setError(null);try {const response = await fetch('/api/geocode', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ address })});if (!response.ok) {setError('Adres niet gevonden');return;}const data = await response.json();setResult(data);} catch (e) {setError('Netwerkfout');} finally {setLoading(false);}}, []);return { geocode, loading, error, result };};
Autocomplete component
Bouw een debounced autocomplete met keyboard navigatie.
Kaartintegratie
Combineer met MapLibre GL voor een interactieve kaartervaring.
Samenvatting
Met React hooks en moderne patterns kun je een intuïtieve geocoding ervaring bouwen. De combinatie van autocomplete en kaartvisualisatie geeft gebruikers direct feedback.
Gerelateerde artikelen

GeoRex integreren in Magento 2
Complete gids voor het integreren van GeoRex adresvalidatie in je Magento 2 webshop, inclusief module setup en checkout customization.
Lees meer
Python scripts voor bulk adresverwerking
Verwerk duizenden adressen efficiënt met Python, Pandas en async requests. Complete scripts voor data cleaning en geocoding.
Lees meer
Webhooks en real-time geocoding
Implementeer event-driven geocoding met webhooks voor real-time notificaties en streaming validatie.
Lees meer