ड्रॉप-इन संगतता
इस API का उपयोग करने के लिए आपको इसे सीखना नहीं पड़ता। सत्रह दूसरे जियोकोडिंग और IP लुकअप API के लिए हम एक ऐसा होस्ट चलाते हैं जो उस प्रदाता का अनुरोध फ़ॉर्मैट स्वीकार करता है और उस प्रदाता के रिस्पॉन्स फ़ॉर्मैट में जवाब देता है, जिसके पीछे हमारा डेटा होता है। यही बात उन JavaScript मैप लाइब्रेरी पर भी लागू होती है जो ये प्रदाता देते हैं। माइग्रेशन बस होस्टनेम बदलना है।
यह कैसे काम करता है
हर ड्रॉप-इन होस्ट किसी एक प्रदाता के सार्वजनिक HTTP इंटरफ़ेस का पूरा कार्यान्वयन है: वही पाथ, वही क्वेरी पैरामीटर, वही JSON फ़ील्ड नाम, नेस्टिंग और प्रकार, वही स्टेटस शब्दावली और वही त्रुटि ढाँचे। मान हमारे होते हैं। आपका क्लाइंट कोड, आपका पार्सिंग कोड और आपकी त्रुटि हैंडलिंग नहीं बदलती।
- होस्ट बदलें।
maps.googleapis.comबन जाता हैgapi.mygeocode.com,dev.virtualearth.netबन जाता हैbing.mygeocode.com, और इसी तरह आगे। नीचे की तालिका में हर जोड़ी है। - कुंजी बदलें, या उसे हटा दें। अपनी My Geocode कुंजी उस पैरामीटर में रखें जिसमें पुरानी कुंजी जाती थी (
key,apiKey,access_token,token...)। किसी भी पते को बिना कुंजी के प्रतिदिन 2,500 मुफ़्त अनुरोध मिलते हैं, और हर कुंजी के साथ उसके अपने 2,500 आते हैं, इसलिए माइग्रेट करने और टेस्ट करने में कुछ खर्च नहीं होता। - तुलना करें। दोनों होस्ट पर असली अनुरोधों का एक नमूना चलाएँ। डेटा अलग होने के कारण निर्देशांक थोड़े अलग होंगे; फ़ील्ड के नाम नहीं।
$ curl "https://maps.googleapis.com/maps/api/geocode/json?address=10+Downing+St+London&key=GOOGLE_KEY"$ curl "https://gapi.mygeocode.com/maps/api/geocode/json?address=10+Downing+St+London&key=MYGEOCODE_KEY"सभी ड्रॉप-इन होस्ट
हर होस्ट उसी इन्फ्रास्ट्रक्चर, उसी डेटा, उसी मुफ़्त कोटा और उन्हीं कीमतों पर चलता है जिन पर api.mygeocode.com चलता है। किसी प्रदाता के एंडपॉइंट की सूची, एक नमूना रिस्पॉन्स और ज्ञात अंतरों के लिए उस पर क्लिक करें।
| प्रदाता और लुकअप | मूल होस्ट | ड्रॉप-इन होस्ट | कुंजी पैरामीटर |
|---|---|---|---|
| Google Maps Platform फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, समय क्षेत्र, ऊँचाई | maps.googleapis.com | gapi.mygeocode.com | key |
| Bing Maps REST Services फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, समय क्षेत्र, ऊँचाई | dev.virtualearth.net | bing.mygeocode.com | key |
| HERE Geocoding and Search फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट | geocode.search.hereapi.comrevgeocode.search.hereapi.comautosuggest.search.hereapi.comautocomplete.search.hereapi.com | here.mygeocode.com | apiKey |
| Mapbox Geocoding फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट | api.mapbox.com | mapbox.mygeocode.com | access_token |
| Geocode.Farm फ़ॉरवर्ड, रिवर्स | api.geocode.farmwww.geocode.farm | farm.mygeocode.com | key |
| OpenStreetMap Nominatim फ़ॉरवर्ड, रिवर्स | nominatim.openstreetmap.org | osm.mygeocode.com | कोई नहीं; key या हेडर जोड़ें |
| OpenCage फ़ॉरवर्ड, रिवर्स | api.opencagedata.com | opencage.mygeocode.com | key |
| LocationIQ फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, समय क्षेत्र | us1.locationiq.comeu1.locationiq.com | locationiq.mygeocode.com | key |
| Geoapify फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, IP लुकअप | api.geoapify.com | geoapify.mygeocode.com | apiKey |
| TomTom Search फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट | api.tomtom.com | tomtom.mygeocode.com | key |
| MapQuest Geocoding फ़ॉरवर्ड, रिवर्स | www.mapquestapi.comopen.mapquestapi.com | mapquest.mygeocode.com | key |
| Geocodio फ़ॉरवर्ड, रिवर्स | api.geocod.io | geocodio.mygeocode.com | api_key |
| PositionStack फ़ॉरवर्ड, रिवर्स | api.positionstack.com | positionstack.mygeocode.com | access_key |
| ip-api.com IP लुकअप | ip-api.compro.ip-api.com | ipapi.mygeocode.com | key |
| ipinfo.io IP लुकअप | ipinfo.io | ipinfo.mygeocode.com | token |
| ipstack IP लुकअप | api.ipstack.com | ipstack.mygeocode.com | access_key |
| Open-Elevation Elevation | api.open-elevation.com | openelevation.mygeocode.com | कोई नहीं; key या हेडर जोड़ें |
JavaScript मैप लाइब्रेरी
प्रदाता बदलना ब्राउज़र में सबसे ज़्यादा तकलीफ़ देता है, जहाँ मैप, जियोकोडर विजेट और बिलिंग आपस में उलझे होते हैं। नीचे दी गई लाइब्रेरी के लिए, लाइब्रेरी खुद हमारे होस्ट से लोड होती है (या MapLibre, Mapbox GL और Leaflet के मामले में, कॉन्फ़िगरेशन के ज़रिए हमारे होस्ट की ओर मोड़ी जाती है) और अपना सार्वजनिक API बनाए रखती है: google.maps.Map, Microsoft.Maps.Map, H.Map और बाकी सब। टाइल, जियोकोडिंग, ऑटोकम्प्लीट और ऊँचाई हमसे आते हैं। मैप लोड और टाइल मुफ़्त हैं; जियोकोडिंग कॉल हमेशा की तरह गिनी जाती हैं।
| लाइब्रेरी | कहाँ से लोड होती है | इसके बजाय यहाँ से लोड करें | क्या काम करता रहता है |
|---|---|---|---|
| Google Maps का JavaScript API | maps.googleapis.com | gapi.mygeocode.com | हमारी टाइल्स के साथ google.maps.Map (roadmap, satellite और terrain मैप टाइप) |
| Bing Maps V8 वेब कंट्रोल | www.bing.com | bing.mygeocode.com | Microsoft.Maps.Map, Location, LocationRect, Pushpin, Infobox, Polyline, Polygon और Layer |
| Mapbox GL JS और mapbox-gl-geocoder | | mapbox.mygeocode.com | वेक्टर टाइल स्टाइल: streets, light, dark और outdoors, Mapbox स्टाइल स्पेसिफ़िकेशन में |
| Leaflet जियोकोडर प्लगइन | tile.openstreetmap.org | tiles.mygeocode.com | Leaflet Control Geocoder: nominatim, google, bing, mapbox, here, opencage, latLng और mapquest जियोकोडर, हर एक मेल खाते www.mygeocode.com होस्ट की ओर मोड़ा गया |
| JavaScript के लिए HERE Maps API | js.api.here.com | here.mygeocode.com | H.Map, H.map.Marker, H.map.Polyline, H.map.Polygon, H.map.Group |
| MapQuest.js | api.mqcdn.com | mapquest.mygeocode.com | L.mapquest.map और tileLayer (map, hybrid, satellite, light, dark) |
JavaScript ड्रॉप-इन पेज पर पहले और बाद के स्निपेट, हर लाइब्रेरी के लिए क्या शामिल है और क्या नहीं इसकी सूची, और टाइल व स्टाइल URL हैं।
कुंजी कहाँ जाती है
हर होस्ट कुंजी को उसी जगह स्वीकार करता है जहाँ मूल प्रदाता उसकी अपेक्षा करता है, और X-API-Key हेडर में भी। कुंजी वैकल्पिक है: हर पते से प्रतिदिन 2,500 अनुरोधों के लिए किसी कुंजी की ज़रूरत नहीं। मुफ़्त कुंजी पाने में एक मिनट लगता है और इससे क्रेडिट, पैकेज और उपयोग का इतिहास मिलता है। उपयोग के अनुसार भुगतान वाली कुंजी का उपयोग हर रोलिंग 24 घंटों में दो IP पतों से किया जा सकता है और Unlimited कुंजी का तीन से; ज़्यादा पतों के लिए ज़्यादा कुंजियाँ या पैकेज इस्तेमाल करें (ऑथेंटिकेशन देखें)।
| पैरामीटर | कौन उपयोग करता है |
|---|---|
key | Google Maps, Bing Maps, Geocode.Farm, OpenCage, LocationIQ, TomTom, MapQuest, ip-api (pro प्लान) |
apiKey | HERE, Geoapify |
access_token | Mapbox |
api_key | Geocodio |
access_key | PositionStack, ipstack |
token या Authorization: Bearer | ipinfo, HERE |
| कोई नहीं | Nominatim, Open-Elevation। क्वेरी में key=... जोड़ें या X-API-Key हेडर भेजें। |
ड्रॉप-इन होस्ट पर कोटा और त्रुटियाँ
दैनिक कोटा हर जगह जैसा ही है और api.mygeocode.com तथा हर ड्रॉप-इन होस्ट पर मिलाकर प्रति कुंजी गिना जाता है, या कोई कुंजी न भेजे जाने पर प्रति पता: प्रतिदिन 2,500 मुफ़्त, फिर क्रेडिट या Unlimited कुंजी। X-Quota-* और X-Key-IPs-* हेडर हर होस्ट पर भेजे जाते हैं, इसलिए बॉडी का फ़ॉर्मैट कुछ भी हो, आप हेडर से असली स्थिति पढ़ सकते हैं। बॉडी में सीमाएँ उसी तरह बताई जाती हैं जैसे प्रदाता बताता है:
| होस्ट | क्रेडिट खत्म (402) | गलत, गायब या IP सीमा वाली कुंजी | अमान्य अनुरोध |
|---|---|---|---|
| gapi.mygeocode.com | HTTP 200, "status": "OVER_QUERY_LIMIT" | "status": "REQUEST_DENIED" | "status": "INVALID_REQUEST" |
| bing.mygeocode.com | एनवेलप में "statusCode": 429 | "statusCode": 401, authenticationResultCode: InvalidCredentials | errorDetails के साथ "statusCode": 400 |
| here.mygeocode.com | HTTP 429, {"title": "Too Many Requests", "status": 429} | error_description के साथ HTTP 401 | title और cause के साथ HTTP 400 |
| mapbox.mygeocode.com | HTTP 429, {"message": "Rate limit exceeded"} | HTTP 401, {"message": "Not Authorized - Invalid Token"} | message के साथ HTTP 422 |
| osm.mygeocode.com | HTTP 429, {"error": {"code": 429, "message": "..."}} | लागू नहीं | HTTP 400, {"error": {"code": 400, "message": "..."}} |
| ipapi.mygeocode.com | HTTP 200, {"status": "fail", "message": "quota"} | {"status": "fail", "message": "invalid key"} | {"status": "fail", "message": "invalid query"} |
| अन्य | जैसा प्रदाता ने दस्तावेज़ में बताया है; हर होस्ट का पेज देखें |
क्या मेल खाता है और क्या नहीं
एक जैसा
- पाथ, मेथड और क्वेरी पैरामीटर जिन्हें प्रदाता दस्तावेज़ में बताता है।
- रिस्पॉन्स की संरचना: फ़ील्ड के नाम, नेस्टिंग, array, प्रकार, निर्देशांकों का क्रम (Mapbox का
[lon, lat]भी)। - स्टेटस और कॉन्फ़िडेंस शब्दावली (
ROOFTOP,High,houseNumber,EXACT_MATCH...), जो हमारेprecisionऔरconfidenceसे मैप की जाती है। - त्रुटि के ढाँचे, ताकि मौजूदा हैंडलिंग काम करती रहे।
- मूल्य और कोटा: ड्रॉप-इन होस्ट का उपयोग करने के लिए कुछ अतिरिक्त नहीं।
अलग
- डेटा। निर्देशांक, फ़ॉर्मैट की गई स्ट्रिंग और कॉन्फ़िडेंस मान हमारे हैं और मूल से अंक-दर-अंक मेल नहीं खाएँगे। मकान स्तर का कवरेज हर देश में अलग है; कवरेज देखें।
- पहचानकर्ता। Place ID हमारी हैं और स्थिर हैं, लेकिन उन्हें मूल प्रदाता को नहीं भेजा जा सकता।
- जियोकोडिंग, ऑटोकम्प्लीट, IP, समय क्षेत्र और ऊँचाई के बाहर की कोई भी चीज़: रूटिंग, जगहों का विवरण, फ़ोटो, ट्रैफ़िक, Street View। हर होस्ट का पेज बताता है कि क्या उपलब्ध नहीं है।
- कुंजियाँ: उपयोग के अनुसार भुगतान वाली कुंजी पर हर रोलिंग 24 घंटों में दो IP पते, Unlimited कुंजी पर तीन, बिल्कुल हमारे अपने एंडपॉइंट की तरह।
माइग्रेशन चेकलिस्ट
- अपने कोड और कॉन्फ़िगरेशन में प्रदाता का होस्टनेम खोजें। यह अक्सर एक से ज़्यादा जगह पर होता है: सर्वर कोड, मोबाइल ऐप, कोई CDN नियम, कोई कैश किया हुआ कॉन्फ़िग।
- इसे ऊपर की तालिका के ड्रॉप-इन होस्ट से बदलें। पाथ वही रखें।
- कुंजी को My Geocode कुंजी से बदलें। हर सर्वर के लिए एक कुंजी, या ज़्यादा से ज़्यादा दो सर्वरों के लिए एक, इस्तेमाल करें; उपयोग के अनुसार भुगतान वाली कुंजी हर रोलिंग 24 घंटों में दो IP पते स्वीकार करती है, Unlimited कुंजी तीन।
- अपना मौजूदा टेस्ट सूट चलाएँ। इसे बिना बदलाव के पास होना चाहिए। अगर कोई फ़ील्ड जिस पर आप निर्भर हैं, मौजूद नहीं है, तो ज्ञात कमियों के लिए होस्ट का पेज देखें और हमें बताएँ।
- दोनों होस्ट पर कुछ सौ असली अनुरोध दोबारा चलाएँ और निर्देशांकों तथा आपके द्वारा दिखाए जाने वाले फ़ील्ड की तुलना करें। जहाँ ड्रॉप-इन
precisionदिखाता है (location_type,accuracy,resultTypeआदि के रूप में), वहाँ उसे देखें। - अपना प्लान तय करने के लिए एक दिन तक
X-Quota-Usedपर नज़र रखें: प्रतिदिन लगभग 19,000 अनुरोधों से कम पर क्रेडिट, उससे ऊपर Unlimited कुंजी। - पुरानी बिलिंग रद्द करें।
प्रदाताओं के SDK
अधिकांश आधिकारिक क्लाइंट लाइब्रेरी कस्टम बेस URL स्वीकार करती हैं, इसलिए वे ड्रॉप-इन होस्ट के साथ भी काम करती हैं: Google Maps Services क्लाइंट (Python के लिए googlemaps, @googlemaps/google-maps-services-js), Mapbox SDK (origin विकल्प), HERE के REST क्लाइंट, ipinfo की लाइब्रेरी और geopy जैसे Nominatim रैपर (domain=)। इन्हें तालिका के होस्ट की ओर मोड़ें और अपनी My Geocode कुंजी वहाँ दें जहाँ प्रदाता की कुंजी जाती थी।
कोई प्रदाता जो सूची में नहीं है
जब प्रदाता का फ़ॉर्मैट दस्तावेज़ में उपलब्ध हो, तो एक होस्ट जोड़ना कुछ दिनों का काम है। अगर आप किसी ऐसी सेवा पर हैं जो यहाँ नहीं है, तो बताएँ कौन सी और आप प्रतिदिन लगभग कितने अनुरोध भेजते हैं। हाल में जोड़े गए सभी होस्ट उपयोगकर्ताओं के अनुरोध पर जोड़े गए थे।