JavaScript (Node.js) में जियोलोकेशन और मैप्स: कोऑर्डिनेट से विज़ुअलाइज़ेशन तक
आधुनिक वेब एप्लिकेशन में भौगोलिक डेटा के साथ काम करने की ज़रूरत बढ़ती जा रही है - यूज़र की लोकेशन पता करने से लेकर जटिल रूट और इंटरैक्टिव मैप बनाने तक। Node.js इकोसिस्टम में इसके लिए कई शानदार टूल्स मौजूद हैं। इस आर्टिकल में हम जियोलोकेशन और मैप्स के लिए मुख्य लाइब्रेरीज और उनके प्रैक्टिकल उदाहरण देखेंगे।
1. बेसिक कॉन्सेप्ट्स: जियोलोकेशन और जियोकोडिंग
कोड में जाने से पहले, कुछ ज़रूरी टर्म्स समझ लेते हैं:
- जियोलोकेशन — डिवाइस की भौतिक लोकेशन पता करना (आमतौर पर IP, GPS या Wi-Fi से)।
- जियोकोडिंग — पते (जैसे "मुंबई, गेटवे ऑफ इंडिया") को भौगोलिक कोऑर्डिनेट (अक्षांश, देशांतर) में बदलना।
- रिवर्स जियोकोडिंग — कोऑर्डिनेट को पढ़ने योग्य पते में बदलना।
Node.js में इन कामों के लिए सबसे ज़्यादा node-geocoder लाइब्रेरी का उपयोग होता है, जो कई प्रोवाइडर्स (Google Maps, OpenStreetMap, Nominatim आदि) को सपोर्ट करती है।
2. node-geocoder की इंस्टॉलेशन और सेटअप
पहले पैकेज इंस्टॉल करें:
npm install node-geocoder
OpenStreetMap (Nominatim) प्रोवाइडर के साथ बेसिक उपयोग का उदाहरण:
const NodeGeocoder = require('node-geocoder');
const options = {
provider: 'openstreetmap',
};
const geocoder = NodeGeocoder(options);
// पते की जियोकोडिंग
geocoder.geocode('मुंबई, गेटवे ऑफ इंडिया')
.then((res) => {
console.log('कोऑर्डिनेट:', res[0].latitude, res[0].longitude);
})
.catch((err) => {
console.log('त्रुटि:', err);
});
// रिवर्स जियोकोडिंग
geocoder.reverse({ lat: 18.9220, lon: 72.8347 })
.then((res) => {
console.log('पता:', res[0].formattedAddress);
})
.catch((err) => {
console.log('त्रुटि:', err);
});
ध्यान दें: Nominatim सर्विस पर प्रति सेकंड 1 रिक्वेस्ट की सीमा है। प्रोडक्शन के लिए पेड प्रोवाइडर्स (Google, Here) या अपना खुद का Nominatim सर्वर सेटअप करना बेहतर होता है।
3. सर्वर-साइड मैप्स: Leaflet और OpenStreetMap
इंटरैक्टिव मैप्स के लिए सबसे लोकप्रिय JavaScript लाइब्रेरी Leaflet है। यह ब्राउज़र में काम करती है, लेकिन आप Node.js का उपयोग करके सर्वर पर मैप जनरेट कर सकते हैं और उन्हें स्टैटिक HTML या इमेज के रूप में क्लाइंट को भेज सकते हैं।
स्टैटिक मैप (इमेज) जनरेट करने के लिए leaflet-static या node-static-map पैकेज का उपयोग करें। leaflet-static का उदाहरण:
npm install leaflet-static
मार्कर के साथ मैप इमेज बनाने का उदाहरण:
const LeafletStatic = require('leaflet-static');
const map = new LeafletStatic({
center: [18.9220, 72.8347], // मुंबई
zoom: 12,
size: [800, 600],
layers: [
{
tileLayer: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
attribution: '© OpenStreetMap contributors'
}
],
markers: [
{
lat: 18.9220,
lng: 72.8347,
popup: 'गेटवे ऑफ इंडिया'
}
]
});
map.render()
.then((buffer) => {
// इमेज सेव करें
require('fs').writeFileSync('map.png', buffer);
console.log('मैप map.png के रूप में सेव हो गया');
})
.catch((err) => {
console.error('त्रुटि:', err);
});
यह तरीका मैप प्रीव्यू, रिपोर्ट या ईमेल न्यूज़लेटर के लिए बहुत उपयोगी है।
4. IP से लोकेशन पता करना
IP एड्रेस से जियोलोकेशन पता करने के लिए Node.js में geoip-lite पैकेज का उपयोग होता है। यह MaxMind की लोकल GeoLite2 डेटाबेस का उपयोग करता है।
npm install geoip-lite
उदाहरण:
const geoip = require('geoip-lite');
const ip = '8.8.8.8'; // Google DNS का IP
const geo = geoip.lookup(ip);
console.log('देश:', geo.country);
console.log(