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

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

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

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

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

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

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

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 आइटम में, text पैरामीटर की वैल्यू खाली नहीं होनी चाहिए.
    • क्वेरी में किसी जगह का नाम या पता होना चाहिए. जैसे, "Googleplex, Mountain View, CA", "Eiffel Tower, Paris".
    • कैटगरी के हिसाब से की गई सामान्य खोजें (जैसे, "न्यूयॉर्क में रेस्टोरेंट") या बिना किसी जगह के सामान्य चेन के नाम (जैसे, "Starbucks") काम नहीं करती हैं. इसलिए, हो सकता है कि आपको खोज के नतीजे न मिलें.
  • ResolveMapsUrls के लिए ज़रूरी शर्तें:
    • हर यूआरएल, Google Maps का मान्य यूआरएल होना चाहिए.
    • इन फ़ॉर्मैट का इस्तेमाल किया जा सकता है:
      • जगह का स्टैंडर्ड यूआरएल: https://www.google.com/maps/place/...
      • छोटा किया गया यूआरएल: https://maps.app.goo.gl/...
    • सामान्य क्वेरी पर आधारित Maps यूआरएल (जैसे, https://maps.google.com/?q=restaurant) और ऐसे यूआरएल जो किसी एक यूनीक जगह पर नहीं ले जाते हैं, काम नहीं करते.

आंशिक गड़बड़ियों को ठीक करना

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

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

  1. 1:1 अलाइनमेंट की गारंटी: ResolveNames के लिए दिखाए गए नतीजे या ResolveMapsUrls के लिए दिखाई गई इकाइयों की सूचियां, इनपुट सूची के साथ 1:1 मैप होती हैं.
  2. नतीजे नहीं मिलने पर खाली एलिमेंट: अगर इंडेक्स i पर मौजूद किसी आइटम का समाधान नहीं हो सका, तो नतीजों की सूची में इंडेक्स i पर एक खाली ऑब्जेक्ट {} मौजूद होगा.
  3. failedRequests Map: जवाब में failedRequests मैप शामिल है.
    • key, फ़ेल हुए आइटम का इंडेक्स है. यह इंडेक्स 0 से शुरू होता है. इसे JSON में स्ट्रिंग के तौर पर दिखाया जाता है.
    • value एक 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").

Curl का उदाहरण: समस्या हल हो गई

इस क्वेरी से "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 का उदाहरण: मिले-जुले नतीजे (कुछ अनुरोध पूरे नहीं हुए)

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

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).

Curl का उदाहरण: समस्या हल हो गई

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 का उदाहरण: मिले-जुले नतीजे (कुछ अनुरोध पूरे नहीं हुए)

एक मान्य जगह के यूआरएल और एक गलत/इस्तेमाल न किए जा सकने वाले यूआरएल को ठीक करना.

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."
    }
  }
}

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

एक अनुरोध में 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"
  }
}