गाइड

लैंडिंग पेज पर स्टोर से दूरी का कैलकुलेटर जोड़ें

"आपकी सबसे नज़दीकी लोकेशन मुझसे कितनी दूर है" एक ऐसा सवाल है जिसका जवाब लैंडिंग पेज सीधे दे सकता है, बजाय इसके कि विज़िटर को खुद पता लगाने के लिए किसी अलग मैप पर भेजा जाए।

विज़िटर के इनपुट की जियोकोडिंग

विज़िटर किसी साधारण फ़ॉर्म फ़ील्ड में जो भी पता या पिन कोड टाइप करे, उसे लेकर जियोकोड करें।

GET /v1/forward?q=350 Fifth Avenue, New York&limit=1
{
  "status": "ok",
  "results": [
    {"formatted": "350 Fifth Avenue, New York, NY", "lat": 40.7484, "lon": -73.9857, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "es234", "components": {}}
  ]
}

हर स्टोर तक दूरी की गणना

विज़िटर के निर्देशांक मिल जाने के बाद, एक मानक हैवरसाइन फ़ॉर्मूले का उपयोग करके उस बिंदु से अपनी हर स्टोर लोकेशन तक सीधी रेखा की दूरी निकालें, जिन्हें आप अपने कोड में निर्देशांकों की एक तय सूची के रूप में रखते हैं।

for store in stores:
    store.distance_km = haversine(store.lat, store.lon, 40.7484, -73.9857)

परिणाम दिखाना

अपनी स्टोर सूची को निकाली गई दूरी के अनुसार क्रमबद्ध करें और सबसे नज़दीकी एक, या कुछ सबसे नज़दीकी स्टोर, दूरी के आँकड़े के साथ दिखाएँ। चूँकि यह सब फ़ॉर्म सबमिट होने पर सर्वर साइड पर चलता है, इसलिए किसी क्लाइंट-साइड स्क्रिप्ट की ज़रूरत नहीं है, पेज अगली बार लोड होने पर बस परिणाम रेंडर कर देता है।

दूसरा उदाहरण: एक के बजाय तीन सबसे नज़दीकी दिखाना

केवल एक सबसे नज़दीकी स्टोर बताने के बजाय, पूरी सूची को क्रमबद्ध करके शीर्ष तीन दिखाने से विज़िटर को वास्तविक विकल्प मिलता है, जो खास तौर पर तब उपयोगी है जब सबसे नज़दीकी स्टोर का समय या स्टॉक थोड़े दूर वाले उस स्टोर से अलग हो जिसे विज़िटर वास्तव में पसंद करेगा। इसकी कोई अतिरिक्त लागत नहीं है, क्योंकि क्रमबद्धता उसी एक अनुरोध से मिले उन्हीं निर्देशांकों पर होती है।

कम कॉन्फ़िडेंस वाले मिलान को संभालना

अगर विज़िटर के टाइप किए पते का कॉन्फ़िडेंस स्कोर कम आता है, तो दूरी की गणना चलाने से पहले फ़ॉर्मेट किया गया परिणाम पुष्टि के लिए उन्हें वापस दिखाएँ, बजाय इसके कि उनके मतलब के अनुमान के आधार पर पूरे भरोसे से कोई दूरी बता दी जाए।

एक आम गलती जिससे बचना चाहिए

ऐसी क्वेरी पर दूरी की गणना न चलाएँ जो विज़िटर के संभावित इरादे से कहीं अधिक मोटी सटीकता पर रिज़ॉल्व हुई हो, जैसे केवल शहर या क्षेत्र का नाम जो "locality" प्रकार के परिणाम से मिलता हो, जब तक कि आप पहले विज़िटर को यह न बता दें। विज़िटर की वास्तविक गली के बजाय शहर के केंद्र से निकाली गई दूरी किसी भी दिशा में कई किलोमीटर गलत हो सकती है, जो यह बदलने के लिए काफ़ी है कि कौन सा स्टोर सबसे नज़दीकी दिखता है। भरोसेमंद लगने वाला दूरी का आँकड़ा बताने से पहले precision फ़ील्ड जाँचने से मोटे अनुमान को सटीक आँकड़े की तरह पेश करने से बचा जा सकता है।

अस्पष्ट मिलानों में से विज़िटर को चुनने देना

जियोकोडिंग अनुरोध पर limit को 1 से ऊपर करने से, जब टाइप किया गया इनपुट सचमुच अस्पष्ट हो, जैसे ऐसी गली का नाम जो एक से अधिक कस्बों में है, तो कई संभावित मिलान लौटते हैं। दूरी की गणना चलाने से पहले वह छोटी सूची दिखाना और विज़िटर को सही विकल्प चुनने देना, चुपचाप उस उम्मीदवार को मान लेने से बेहतर परिणाम है जो संयोग से पहले स्थान पर आया।

इसकी लागत क्या है

हर गणना एक जियोकोडिंग अनुरोध है, चाहे आप मिले निर्देशांकों की तुलना कितने भी स्टोर से करें, क्योंकि विज़िटर के निर्देशांक मिल जाने के बाद स्टोर सूची के लिए किसी और API कॉल की ज़रूरत नहीं होती। अच्छे-खासे ट्रैफ़िक वाला लैंडिंग पेज भी इस फ़ीचर का उपयोग प्रति विज़िटर गणना एक अनुरोध की दर से करता है, जो हर कुंजी के साथ शामिल 2,500 प्रतिदिन मुफ़्त अनुरोधों के भीतर आराम से रहता है।

ऐसा दूरी कैलकुलेटर एक खास और आम सवाल का जवाब सीधे पेज पर देता है, बजाय इसके कि विज़िटर को पता लगाने के लिए कहीं और भेजा जाए। अनुरोध के सभी पैरामीटर फ़ॉरवर्ड जियोकोडिंग दस्तावेज़ में हैं।