ड्रॉप-इन संगतता

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

यह कैसे काम करता है

हर ड्रॉप-इन होस्ट किसी एक प्रदाता के सार्वजनिक HTTP इंटरफ़ेस का पूरा कार्यान्वयन है: वही पाथ, वही क्वेरी पैरामीटर, वही JSON फ़ील्ड नाम, नेस्टिंग और प्रकार, वही स्टेटस शब्दावली और वही त्रुटि ढाँचे। मान हमारे होते हैं। आपका क्लाइंट कोड, आपका पार्सिंग कोड और आपकी त्रुटि हैंडलिंग नहीं बदलती।

  1. होस्ट बदलें। maps.googleapis.com बन जाता है gapi.mygeocode.com, dev.virtualearth.net बन जाता है bing.mygeocode.com, और इसी तरह आगे। नीचे की तालिका में हर जोड़ी है।
  2. कुंजी बदलें, या उसे हटा दें। अपनी My Geocode कुंजी उस पैरामीटर में रखें जिसमें पुरानी कुंजी जाती थी (key, apiKey, access_token, token...)। किसी भी पते को बिना कुंजी के प्रतिदिन 2,500 मुफ़्त अनुरोध मिलते हैं, और हर कुंजी के साथ उसके अपने 2,500 आते हैं, इसलिए माइग्रेट करने और टेस्ट करने में कुछ खर्च नहीं होता।
  3. तुलना करें। दोनों होस्ट पर असली अनुरोधों का एक नमूना चलाएँ। डेटा अलग होने के कारण निर्देशांक थोड़े अलग होंगे; फ़ील्ड के नाम नहीं।
पहले
$ 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.comgapi.mygeocode.comkey
Bing Maps REST Services
फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, समय क्षेत्र, ऊँचाई
dev.virtualearth.netbing.mygeocode.comkey
HERE Geocoding and Search
फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट
geocode.search.hereapi.com
revgeocode.search.hereapi.com
autosuggest.search.hereapi.com
autocomplete.search.hereapi.com
here.mygeocode.comapiKey
Mapbox Geocoding
फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट
api.mapbox.commapbox.mygeocode.comaccess_token
Geocode.Farm
फ़ॉरवर्ड, रिवर्स
api.geocode.farm
www.geocode.farm
farm.mygeocode.comkey
OpenStreetMap Nominatim
फ़ॉरवर्ड, रिवर्स
nominatim.openstreetmap.orgosm.mygeocode.comकोई नहीं; key या हेडर जोड़ें
OpenCage
फ़ॉरवर्ड, रिवर्स
api.opencagedata.comopencage.mygeocode.comkey
LocationIQ
फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, समय क्षेत्र
us1.locationiq.com
eu1.locationiq.com
locationiq.mygeocode.comkey
Geoapify
फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट, IP लुकअप
api.geoapify.comgeoapify.mygeocode.comapiKey
TomTom Search
फ़ॉरवर्ड, रिवर्स, ऑटोकम्प्लीट
api.tomtom.comtomtom.mygeocode.comkey
MapQuest Geocoding
फ़ॉरवर्ड, रिवर्स
www.mapquestapi.com
open.mapquestapi.com
mapquest.mygeocode.comkey
Geocodio
फ़ॉरवर्ड, रिवर्स
api.geocod.iogeocodio.mygeocode.comapi_key
PositionStack
फ़ॉरवर्ड, रिवर्स
api.positionstack.compositionstack.mygeocode.comaccess_key
ip-api.com
IP लुकअप
ip-api.com
pro.ip-api.com
ipapi.mygeocode.comkey
ipinfo.io
IP लुकअप
ipinfo.ioipinfo.mygeocode.comtoken
ipstack
IP लुकअप
api.ipstack.comipstack.mygeocode.comaccess_key
Open-Elevation
Elevation
api.open-elevation.comopenelevation.mygeocode.comकोई नहीं; key या हेडर जोड़ें

JavaScript मैप लाइब्रेरी

