उपयोगकर्ता की सहमति मिलने पर, Geolocation API की मदद से उसकी जगह की जानकारी का पता लगाया जा सकता है.
Geolocation API की मदद से, उपयोगकर्ता की सहमति लेकर उसकी जगह की जानकारी का पता लगाया जा सकता है. इस सुविधा का इस्तेमाल, उपयोगकर्ता को उसके डेस्टिनेशन तक ले जाने और उपयोगकर्ता के बनाए गए कॉन्टेंट को जियो-टैग करने के लिए किया जा सकता है. उदाहरण के लिए, यह बताना कि फ़ोटो कहां ली गई है.
Geolocation API की मदद से, यह भी देखा जा सकता है कि उपयोगकर्ता कहां है. साथ ही, जब वह एक जगह से दूसरी जगह जाता है, तब उस पर नज़र रखी जा सकती है. हालांकि, ऐसा करने के लिए उपयोगकर्ता की सहमति ज़रूरी है. साथ ही, यह सिर्फ़ पेज खुला होने पर ही किया जा सकता है. इससे, कई दिलचस्प इस्तेमाल के उदाहरण बनते हैं. जैसे, उपयोगकर्ता के आस-पास होने पर, ऑर्डर इकट्ठा करने के लिए बैकएंड सिस्टम के साथ इंटिग्रेट करना.
Geolocation API का इस्तेमाल करते समय, आपको कई बातों का ध्यान रखना होगा. इस गाइड में, इस्तेमाल के सामान्य उदाहरणों और उनके समाधानों के बारे में बताया गया है.
खास जानकारी
- जब उपयोगकर्ता को फ़ायदा हो, तब ही जगह की जानकारी का इस्तेमाल करें.
- उपयोगकर्ता के जेस्चर के जवाब में, साफ़ तौर पर अनुमति मांगें.
- अगर उपयोगकर्ता के ब्राउज़र में जगह की जानकारी की सुविधा काम नहीं करती, तो सुविधा की पहचान करने की सुविधा का इस्तेमाल करें.
- सिर्फ़ जगह की जानकारी का इस्तेमाल करने का तरीका ही न जानें, बल्कि इसका सबसे सही तरीका भी जानें.
- अपनी साइट के साथ जगह की जानकारी की सुविधा की जांच करें.
जगह की जानकारी का इस्तेमाल कब करना चाहिए
- उपयोगकर्ता के अनुभव को बेहतर बनाने के लिए, यह पता लगाएं कि वह किसी जगह के सबसे करीब कहां है.
- उपयोगकर्ता की जगह के हिसाब से जानकारी (जैसे, खबरें) दिखाना.
- मैप पर किसी उपयोगकर्ता की जगह की जानकारी दिखाना.
- अपने ऐप्लिकेशन में बनाए गए डेटा को उपयोगकर्ता की जगह की जानकारी के साथ टैग करें (यानी, किसी फ़ोटो को जियो-टैग करें).
ज़िम्मेदारी से अनुमति मांगना
उपयोगकर्ताओं पर की गई हाल की रिसर्च से पता चला है कि उपयोगकर्ता उन साइटों पर भरोसा नहीं करते जो पेज लोड होने पर, उपयोगकर्ताओं से उनकी जगह की जानकारी मांगती हैं. तो सबसे सही तरीके क्या हैं?
यह मान लें कि उपयोगकर्ता आपको अपनी जगह की जानकारी नहीं देंगे
आपके कई उपयोगकर्ता, आपको अपनी जगह की जानकारी नहीं देंगे. इसलिए, आपको डेवलपमेंट का ऐसा तरीका अपनाना होगा जिससे आपके ऐप्लिकेशन को सुरक्षित रखा जा सके.
- भौगोलिक जानकारी वाले एपीआई से जुड़ी सभी गड़बड़ियों को ठीक करें, ताकि आप अपनी साइट को इस स्थिति के हिसाब से बदल सकें.
- जगह की जानकारी की ज़रूरत के बारे में साफ़ तौर पर बताएं.
- अगर ज़रूरी हो, तो फ़ॉलबैक का इस्तेमाल करें.
अगर जगह की जानकारी ज़रूरी है, तो फ़ॉलबैक का इस्तेमाल करें
हमारा सुझाव है कि आपकी साइट या ऐप्लिकेशन को उपयोगकर्ता की मौजूदा जगह की जानकारी ऐक्सेस करने की ज़रूरत न हो. हालांकि, अगर आपकी साइट या ऐप्लिकेशन को उपयोगकर्ता की मौजूदा जगह की जानकारी की ज़रूरत है, तो तीसरे पक्ष के ऐसे समाधान हैं जिनकी मदद से यह अनुमान लगाया जा सकता है कि व्यक्ति फ़िलहाल कहां है.
ये सलूशन, अक्सर उपयोगकर्ता के आईपी पते को देखकर काम करते हैं. साथ ही, उस पते को RIPE डेटाबेस में रजिस्टर किए गए फ़िज़िकल पतों से मैप करते हैं. आम तौर पर, ये जगहें बहुत सटीक नहीं होतीं. आम तौर पर, इनसे आपको उपयोगकर्ता के सबसे नज़दीक मौजूद टेलीकम्यूनिकेशन हब या सेल फ़ोन टावर की जगह की जानकारी मिलती है. कई मामलों में, हो सकता है कि ये सटीक न हों. ऐसा खास तौर पर तब होता है, जब उपयोगकर्ता वीपीएन या किसी अन्य प्रॉक्सी सेवा का इस्तेमाल कर रहा हो.
उपयोगकर्ता के जेस्चर पर, जगह की जानकारी के ऐक्सेस का हमेशा अनुरोध करना
पक्का करें कि उपयोगकर्ताओं को यह समझ आ जाए कि आपने उनकी जगह की जानकारी क्यों मांगी है और इससे उन्हें क्या फ़ायदा होगा. साइट लोड होने के साथ ही, होम पेज पर इसके लिए पूछने पर, उपयोगकर्ता अनुभव खराब हो जाता है.
इसके बजाय, उपयोगकर्ता को साफ़ तौर पर कॉल-टू-ऐक्शन दें या यह जानकारी दें कि किसी कार्रवाई के लिए, उसकी जगह की जानकारी का ऐक्सेस ज़रूरी है. इसके बाद, उपयोगकर्ता ऐक्सेस के लिए सिस्टम प्रॉम्प्ट को, अभी शुरू की गई कार्रवाई से आसानी से जोड़ सकता है.
साफ़ तौर पर बताएं कि किसी कार्रवाई के लिए, उपयोगकर्ता की जगह की जानकारी का अनुरोध किया जाएगा
Google Ads टीम की एक स्टडी में, जब किसी उपयोगकर्ता से किसी खास होटल की साइट पर, आने वाले समय में होने वाली किसी कॉन्फ़्रेंस के लिए बोस्टन में होटल का कमरा बुक करने के लिए कहा गया, तो होम पेज पर "ढूंढें और बुक करें" कॉल-टू-ऐक्शन पर टैप करने के तुरंत बाद, उससे अपनी जीपीएस लोकेशन शेयर करने के लिए कहा गया.
कुछ मामलों में, उपयोगकर्ता परेशान हो गया, क्योंकि उसे समझ नहीं आया कि बोस्टन में कमरा बुक करने के दौरान, उसे सेन फ़्रांसिस्को के होटल क्यों दिखाए जा रहे हैं.
उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, यह पक्का करें कि उन्हें पता हो कि आपने उनकी जगह की जानकारी क्यों मांगी है. सभी डिवाइसों पर काम करने वाला कोई जाना-पहचाना सिग्नफ़ायर जोड़ें. जैसे, रेंज फ़ाइंडर या साफ़ तौर पर बताने वाला कॉल-टू-ऐक्शन, जैसे कि “मेरे आस-पास खोजें.”
उपयोगकर्ताओं को उनकी जगह की जानकारी की अनुमति देने के लिए, धीरे से कहना
आपके पास उपयोगकर्ताओं के किसी भी काम का ऐक्सेस नहीं होता. आपको पता होता है कि उपयोगकर्ताओं ने अपनी जगह की जानकारी का ऐक्सेस कब बंद किया, लेकिन यह नहीं पता होता कि उन्होंने कब ऐक्सेस दिया. आपको सिर्फ़ तब पता चलता है, जब नतीजे दिखते हैं.
अगर आपको उपयोगकर्ताओं से कोई कार्रवाई करनी है, तो उन्हें "धक्का" देना एक अच्छा तरीका है.
हमारा सुझाव है कि:
- एक ऐसा टाइमर सेट अप करें जो कुछ समय बाद ट्रिगर हो. पांच सेकंड एक अच्छी वैल्यू है.
- अगर आपको गड़बड़ी का कोई मैसेज मिलता है, तो उपयोगकर्ता को कोई मैसेज दिखाएं.
- अगर आपको पॉज़िटिव जवाब मिलता है, तो टाइमर बंद करें और नतीजों को प्रोसेस करें.
- अगर टाइम आउट के बाद भी आपको कोई जवाब नहीं मिलता है, तो उपयोगकर्ता को सूचना दिखाएं.
- अगर जवाब बाद में आता है और सूचना अब भी मौजूद है, तो स्क्रीन से उसे हटाएं.
button.onclick = function () {
var startPos;
var nudge = document.getElementById('nudge');
var showNudgeBanner = function () {
nudge.style.display = 'block';
};
var hideNudgeBanner = function () {
nudge.style.display = 'none';
};
var nudgeTimeoutId = setTimeout(showNudgeBanner, 5000);
var geoSuccess = function (position) {
hideNudgeBanner();
// We have the location, don't display banner
clearTimeout(nudgeTimeoutId);
// Do magic with location
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
var geoError = function (error) {
switch (error.code) {
case error.TIMEOUT:
// The user didn't accept the callout
showNudgeBanner();
break;
}
};
navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
};
ब्राउज़र समर्थन
ज़्यादातर ब्राउज़र अब जियोलोकेशन एपीआई के साथ काम करते हैं. हालांकि, कोई भी कार्रवाई करने से पहले, यह देखना हमेशा अच्छा होता है कि ब्राउज़र में यह सुविधा काम करती है या नहीं.
जगह की जानकारी वाले ऑब्जेक्ट की मौजूदगी की जांच करके, आसानी से यह पता लगाया जा सकता है कि आपका ऐप्लिकेशन,
// check for Geolocation support
if (navigator.geolocation) {
console.log('Geolocation is supported!');
} else {
console.log('Geolocation is not supported for this Browser/OS.');
}
उपयोगकर्ता की मौजूदा जगह की जानकारी का पता लगाना
जियोलोकेशन एपीआई, उपयोगकर्ता की जगह की जानकारी पाने के लिए, "एक बार में" एक आसान तरीका उपलब्ध कराता है: getCurrentPosition()
. इस तरीके को कॉल करने पर, उपयोगकर्ता की मौजूदा जगह की जानकारी, सिंक किए बिना भेजी जाती है.
window.onload = function () {
var startPos;
var geoSuccess = function (position) {
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
navigator.geolocation.getCurrentPosition(geoSuccess);
};
अगर इस डोमेन पर मौजूद किसी ऐप्लिकेशन ने पहली बार अनुमतियों का अनुरोध किया है, तो आम तौर पर ब्राउज़र, उपयोगकर्ता की सहमति की जांच करता है. ब्राउज़र के हिसाब से, अनुमति लुकअप को हमेशा अनुमति देने या अनुमति न देने की प्राथमिकताएं भी हो सकती हैं. ऐसे में, पुष्टि की प्रक्रिया को बायपास कर दिया जाता है.
आपके ब्राउज़र में जगह की जानकारी देने वाले डिवाइस के हिसाब से, पोज़िशन ऑब्जेक्ट में सिर्फ़ अक्षांश और देशांतर के अलावा और भी बहुत कुछ शामिल हो सकता है. उदाहरण के लिए, इसमें ऊंचाई या दिशा शामिल हो सकती है. जब तक जगह की जानकारी देने वाला सिस्टम डेटा नहीं दिखाता, तब तक यह नहीं बताया जा सकता कि वह किस अतिरिक्त जानकारी का इस्तेमाल करता है.
उपयोगकर्ता की जगह की जानकारी देखना
जियोलोकेशन एपीआई की मदद से, getCurrentPosition()
को एक बार कॉल करके, उपयोगकर्ता की जगह की जानकारी (उपयोगकर्ता की सहमति के साथ) हासिल की जा सकती है.
अगर आपको उपयोगकर्ता की जगह की जानकारी को लगातार मॉनिटर करना है, तो जगह की जानकारी के लिए एपीआई के तरीके, watchPosition()
का इस्तेमाल करें. यह getCurrentPosition()
की तरह ही काम करता है. हालांकि, यह पोज़िशनिंग सॉफ़्टवेयर के तौर पर कई बार फ़ायर होता है:
- उपयोगकर्ता के बारे में ज़्यादा सटीक जानकारी मिलती है.
- इससे यह पता चलता है कि उपयोगकर्ता की जगह बदल रही है.
var watchId = navigator.geolocation.watchPosition(function (position) {
document.getElementById('currentLat').innerHTML = position.coords.latitude;
document.getElementById('currentLon').innerHTML = position.coords.longitude;
});
उपयोगकर्ता की जगह की जानकारी देखने के लिए, जगह की जानकारी की सुविधा का इस्तेमाल कब करना चाहिए
- आपको उपयोगकर्ता की जगह की ज़्यादा सटीक जानकारी चाहिए.
- आपके ऐप्लिकेशन को जगह की नई जानकारी के आधार पर, यूज़र इंटरफ़ेस को अपडेट करना होगा.
- जब उपयोगकर्ता किसी तय किए गए ज़ोन में प्रवेश करता है, तो आपके ऐप्लिकेशन को कारोबार के लॉजिक को अपडेट करना होगा.
जगह की जानकारी का इस्तेमाल करने के सबसे सही तरीके
हमेशा खाली रखें और बैटरी बचाएं
जगह की जानकारी में होने वाले बदलावों को ट्रैक करने की सुविधा, बिना किसी शुल्क के उपलब्ध नहीं है. ऑपरेटिंग सिस्टम, जगह की जानकारी वाले सबसिस्टम से ऐप्लिकेशन को कनेक्ट करने के लिए, प्लैटफ़ॉर्म की सुविधाएं पेश कर सकते हैं. हालांकि, वेब डेवलपर के तौर पर, आपको यह नहीं पता कि उपयोगकर्ता की जगह की जानकारी को मॉनिटर करने के लिए, उपयोगकर्ता के डिवाइस में कौनसी सुविधाएं मौजूद हैं. साथ ही, किसी जगह की जानकारी देखते समय, डिवाइस को बहुत ज़्यादा प्रोसेसिंग करनी पड़ती है.
जब आपको उपयोगकर्ता की जगह की जानकारी ट्रैक करने की ज़रूरत न हो, तो जगह की जानकारी देने वाले सिस्टम को बंद करने के लिए clearWatch
कोड का इस्तेमाल करें.
गड़बड़ियों को आसानी से मैनेज करना
माफ़ करें, जगह की जानकारी का पता लगाने की सभी कोशिशें काम नहीं करतीं. ऐसा हो सकता है कि जीपीएस का पता न चल पाए या उपयोगकर्ता ने अचानक जगह की जानकारी देखने की सुविधा बंद कर दी हो. किसी गड़बड़ी की स्थिति में, getCurrentPosition()
के लिए एक दूसरा वैकल्पिक आर्ग्युमेंट कॉल किया जाता है, ताकि आप कॉलबैक में उपयोगकर्ता को सूचना दे सकें:
window.onload = function () {
var startPos;
var geoSuccess = function (position) {
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
var geoError = function (error) {
console.log('Error occurred. Error code: ' + error.code);
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from location provider)
// 3: timed out
};
navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
};
जगह की जानकारी देने वाले हार्डवेयर को चालू करने की ज़रूरत कम हो जाती है
इस्तेमाल के कई उदाहरणों के लिए, आपको उपयोगकर्ता की सबसे अप-टू-डेट जगह की जानकारी की ज़रूरत नहीं होती. इसके लिए, आपको सिर्फ़ अनुमानित जानकारी की ज़रूरत होती है.
ब्राउज़र को हाल ही में मिली जगह की जानकारी के नतीजे का इस्तेमाल करने के लिए, maximumAge
वैकल्पिक प्रॉपर्टी का इस्तेमाल करें. अगर उपयोगकर्ता ने पहले ही डेटा का अनुरोध किया है, तो यह न सिर्फ़ ज़्यादा तेज़ी से दिखता है, बल्कि इससे ब्राउज़र को अपनी जगह की जानकारी देने वाले हार्डवेयर इंटरफ़ेस, जैसे कि वाई-फ़ाई ट्रायंगलेशन या जीपीएस को शुरू करने से भी रोका जा सकता है.
window.onload = function () {
var startPos;
var geoOptions = {
maximumAge: 5 * 60 * 1000,
};
var geoSuccess = function (position) {
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
var geoError = function (error) {
console.log('Error occurred. Error code: ' + error.code);
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from location provider)
// 3: timed out
};
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
};
उपयोगकर्ता को इंतज़ार न कराएं, टाइम आउट सेट करें
अगर टाइम आउट सेट नहीं किया जाता है, तो हो सकता है कि आपकी मौजूदा जगह का अनुरोध कभी न मिले.
window.onload = function () {
var startPos;
var geoOptions = {
timeout: 10 * 1000,
};
var geoSuccess = function (position) {
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
var geoError = function (error) {
console.log('Error occurred. Error code: ' + error.code);
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from location provider)
// 3: timed out
};
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
};
जगह की सटीक जानकारी के बजाय, अनुमानित जगह की जानकारी का इस्तेमाल करना
अगर आपको किसी उपयोगकर्ता के सबसे नज़दीक का स्टोर ढूंढना है, तो हो सकता है कि आपको एक मीटर तक की सटीक जानकारी की ज़रूरत न पड़े. एपीआई को इस तरह से डिज़ाइन किया गया है कि वह जगह की अनुमानित जानकारी जल्द से जल्द दे सके.
अगर आपको ज़्यादा सटीक जानकारी चाहिए, तो enableHighAccuracy
विकल्प की मदद से डिफ़ॉल्ट सेटिंग को बदला जा सकता है. इसका इस्तेमाल कम करें: समस्या हल होने में ज़्यादा समय लगता है और बैटरी भी ज़्यादा खर्च होती है.
window.onload = function () {
var startPos;
var geoOptions = {
enableHighAccuracy: true,
};
var geoSuccess = function (position) {
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
var geoError = function (error) {
console.log('Error occurred. Error code: ' + error.code);
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from location provider)
// 3: timed out
};
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
};
Chrome DevTools की मदद से जगह की जानकारी को एमुलेट करना
जियोलोकेशन की सुविधा सेट अप करने के बाद, आपको ये काम करने होंगे:
- देखें कि आपका ऐप्लिकेशन अलग-अलग जगहों पर कैसे काम करता है.
- पुष्टि करें कि जगह की जानकारी उपलब्ध न होने पर, आपका ऐप्लिकेशन सही तरीके से काम करता हो.
Chrome DevTools से, दोनों काम किए जा सकते हैं.
- Chrome DevTools खोलें.
- कंसोल ड्रॉअर खोलने के लिए, Esc दबाएं.
- Console का ड्रॉअर मेन्यू खोलना
- सेंसर टैब दिखाने के लिए, सेंसर विकल्प पर क्लिक करें.
यहां से, जगह की जानकारी को किसी पहले से तय किए गए बड़े शहर पर बदला जा सकता है, अपनी पसंद के मुताबिक कोई जगह डाली जा सकती है या जगह की जानकारी को जगह की जानकारी उपलब्ध नहीं है पर सेट करके, जगह की जानकारी की सुविधा बंद की जा सकती है.