जियोलोकेशन एपीआई की मदद से, उपयोगकर्ता की सहमति के आधार पर, उसकी जगह की जानकारी देखी जा सकती है.
जियोलोकेशन एपीआई से आपको उपयोगकर्ता की सहमति से, उपयोगकर्ता की जगह की जानकारी मिल सकती है. इस सुविधा का इस्तेमाल, उपयोगकर्ताओं को उनके डेस्टिनेशन तक ले जाने के लिए गाइड करने और उपयोगकर्ता के बनाए गए कॉन्टेंट को जियो-टैगिंग करने जैसी चीज़ों के लिए किया जा सकता है. उदाहरण के लिए, यह मार्क करना कि फ़ोटो कहां ली गई थी.
जियोलोकेशन एपीआई आपको यह देखने में भी मदद करता है कि उपयोगकर्ता कहां है और उसके इधर-उधर जाने पर, हमेशा उपयोगकर्ता की सहमति से (और पेज खुला होने पर) उसके बारे में जानकारी रख सकता है. ऐसा करने से, इस्तेमाल के कई दिलचस्प उदाहरण मिलते हैं. जैसे, उपयोगकर्ता के आस-पास होने पर, डेटा इकट्ठा करने के लिए उसे बैकएंड सिस्टम के साथ इंटिग्रेट करना.
जियोलोकेशन एपीआई का इस्तेमाल करते समय, आपको कई चीज़ों की जानकारी होनी चाहिए. इस गाइड में, इस्तेमाल के सामान्य उदाहरणों और उनके समाधानों की जानकारी दी गई है.
खास जानकारी
- भौगोलिक जगह (जियोलोकेशन) का इस्तेमाल तब करें, जब इससे उपयोगकर्ता को फ़ायदा होता हो.
- उपयोगकर्ता के जेस्चर (हाव-भाव) का साफ़ तौर पर जवाब देने के लिए, अनुमति मांगें.
- अगर किसी उपयोगकर्ता के ब्राउज़र में जियोलोकेशन की सुविधा काम नहीं करती है, तो सुविधा की पहचान करने की सुविधा का इस्तेमाल करें.
- न सिर्फ़ भौगोलिक स्थान (जियोलोकेशन) को लागू करने का तरीका जानें, बल्कि भौगोलिक जगह के इस्तेमाल का सबसे अच्छा तरीका भी जानें.
- अपनी साइट के साथ जियोलोकेशन की जांच करें.
जियोलोकेशन का इस्तेमाल कब करना चाहिए
- उपयोगकर्ता अनुभव को मनमुताबिक बनाने के लिए, यह पता लगाया जा सकता है कि उपयोगकर्ता किसी खास जगह के सबसे करीब है या नहीं.
- उपयोगकर्ता की जगह की जानकारी, जैसे कि समाचार तैयार करना.
- मैप पर उपयोगकर्ता की स्थिति दिखाएं.
- आपके ऐप्लिकेशन में उपयोगकर्ता की जगह की जानकारी के साथ बनाया गया टैग डेटा (यानी, किसी तस्वीर को जियो-टैग करें).
ज़िम्मेदारी के साथ अनुमति मांगें
हाल ही के यूज़र स्टडी से पता चला है कि उपयोगकर्ता ऐसी साइटों पर भरोसा नहीं करते हैं जो पेज लोड होने पर उपयोगकर्ताओं से अपनी पोज़िशन बदलने के लिए कहती हैं. आइए जानते हैं कि सबसे सही तरीके क्या हैं?
मान लें कि उपयोगकर्ता आपको अपनी जगह की जानकारी नहीं देंगे
बहुत से उपयोगकर्ता आपको अपनी जगह की जानकारी नहीं देना चाहते, इसलिए आपको सुरक्षा से जुड़े डेवलपमेंट का तरीका अपनाना होगा.
- सभी गड़बड़ियों को जियोलोकेशन एपीआई से बाहर रखें, ताकि आप अपनी साइट को इस स्थिति के मुताबिक बना सकें.
- जगह की जानकारी के लिए, साफ़ तौर पर और साफ़ तौर पर जानकारी दें.
- अगर ज़रूरी हो, तो फ़ॉलबैक सलूशन का इस्तेमाल करें.
अगर भौगोलिक स्थान की ज़रूरत हो, तो फ़ॉलबैक का इस्तेमाल करें
हमारा सुझाव है कि आपकी साइट या ऐप्लिकेशन को उपयोगकर्ता की मौजूदा जगह की जानकारी का ऐक्सेस देने की ज़रूरत न हो. हालांकि, अगर आपकी साइट या ऐप्लिकेशन को उपयोगकर्ता की मौजूदा जगह की जानकारी चाहिए, तो तीसरे पक्ष के ऐसे समाधान हैं जिनकी मदद से यह अनुमान लगाया जा सकता है कि उस व्यक्ति की मौजूदा जगह की जानकारी क्या है.
ये समाधान अक्सर उपयोगकर्ता के आईपी पते को देखकर और RIPE डेटाबेस में रजिस्टर किए गए घर या ऑफ़िस के पते को मैप करके काम करते हैं. ये जगहें अक्सर बहुत सटीक नहीं होती हैं, जिससे आपको आम तौर पर ऐसे टेलिकम्यूनिकेशन हब या सेल फ़ोन टावर की जगह का पता चलता है जो उपयोगकर्ता के सबसे नज़दीक हो. कई मामलों में, हो सकता है कि वे सटीक न हों, खासकर तब, जब उपयोगकर्ता वीपीएन या किसी दूसरी प्रॉक्सी सेवा का इस्तेमाल कर रहा हो.
उपयोगकर्ता के जेस्चर का इस्तेमाल करके, जगह की जानकारी ऐक्सेस करने का हमेशा अनुरोध करें
पक्का करें कि उपयोगकर्ताओं को यह पता हो कि आप उनसे उनकी जगह की जानकारी क्यों मांग रहे हैं और इससे उन्हें क्या फ़ायदा होगा. साइट के लोड होते ही, इसे होम पेज पर तुरंत पूछने से उपयोगकर्ता को खराब अनुभव मिलता है.
![स्टोर खोजने वाले पेज पर अनुमति का अनुरोध करने वाली साइट.](https://web.dev/static/articles/user-location/image/a-site-requesting-permiss-7da80ad474ecf.png?authuser=6&hl=hi)
![होम पेज पर अनुमति का अनुरोध करने वाली साइट.](https://web.dev/static/articles/user-location/image/a-site-requesting-permiss-de9fb69ac4117.png?authuser=6&hl=hi)
इसके बजाय, उपयोगकर्ता को साफ़ तौर पर कॉल-टू-ऐक्शन दें या संकेत दें कि कार्रवाई करने के लिए, उपयोगकर्ता को उसकी जगह की जानकारी का ऐक्सेस चाहिए. इसके बाद उपयोगकर्ता, ऐक्सेस के लिए सिस्टम प्रॉम्प्ट को अभी-अभी शुरू की गई कार्रवाई से ज़्यादा आसानी से जोड़ सकता है.
साफ़ तौर पर बताएं कि कोई कार्रवाई करने पर, बच्चे की जगह की जानकारी मांगी जाएगी
Google Ads टीम की एक स्टडी के मुताबिक, जब एक उपयोगकर्ता को एक खास होटल साइट पर होने वाले कॉन्फ़्रेंस के लिए बॉस्टन में एक होटल का कमरा बुक करने के लिए कहा गया, तो उसे होम पेज पर "ढूंढें और बुक करें" कॉल-टू-ऐक्शन पर टैप करने के तुरंत बाद अपनी जीपीएस लोकेशन शेयर करने के लिए कहा गया.
कुछ मामलों में, उपयोगकर्ता परेशान हो गए, क्योंकि उन्हें यह समझ नहीं आ रहा था कि बोस्टन में कमरा बुक करने के दौरान, उन्हें सैन फ़्रांसिस्को में होटल क्यों दिखाए जा रहे थे.
एक बेहतर अनुभव यह पक्का करना है कि उपयोगकर्ताओं को यह पता चले कि आप उनसे उनकी जगह की जानकारी क्यों मांग रहे हैं. कोई जाना-माना साइनिफ़ायर जोड़ें, जो सभी डिवाइसों पर समान रूप से काम करता हो. जैसे, रेंज फ़ाइंडर या साफ़ तौर पर दिखने वाला कॉल-टू-ऐक्शन, जैसे कि “मेरे आस-पास ढूंढें”.
![रेंज फ़ाइंडर.](https://web.dev/static/articles/user-location/image/a-range-finder-318d55f8a5009.png?authuser=6&hl=hi)
!['मेरे आस-पास खोजें' बटन वाला फ़ॉर्म.](https://web.dev/static/articles/user-location/image/a-form-a-find-near-butt-9d544025fb506.png?authuser=6&hl=hi)
उपयोगकर्ताओं को उनकी जगह की जानकारी ऐक्सेस करने की अनुमति देने के लिए, धीरे से भेजें
उपयोगकर्ता जो कुछ भी कर रहे हैं आपके पास उसका ऐक्सेस नहीं है. आपको यह पता चल जाएगा कि उपयोगकर्ता अपनी जगह की जानकारी का ऐक्सेस कब नहीं देते, लेकिन यह आपको नहीं पता कि वे आपको ऐक्सेस कब देते हैं. आपको सिर्फ़ इतना पता है कि नतीजे दिखने पर आपको ऐक्सेस मिला है.
अगर आप चाहते हैं कि उपयोगकर्ता कार्रवाई पूरी करें, तो उन्हें कार्रवाई करने के लिए "नज़ब" करना एक अच्छा तरीका है.
हमारा सुझाव है कि:
- ऐसा टाइमर सेट करें जो कम समय के बाद ट्रिगर होता हो. पांच सेकंड का समय अच्छा होता है.
- अगर आपको गड़बड़ी का कोई मैसेज मिलता है, तो उपयोगकर्ता को कोई मैसेज दिखाएं.
- अगर आपको जवाब मिलता है, तो टाइमर बंद कर दें और नतीजे प्रोसेस करें.
- अगर टाइम आउट के बाद भी आपको अच्छा जवाब नहीं मिलता है, तो उपयोगकर्ता को एक सूचना दिखाएं.
- अगर जवाब बाद में आता है और सूचना अब भी मौजूद है, तो उसे स्क्रीन से हटा दें.
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);
};
ब्राउज़र समर्थन
ज़्यादातर ब्राउज़र अब Geolocation API के साथ काम करते हैं. हालांकि, बेहतर होगा कि कुछ भी करने से पहले, सहायता के लिए दोबारा जांच कर लें.
जियोलोकेशन ऑब्जेक्ट की मौजूदगी की जांच करके, यह आसानी से देखा जा सकता है कि यह डिवाइस के साथ काम करता है या नहीं:
// 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
पर कॉल करें.
गड़बड़ियों को आसानी से मैनेज करना
दुर्भाग्य से, सभी स्थान लुकअप सफल नहीं होते. शायद GPS मौजूद नहीं है
या उपयोगकर्ता ने अचानक स्थान की खोज बंद कर दी है. किसी गड़बड़ी की स्थिति में, 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 की मदद से जियोलोकेशन को एम्युलेट करें
![DevTools में सेंसर टैब.](https://web.dev/static/articles/user-location/image/the-sensor-tab-devtools-99f58f9bf1aac.png?authuser=6&hl=hi)
भौगोलिक जगह सेट अप कर लेने के बाद, आपको ये करना होगा:
- टेस्ट करके देखें कि आपका ऐप्लिकेशन अलग-अलग जियोलोकेशन पर कैसे काम करता है.
- पुष्टि करें कि जियोलोकेशन उपलब्ध न होने पर आपका ऐप्लिकेशन, ग्रेसफ़ुल तरीके से डिग्रेड करता है.
Chrome DevTools की मदद से ये दोनों काम किए जा सकते हैं.
- Chrome DevTools खोलें.
- कंसोल पैनल खोलने के लिए, Esc दबाएं.
- कंसोल ड्रॉर मेन्यू खोलें
- सेंसर टैब दिखाने के लिए, सेंसर विकल्प पर क्लिक करें.
यहां से, जगह को पहले से सेट किए गए किसी बड़े शहर में बदला जा सकता है, पसंद के मुताबिक कोई जगह डाली जा सकती है या जियोलोकेशन को जगह की जानकारी उपलब्ध नहीं है पर सेट करके, जियोलोकेशन को बंद किया जा सकता है.