Maps Tools Resolution API (एक्सपेरिमेंट के तौर पर उपलब्ध)

Maps Tools Resolution API, जगह के नामों और यूआरएल को Google Maps के प्लेस आईडी में बदलने के लिए, बैच प्रोसेसिंग एंडपॉइंट उपलब्ध कराता है.

एपीआई का ऐक्सेस और पुष्टि करना

पुष्टि करने के तरीके

ये एपीआई, एपीआई पासकोड और OAuth 2.0 क्रेडेंशियल, दोनों के साथ काम करते हैं:

1. एपीआई पासकोड

अनुरोध के यूआरएल में, Google Maps Platform का कोई मान्य एपीआई पासकोड जोड़कर या X-Goog-Api-Key हेडर में पासकोड डालकर, अनुरोधों की पुष्टि की जा सकती है:

https://mapstools.googleapis.com/v1alpha:resolveNames?key=YOUR_API_KEY

2. OAuth 2.0 का दायरा

OAuth ऑथराइज़ेशन का इस्तेमाल करने पर, ये दायरे काम करते हैं:

  • https://www.googleapis.com/auth/maps-platform.mapstools (सुझाया गया)

अनुरोध की पुष्टि करना और पाबंदियां

ज़्यादा लोड से बचने और तेज़ी से जवाब पाने के लिए, बैच में किए गए अनुरोधों की पुष्टि करना ज़रूरी है:

  • बैच के साइज़ की सीमा: दोनों एपीआई के लिए, हर अनुरोध में ज़्यादा से ज़्यादा 20 आइटम शामिल किए जा सकते हैं.
  • ResolveNames के लिए ज़रूरी शर्तें:
    • queries के हर आइटम में, टेक्स्ट पैरामीटर के लिए कोई वैल्यू तय की जानी चाहिए.
    • क्वेरी में, किसी खास जगह का नाम या पता होना चाहिए. जैसे, "Googleplex, Mountain View, CA", "Eiffel Tower, Paris".
    • कैटेगरी के हिसाब से की जाने वाली सामान्य खोजें (जैसे, "New York में रेस्टोरेंट") या बिना जगह के सामान्य चेन के नाम (जैसे, "Starbucks") काम नहीं करते. साथ ही, इनसे नतीजे नहीं मिल सकते.
  • ResolveMapsUrls के लिए ज़रूरी शर्तें:
    • हर यूआरएल, Google Maps का मान्य यूआरएल होना चाहिए.
    • ये फ़ॉर्मैट इस्तेमाल किए जा सकते हैं:
      • जगह का स्टैंडर्ड यूआरएल: https://www.google.com/maps/place/...
      • छोटा किया गया यूआरएल: https://maps.app.goo.gl/...
    • क्वेरी के आधार पर बनाए गए Google Maps के सामान्य यूआरएल (जैसे, https://maps.google.com/?q=restaurant) और ऐसे यूआरएल काम नहीं करते जो किसी एक जगह की ओर इशारा नहीं करते.

कुछ गड़बड़ियों को ठीक करना

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

जवाब को समझने का तरीका

  1. 1:1 अलाइनमेंट की गारंटी: लौटाए गए नतीजे (ResolveNames के लिए) या इकाइयां (ResolveMapsUrls के लिए) की सूचियां, इनपुट सूची के साथ 1:1 मैप होती हैं.
  2. गड़बड़ियों के लिए खाली एलिमेंट: अगर इंडेक्स i पर मौजूद किसी आइटम के लिए नतीजे नहीं मिलते हैं, तो नतीजों की सूची में इंडेक्स i पर एक खाली ऑब्जेक्ट {} शामिल होगा.
  3. failedRequests मैप: जवाब में, failedRequests मैप शामिल होता है.
    • कुंजी, गड़बड़ी वाले आइटम का 0-आधारित इंडेक्स होती है. इसे JSON में स्ट्रिंग के तौर पर दिखाया जाता है.
    • वैल्यू, google.rpc.Status ऑब्जेक्ट होती है. इसमें गड़बड़ी का खास कोड (gRPC/HTTP के स्टैंडर्ड स्टेटस से) और गड़बड़ी की वजह बताने वाला विस्तृत मैसेज शामिल होता है.

टॉप-लेवल की गड़बड़ियां

टॉप-लेवल की एचटीटीपी गड़बड़ी (जैसे, 400 Bad Request) तब दिखती है, जब अनुरोध की पुष्टि नहीं हो पाती. जैसे, 20 से ज़्यादा आइटम पास करने पर या ज़रूरी फ़ील्ड मौजूद न होने पर.

एपीआई की खास जानकारी और कर्ल के उदाहरण

1. ResolveNames API

तरीका: POST

https://mapstools.googleapis.com/v1alpha:resolveNames

अनुरोध के मुख्य भाग का फ़ॉर्मैट

{
  "queries": [
    { "text": "string" }
  ],
  "locationBias": {
    "viewport": {
      "low": { "latitude": number, "longitude": number },
      "high": { "latitude": number, "longitude": number }
    }
  },
  "regionCode": "string"
}
  • queries (ज़रूरी है): नतीजे पाने के लिए, क्वेरी की बार-बार इस्तेमाल की जाने वाली सूची. इसमें ज़्यादा से ज़्यादा 20 क्वेरी शामिल की जा सकती हैं.
  • locationBias (ज़रूरी नहीं): व्यू पोर्ट का बाउंडिंग बॉक्स, ताकि नतीजे किसी स्थानीय इलाके के हिसाब से दिखाए जा सकें.
  • regionCode (ज़रूरी नहीं): नतीजों को किसी देश/इलाके के हिसाब से दिखाने के लिए, CLDR देश का कोड. जैसे, "US", "FR".

कर्ल का उदाहरण: नतीजे मिलने पर

इस क्वेरी से "Googleplex" और "Eiffel Tower" के नतीजे मिलते हैं.

curl -X POST \
-H "Content-Type: application/json" \
-d '{
  "queries": [
    { "text": "Googleplex, Mountain View, CA" },
    { "text": "Eiffel Tower, Paris" }
  ]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveNames?key=KEY"
JSON का रिस्पॉन्स
{
  "results": [
    {
      "entity": {
        "place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
      },
      "confidence": "HIGH"
    },
    {
      "entity": {
        "place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
      },
      "confidence": "HIGH"
    }
  ]
}

कर्ल का उदाहरण: मिले-जुले नतीजे (कुछ गड़बड़ियां)

इस उदाहरण में, पहला आइटम ऐसा टेक्स्ट है जिसके लिए नतीजे नहीं मिल सकते. वहीं, दूसरा आइटम किसी मान्य जगह का नाम है.

curl -X POST \
-H "Content-Type: application/json" \
-d '{
  "queries": [
    { "text": "This is not a real place name at all 123456789" },
    { "text": "Eiffel Tower, Paris" }
  ]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveNames?key=KEY"
JSON का रिस्पॉन्स
{
  "results": [
    {},
    {
      "entity": {
        "place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
      },
      "confidence": "HIGH"
    }
  ],
  "failedRequests": {
    "0": {
      "code": 5,
      "message": "Place not found."
    }
  }
}

2. ResolveMapsUrls API

तरीका: POST

https://mapstools.googleapis.com/v1alpha:resolveMapsUrls

अनुरोध के मुख्य भाग का फ़ॉर्मैट

{
  "urls": [
    "string"
  ]
}
  • urls (ज़रूरी है): नतीजे पाने के लिए, Google Maps के यूआरएल स्ट्रिंग की बार-बार इस्तेमाल की जाने वाली सूची. इसमें ज़्यादा से ज़्यादा 20 यूआरएल शामिल किए जा सकते हैं.

कर्ल का उदाहरण: नतीजे मिलने पर

Google Maps पर किसी जगह के स्टैंडर्ड लिंक के लिए नतीजे पाना.

curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba024255ad8f:0x6ca26666619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6"
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
JSON का रिस्पॉन्स
{
  "entities": [
    {
      "place": "places/ChIJj61VQgK6j4AR4GeTYWZmomw"
    }
  ]
}

कर्ल का उदाहरण: मिले-जुले नतीजे (कुछ गड़बड़ियां)

किसी मान्य जगह के यूआरएल और किसी गलत फ़ॉर्मैट वाले/काम न करने वाले यूआरएल के लिए नतीजे पाना.

curl -X POST \
-H "Content-Type: application/json" \
-d '{
  "urls": [
    "https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba024255ad8f:0x6ca26666619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6",
    "https://www.google.com/not-a-place"
  ]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
JSON का रिस्पॉन्स
{
  "entities": [
    {
      "place": "places/ChIJj61VQgK6j4AR4GeTYWZmomw"
    },
    {}
  ],
  "failedRequests": {
    "1": {
      "code": 3,
      "message": "Invalid URL."
    }
  }
}

कर्ल का उदाहरण: पुष्टि नहीं हो पाने पर

एक ही अनुरोध में 20 से ज़्यादा यूआरएल पास करने की कोशिश करना.

python3 -c 'import json; print(json.dumps({"urls": ["https://www.google.com/maps/place/Googleplex"] * 21}))' | \
curl -X POST \
-H "Content-Type: application/json" \
-d @- \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
JSON का रिस्पॉन्स
{
  "error": {
    "code": 400,
    "message": "Request contains more than 20 URLs.",
    "status": "INVALID_ARGUMENT"
  }
}