Géolocalisation et cartes dans Node.js : bibliothèques pour travailler avec les cartes

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Géolocalisation et cartes en JavaScript (Node.js) : des coordonnées à la visualisation



Les applications web modernes nécessitent de plus en plus souvent de travailler avec des données géographiques : de la simple détermination de la localisation de l'utilisateur à la construction d'itinéraires complexes et de cartes interactives. Dans l'écosystème Node.js, il existe de nombreux outils permettant de résoudre ces tâches. Dans cet article, nous examinerons les bibliothèques clés pour la géolocalisation et les cartes, et fournirons des exemples pratiques de leur utilisation.



1. Concepts de base : géolocalisation et géocodage



Avant de plonger dans le code, clarifions les termes :

  • Géolocalisation — détermination de la localisation physique d'un appareil (généralement par IP, GPS ou Wi-Fi).
  • Géocodage — conversion d'une adresse (par exemple, "Moscou, Place Rouge") en coordonnées géographiques (latitude, longitude).
  • Géocodage inverse — conversion de coordonnées en une adresse lisible.


Dans Node.js, pour ces tâches, on utilise le plus souvent la bibliothèque node-geocoder, qui prend en charge de nombreux fournisseurs (Google Maps, OpenStreetMap, Nominatim, etc.).



2. Installation et configuration de node-geocoder



Pour commencer, installez le paquet :

npm install node-geocoder


Exemple d'utilisation de base avec le fournisseur OpenStreetMap (Nominatim) :

const NodeGeocoder = require('node-geocoder');

const options = { provider: 'openstreetmap',};

const geocoder = NodeGeocoder(options);

// Géocodage d'une adressegeocoder.geocode('Moscou, Kremlin') .then((res) => { console.log('Coordonnées :', res[0].latitude, res[0].longitude); }) .catch((err) => { console.log('Erreur :', err); });

// Géocodage inversegeocoder.reverse({ lat: 55.7522, lon: 37.6156 }) .then((res) => { console.log('Adresse :', res[0].formattedAddress); }) .catch((err) => { console.log('Erreur :', err); });


Notez que le service Nominatim a des limites sur le nombre de requêtes (1 requête par seconde). Pour la production, il est préférable d'utiliser des fournisseurs payants (Google, Here) ou de configurer votre propre serveur Nominatim.



3. Travail avec les cartes côté serveur : Leaflet et OpenStreetMap



La bibliothèque JavaScript la plus populaire pour les cartes interactives est Leaflet. Elle fonctionne dans le navigateur, mais vous pouvez générer des cartes sur le serveur avec Node.js et les transmettre au client sous forme de HTML statique ou d'image.



Pour la génération de cartes statiques (images), utilisez le paquet leaflet-static ou node-static-map. Examinons un exemple avec leaflet-static :



npm install leaflet-static


Exemple de création d'une image de carte avec un marqueur :

const LeafletStatic = require('leaflet-static');

const map = new LeafletStatic({ center: [55.7522, 37.6156], // Moscou zoom: 12, size: [800, 600], layers: [ { tileLayer: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', attribution: '© Contributeurs OpenStreetMap' } ], markers: [ { lat: 55.7522, lng: 37.6156, popup: 'Place Rouge' } ]});

map.render() .then((buffer) => { // Sauvegarder l'image require('fs').writeFileSync('map.png', buffer); console.log('Carte sauvegardée sous map.png'); }) .catch((err) => { console.error('Erreur :', err); });


Cette approche est utile pour créer des aperçus de cartes, des rapports ou des envois par email.



4. Détermination de la localisation par IP



Pour déterminer la géolocalisation par adresse IP dans Node.js, on utilise souvent le paquet geoip-lite. Il utilise la base de données locale GeoLite2 de MaxMind.



npm install geoip-lite


Exemple :

const geoip = require('geoip-lite');

const ip = '8.8.8

Recommendations