प्रदाता बदलना ब्राउज़र में सबसे ज़्यादा तकलीफ़ देता है, जहाँ मैप, जियोकोडर विजेट और बिलिंग आपस में उलझे होते हैं। नीचे दी गई लाइब्रेरी के लिए, लाइब्रेरी खुद हमारे होस्ट से लोड होती है (या MapLibre, Mapbox GL और Leaflet के मामले में, कॉन्फ़िगरेशन के ज़रिए हमारे होस्ट की ओर मोड़ी जाती है) और अपना सार्वजनिक API बनाए रखती है: google.maps.Map, Microsoft.Maps.Map, H.Map और बाकी सब। टाइल, जियोकोडिंग, ऑटोकम्प्लीट और ऊँचाई हमसे आते हैं। मैप लोड और टाइल मुफ़्त हैं; जियोकोडिंग कॉल हमेशा की तरह गिनी जाती हैं।

लाइब्रेरीकहाँ से लोड होती हैइसके बजाय यहाँ से लोड करेंक्या काम करता रहता है
Google Maps का JavaScript APImaps.googleapis.comgapi.mygeocode.comहमारी टाइल्स के साथ google.maps.Map (roadmap, satellite और terrain मैप टाइप)
Bing Maps V8 वेब कंट्रोलwww.bing.combing.mygeocode.comMicrosoft.Maps.Map, Location, LocationRect, Pushpin, Infobox, Polyline, Polygon और Layer
Mapbox GL JS और mapbox-gl-geocodermapbox.mygeocode.comवेक्टर टाइल स्टाइल: streets, light, dark और outdoors, Mapbox स्टाइल स्पेसिफ़िकेशन में
Leaflet जियोकोडर प्लगइनtile.openstreetmap.orgtiles.mygeocode.comLeaflet Control Geocoder: nominatim, google, bing, mapbox, here, opencage, latLng और mapquest जियोकोडर, हर एक मेल खाते www.mygeocode.com होस्ट की ओर मोड़ा गया
JavaScript के लिए HERE Maps APIjs.api.here.comhere.mygeocode.comH.Map, H.map.Marker, H.map.Polyline, H.map.Polygon, H.map.Group
MapQuest.jsapi.mqcdn.commapquest.mygeocode.comL.mapquest.map और tileLayer (map, hybrid, satellite, light, dark)

JavaScript ड्रॉप-इन पेज पर पहले और बाद के स्निपेट, हर लाइब्रेरी के लिए क्या शामिल है और क्या नहीं इसकी सूची, और टाइल व स्टाइल URL हैं।

कुंजी कहाँ जाती है

हर होस्ट कुंजी को उसी जगह स्वीकार करता है जहाँ मूल प्रदाता उसकी अपेक्षा करता है, और X-API-Key हेडर में भी। कुंजी वैकल्पिक है: हर पते से प्रतिदिन 2,500 अनुरोधों के लिए किसी कुंजी की ज़रूरत नहीं। मुफ़्त कुंजी पाने में एक मिनट लगता है और इससे क्रेडिट, पैकेज और उपयोग का इतिहास मिलता है। उपयोग के अनुसार भुगतान वाली कुंजी का उपयोग हर रोलिंग 24 घंटों में दो IP पतों से किया जा सकता है और Unlimited कुंजी का तीन से; ज़्यादा पतों के लिए ज़्यादा कुंजियाँ या पैकेज इस्तेमाल करें (ऑथेंटिकेशन देखें)।

पैरामीटरकौन उपयोग करता है
keyGoogle Maps, Bing Maps, Geocode.Farm, OpenCage, LocationIQ, TomTom, MapQuest, ip-api (pro प्लान)
apiKeyHERE, Geoapify
access_tokenMapbox
api_keyGeocodio
access_keyPositionStack, ipstack
token या Authorization: Beareripinfo, HERE
कोई नहींNominatim, Open-Elevation। क्वेरी में key=... जोड़ें या X-API-Key हेडर भेजें।

ड्रॉप-इन होस्ट पर कोटा और त्रुटियाँ

