Introduction to Node-Geocoder
Node-Geocoder is an essential npm library for geocoding, offering a simple interface for converting an address into geographical coordinates (latitude and longitude) and vice versa. This comprehensive guide will explore various aspects of Node-Geocoder through dozens of useful examples and a practical application.
Basic Setup
const NodeGeocoder = require('node-geocoder');
const options = {
provider: 'openstreetmap',
// Optional depending on the providers.
apiKey: 'YOUR_API_KEY',
formatter: null // 'gpx', 'string', ...
};
const geocoder = NodeGeocoder(options);
Geocoding API Examples
Get Latitude and Longitude from Address
geocoder.geocode('29 champs elysée paris')
.then(function (res) {
console.log(res);
})
.catch(function (err) {
console.log(err);
});
Reverse Geocoding: Get Address from Latitude and Longitude
geocoder.reverse({ lat: 45.767, lon: 4.833 })
.then(function (res) {
console.log(res);
})
.catch(function (err) {
console.log(err);
});
Batch Geocoding
geocoder.batchGeocode([
'13 rue sainte catherine lyon',
'another address'
])
.then(function (res) {
console.log(res);
})
.catch(function (err) {
console.log(err);
});
Get Country from Latitude and Longitude
geocoder.reverse({ lat: 48.8566, lon: 2.3522 })
.then(function (res) {
console.log(res[0].country);
})
.catch(function (err) {
console.log(err);
});
Customizing Results
Node-Geocoder also allows for custom formatting of results. Below is a simple demonstration on how to change the output format:
const geocoder = NodeGeocoder({
provider: 'openstreetmap',
formatter: function(result) {
return {
formattedAddress: result.formattedAddress,
latitude: result.latitude,
longitude: result.longitude,
extra: {
timezone: result.extra.timezone,
}
};
}
});
Application Example
Let’s create a simple Node.js application that utilizes the Node-Geocoder library to geocode addresses and display them.
const express = require('express');
const NodeGeocoder = require('node-geocoder');
const app = express();
const port = 3000;
const options = {
provider: 'openstreetmap',
apiKey: 'YOUR_API_KEY'
};
const geocoder = NodeGeocoder(options);
app.get('/geocode', (req, res) => {
const address = req.query.address;
geocoder.geocode(address)
.then(function (data) {
res.json(data);
})
.catch(function (err) {
res.status(500).send(err);
});
});
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});
In this simple application, you can pass an address as a query parameter to the /geocode endpoint, and it will return the geocoded data in JSON format.
Node-Geocoder is a powerful tool for any application that relies on geolocation data. With its simple API and support for various geocoding services, it can be easily integrated into a wide range of applications.
Hash: 87a5920109aad33f3f745128f9b1482469921c6cf7fd72decdfb41417ba9598d