Geolokalisierung und Karten in JavaScript (Node.js): Bibliotheken und Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Geolokalisierung und Karten in JavaScript (Node.js)

Die Arbeit mit geografischen Daten und der Darstellung von Karten ist eine der Kernaufgaben moderner Webanwendungen. Im Node.js-Ökosystem gibt es zahlreiche Bibliotheken, die es ermöglichen, Koordinaten zu verarbeiten, Routen zu berechnen, Reverse Geocoding durchzuführen und interaktive Karten zu rendern. In diesem Artikel betrachten wir die wichtigsten Werkzeuge und geben praktische Codebeispiele für den serverseitigen Teil (Node.js).



1. Grundlegende Bibliotheken für die Arbeit mit Geodaten



1.1. Leaflet (Client-seitig) und node-leaflet

Leaflet ist die beliebteste JavaScript-Bibliothek für interaktive Karten. Sie läuft im Browser, aber für Node.js gibt es das Paket leaflet (über npm install leaflet), das es ermöglicht, Karten serverseitig mit leaflet-headless zu rendern oder Daten im GeoJSON-Format zu verwenden.

Beispiel für die Generierung einer Karte als Bild auf dem Server (mit leaflet-static):

const L = require('leaflet');const { createCanvas } = require('canvas');

const map = L.map(createCanvas(800, 600), { center: [55.751244, 37.618423], // Moskau zoom: 10});

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors'}).addTo(map);

// Export nach PNG (vereinfacht)const buffer = map.getCanvas().toBuffer();require('fs').writeFileSync('map.png', buffer);


1.2. OpenStreetMap (OSM) und Overpass API

OpenStreetMap bietet kostenlose Kacheln und eine API zur Objektsuche. In Node.js wird für die Arbeit mit OSM häufig das Paket osmosis oder direkte HTTP-Anfragen an https://nominatim.openstreetmap.org verwendet.

Beispiel für Reverse Geocoding (Adresse aus Koordinaten ermitteln):

const fetch = require('node-fetch');

async function reverseGeocode(lat, lon) { const url = `https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lon}`; const response = await fetch(url, { headers: { 'User-Agent': 'PythonLibExample/1.0' } }); const data = await response.json(); return data.display_name;}

reverseGeocode(55.751244, 37.618423).then(addr => console.log(addr));// Ergebnis: "Moskau, Russland, Roter Platz"


1.3. Turf.js — Geodatenanalyse

Turf.js ist eine leistungsstarke Bibliothek zur Durchführung geometrischer Operationen: Pufferung, Zusammenführen von Polygonen, Berechnung von Entfernungen, Flächen usw. Sie funktioniert sowohl im Browser als auch in Node.js.

Beispiel für die Berechnung der Entfernung zwischen zwei Punkten (in Kilometern):

const turf = require('@turf/turf');

const point1 = turf.point([37.618423, 55.751244]); // [lon, lat]const point2 = turf.point([30.315868, 59.939095]); // Sankt Petersburg

const distance = turf.distance(point1, point2, { units: 'kilometers' });console.log(`Entfernung: ${distance.toFixed(2)} km`); // ≈ 634,5 km


1.4. GeoJSON und shapefile

GeoJSON ist ein Format zur Speicherung geografischer Strukturen (Punkte, Linien, Polygone). In Node.js reicht für die Arbeit damit das integrierte JSON.parse aus, zum Lesen von Shape-Dateien wird das Paket shapefile verwendet.

const shapefile = require('shapefile');

shapefile.open('path/to/file.shp') .then(source => source.read() .then(function log(result) { if (result.done) return; console.log(result.value); // GeoJSON Feature return source.read().then(log); })) .catch(error => console.error(error));


2. Fortgeschrittene Werkzeuge



2.1. Mapbox GL JS (Node.js)

Mapbox bietet eine kommerzielle Plattform mit hochdetaillierten Karten. Für serverseitiges Rendern verwenden Sie @mapbox/mapbox-gl-native. Ein API-Schlüssel ist erforderlich.



2.2. Nominatim (Geokodierung)

Empfehlungen