दैनिक कोटा हर जगह जैसा ही है और api.mygeocode.com तथा हर ड्रॉप-इन होस्ट पर मिलाकर प्रति कुंजी गिना जाता है, या कोई कुंजी न भेजे जाने पर प्रति पता: प्रतिदिन 2,500 मुफ़्त, फिर क्रेडिट या Unlimited कुंजी। X-Quota-* और X-Key-IPs-* हेडर हर होस्ट पर भेजे जाते हैं, इसलिए बॉडी का फ़ॉर्मैट कुछ भी हो, आप हेडर से असली स्थिति पढ़ सकते हैं। बॉडी में सीमाएँ उसी तरह बताई जाती हैं जैसे प्रदाता बताता है:

होस्टक्रेडिट खत्म (402)गलत, गायब या IP सीमा वाली कुंजीअमान्य अनुरोध
gapi.mygeocode.comHTTP 200, "status": "OVER_QUERY_LIMIT""status": "REQUEST_DENIED""status": "INVALID_REQUEST"
bing.mygeocode.comएनवेलप में "statusCode": 429"statusCode": 401, authenticationResultCode: InvalidCredentialserrorDetails के साथ "statusCode": 400
here.mygeocode.comHTTP 429, {"title": "Too Many Requests", "status": 429}error_description के साथ HTTP 401title और cause के साथ HTTP 400
mapbox.mygeocode.comHTTP 429, {"message": "Rate limit exceeded"}HTTP 401, {"message": "Not Authorized - Invalid Token"}message के साथ HTTP 422
osm.mygeocode.comHTTP 429, {"error": {"code": 429, "message": "..."}}लागू नहींHTTP 400, {"error": {"code": 400, "message": "..."}}
ipapi.mygeocode.comHTTP 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 कुंजी पर तीन, बिल्कुल हमारे अपने एंडपॉइंट की तरह।

माइग्रेशन चेकलिस्ट

  1. अपने कोड और कॉन्फ़िगरेशन में प्रदाता का होस्टनेम खोजें। यह अक्सर एक से ज़्यादा जगह पर होता है: सर्वर कोड, मोबाइल ऐप, कोई CDN नियम, कोई कैश किया हुआ कॉन्फ़िग।
  2. इसे ऊपर की तालिका के ड्रॉप-इन होस्ट से बदलें। पाथ वही रखें।
  3. कुंजी को My Geocode कुंजी से बदलें। हर सर्वर के लिए एक कुंजी, या ज़्यादा से ज़्यादा दो सर्वरों के लिए एक, इस्तेमाल करें; उपयोग के अनुसार भुगतान वाली कुंजी हर रोलिंग 24 घंटों में दो IP पते स्वीकार करती है, Unlimited कुंजी तीन।
  4. अपना मौजूदा टेस्ट सूट चलाएँ। इसे बिना बदलाव के पास होना चाहिए। अगर कोई फ़ील्ड जिस पर आप निर्भर हैं, मौजूद नहीं है, तो ज्ञात कमियों के लिए होस्ट का पेज देखें और हमें बताएँ
  5. दोनों होस्ट पर कुछ सौ असली अनुरोध दोबारा चलाएँ और निर्देशांकों तथा आपके द्वारा दिखाए जाने वाले फ़ील्ड की तुलना करें। जहाँ ड्रॉप-इन precision दिखाता है (location_type, accuracy, resultType आदि के रूप में), वहाँ उसे देखें।
  6. अपना प्लान तय करने के लिए एक दिन तक X-Quota-Used पर नज़र रखें: प्रतिदिन लगभग 19,000 अनुरोधों से कम पर क्रेडिट, उससे ऊपर Unlimited कुंजी।
  7. पुरानी बिलिंग रद्द करें।

प्रदाताओं के SDK

अधिकांश आधिकारिक क्लाइंट लाइब्रेरी कस्टम बेस URL स्वीकार करती हैं, इसलिए वे ड्रॉप-इन होस्ट के साथ भी काम करती हैं: Google Maps Services क्लाइंट (Python के लिए googlemaps, @googlemaps/google-maps-services-js), Mapbox SDK (origin विकल्प), HERE के REST क्लाइंट, ipinfo की लाइब्रेरी और geopy जैसे Nominatim रैपर (domain=)। इन्हें तालिका के होस्ट की ओर मोड़ें और अपनी My Geocode कुंजी वहाँ दें जहाँ प्रदाता की कुंजी जाती थी।

कोई प्रदाता जो सूची में नहीं है

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