जगह के आईडी

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript Web Service
यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

परिचय

जगह के आईडी, Google Places के डेटाबेस और Google Maps में किसी जगह की अलग पहचान के लिए इस्तेमाल होते हैं. जगह के आईडी, Maps API के लिए किए गए इन अनुरोधों में स्वीकार किए जाते हैं:

  • Geocoding API और Maps JavaScript API की जियोकोडिंग सेवा में, किसी जगह के आईडी के लिए पता वापस पाना.
  • Routes API और Directions API (लेगसी) में शुरुआती जगह, मंज़िल, और रास्ते में पड़ने वाली जगहों के बारे में जानकारी देना. साथ ही, Maps JavaScript API (लेगसी) की दिशा बताने वाली सेवा में भी यह जानकारी देना.
  • Routes API, Distance Matrix API (लेगसी), और Distance Matrix Service, Maps JavaScript API (लेगसी) में शुरुआत और मंज़िल की जगह की जानकारी देना.
  • Places API (नया), Places SDK for Android (नया), Places SDK for iOS (नया), और जगहों की लाइब्रेरी में, जगह की जानकारी हासिल करना.
  • Maps Embed API में, जगह के आईडी के पैरामीटर इस्तेमाल करना.
  • Maps के यूआरएल में सर्च क्वेरी वापस पाना.
  • Roads API में स्पीड लिमिट दिखाना.
  • सीमाओं के लिए डेटा-ड्रिवन स्टाइलिंग में, सीमा वाले पॉलीगॉन ढूंढना और उन्हें स्टाइल करना.

किसी जगह का आईडी ढूंढना

क्या आपको किसी जगह का आईडी चाहिए? किसी जगह को खोजने और उसका जगह का आईडी पाने के लिए, यहां दिए गए प्लेस आईडी फ़ाइंडर का इस्तेमाल करें:

इसके अलावा, Maps JavaScript API के दस्तावेज़ में मौजूद कोड की मदद से, जगह का आईडी ढूंढने वाला टूल देखा जा सकता है.

खास जानकारी

जगह का आईडी, टेक्स्ट वाला आइडेंटिफ़ायर होता है. इससे किसी जगह की खास तौर पर पहचान की जाती है. आइडेंटिफ़ायर की लंबाई अलग-अलग हो सकती है. जगह के आईडी की कोई ज़्यादा से ज़्यादा लंबाई तय नहीं है. उदाहरण:

  • ChIJgUbEo8cfqokR5lP9_Wh_DaM
  • GhIJQWDl0CIeQUARxks3icF8U8A
  • EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN
  • EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0E
  • IhoSGAoUChIJ0U6OoscfqokR6P225pApu2UQDQ

जगह के आईडी, ज़्यादातर जगहों के लिए उपलब्ध हैं. इनमें कारोबार, लैंडमार्क, पार्क, और चौराहे शामिल हैं. ऐसा हो सकता है कि एक ही जगह या इलाके के लिए, अलग-अलग जगह के आईडी मौजूद हों. जगह के आईडी समय के साथ बदल सकते हैं.

Places API और Google Maps Platform के कई एपीआई के लिए, एक ही जगह के आईडी का इस्तेमाल किया जा सकता है. उदाहरण के लिए, एक ही जगह के आईडी का इस्तेमाल करके, Places API, Maps JavaScript API, Geocoding API, Maps Embed API, और Roads API में किसी जगह का रेफ़रंस दिया जा सकता है.

जगह के आईडी का इस्तेमाल करके, जगह की जानकारी पाना

जगह के आईडी इस्तेमाल करने का एक सामान्य तरीका है, Places API या Maps JavaScript API में Places लाइब्रेरी का इस्तेमाल करके किसी जगह को खोजना. इसके बाद, जगह की जानकारी पाने के लिए, मिले हुए प्लेस आईडी का इस्तेमाल करें. जगह के आईडी को सेव किया जा सकता है. साथ ही, इसका इस्तेमाल करके बाद में उसी जगह की जानकारी वापस पाई जा सकती है. इस दस्तावेज़ में आगे, जगह के आईडी सेव करने के बारे में पढ़ें.

Places SDK for Android (नया) का इस्तेमाल करने का उदाहरण

Places SDK for Android (New) में, किसी जगह का आईडी पाने के लिए, Place.getId() को कॉल करें. Place Autocomplete (Legacy) सेवा, सर्च क्वेरी और फ़िल्टर से मैच होने वाली हर जगह के लिए, जगह का आईडी भी दिखाती है. जगह के आईडी का इस्तेमाल करके, Place ऑब्जेक्ट को बाद में फिर से पाएं.

आईडी के हिसाब से जगह की जानकारी पाने के लिए, PlacesClient.fetchPlace() को कॉल करें और FetchPlaceRequest पास करें.

एपीआई, Task में FetchPlaceResponse दिखाता है. FetchPlaceResponse में, दिए गए जगह के आईडी से मेल खाने वाला Place ऑब्जेक्ट होता है.

यहां दिए गए कोड के उदाहरण में, किसी जगह की जानकारी पाने के लिए fetchPlace() को कॉल करने का तरीका बताया गया है.

Kotlin

// Define a Place ID.
val placeId = PlaceIdProvider.getRandomPlaceId()

// Specify the fields to return.
val placeFields = listOf(
    Place.Field.ID,
    Place.Field.DISPLAY_NAME,
    Place.Field.FORMATTED_ADDRESS,
    Place.Field.LOCATION
)

// Construct a request object, passing the place ID and fields array.
val request = FetchPlaceRequest.newInstance(placeId, placeFields)

placesClient.fetchPlace(request)
    .addOnSuccessListener { response: FetchPlaceResponse ->
        val place = response.place

        val name = place.displayName
        val address = place.formattedAddress
        val location = place.location

        binding.placeName.text = name
        binding.placeAddress.text = address
        if (location != null) {
            binding.placeLocation.text = getString(
                R.string.place_location, location.latitude, location.longitude
            )
        } else {
            binding.placeLocation.text = null
        }
        Log.i(TAG, "Place found: ${place.displayName}")
    }.addOnFailureListener { exception: Exception ->
        if (exception is ApiException) {
            val message = getString(R.string.place_not_found, exception.message)
            binding.placeName.text = message
            Log.e(TAG, "Place not found: ${exception.message}")
            val statusCode = exception.statusCode
            TODO("Handle error with given status code")
        }
    }

      

Java

// Define a Place ID.
final String placeId = PlaceIdProvider.getRandomPlaceId();

// Specify the fields to return.
final List<Place.Field> placeFields =
        Arrays.asList(
                Place.Field.ID,
                Place.Field.DISPLAY_NAME,
                Place.Field.FORMATTED_ADDRESS,
                Place.Field.LOCATION
        );

// Construct a request object, passing the place ID and fields array.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);

placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
    Place place = response.getPlace();

    final CharSequence name = place.getDisplayName();
    final CharSequence address = place.getFormattedAddress();
    final LatLng location = place.getLocation();

    binding.placeName.setText(name);
    binding.placeAddress.setText(address);
    if (location != null) {
        binding.placeLocation.setText(
                getString(R.string.place_location, location.latitude, location.longitude)
        );
    } else {
        binding.placeLocation.setText(null);
    }

    Log.i(TAG, "Place found: " + place.getDisplayName());
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException apiException) {
        final String message = getString(R.string.place_not_found, apiException.getMessage());
        binding.placeName.setText(message);
        Log.e(TAG, "Place not found: " + exception.getMessage());
        final int statusCode = apiException.getStatusCode();
        // TODO: Handle error with given status code.
    }
});

      

बाद में इस्तेमाल करने के लिए, जगह के आईडी सेव करना

जगह के आईडी पर, Google Maps Platform की सेवा की शर्तों के सेक्शन 3.2.3(b) में बताई गई, कैश मेमोरी में सेव करने से जुड़ी पाबंदियां लागू नहीं होती हैं. इसलिए, जगह के आईडी की वैल्यू को बाद में इस्तेमाल करने के लिए सेव किया जा सकता है.

सेव किए गए जगह के आईडी रीफ़्रेश करना

Google Maps के डेटाबेस में अपडेट होने की वजह से, जगह के आईडी बदल सकते हैं. इसलिए, Google का सुझाव है कि अगर जगह के आईडी 12 महीने से ज़्यादा पुराने हैं, तो उन्हें रीफ़्रेश करें. Place Details अनुरोध करके, बिना किसी शुल्क के जगह के आईडी रीफ़्रेश किए जा सकते हैं. इसके लिए, fields पैरामीटर में सिर्फ़ Place.Field.ID फ़ील्ड तय करें.

इस कॉल से, Places Details - ID Refresh एसकेयू ट्रिगर होता है.

जगह के आईडी इस्तेमाल करते समय गड़बड़ी के कोड

INVALID_REQUEST

INVALID_REQUEST स्टेटस कोड से पता चलता है कि जगह का आईडी मान्य नहीं है. जगह का आईडी छोटा कर दिया गया हो या उसमें किसी तरह का बदलाव किया गया हो और वह अब सही न हो, तो INVALID_REQUEST दिखाया जा सकता है.

NOT_FOUND

NOT_FOUND स्टेटस कोड से पता चलता है कि जगह का आईडी पुराना हो गया है. अगर कोई कारोबार बंद हो जाता है या किसी नई जगह पर शिफ़्ट हो जाता है, तो जगह का आईडी पुराना हो सकता है. Google Maps के डेटाबेस में अपडेट होने की वजह से भी, जगह के आईडी बदल सकते हैं. ऐसे मामलों में, किसी जगह को नया जगह का आईडी मिल सकता है. साथ ही, पुराने आईडी से NOT_FOUND जवाब मिलता है.

अगर जगह का आईडी पुराना हो गया है, तो नतीजों को रीफ़्रेश करने के लिए, उस ओरिजनल अनुरोध को सेव करें जिससे जगह का हर आईडी मिला था. साथ ही, ज़रूरत पड़ने पर अनुरोध को फिर से जारी करें. ध्यान दें कि फिर से जारी किए गए अनुरोध के लिए, सही एसकेयू के हिसाब से बिल भेजा जाता है.

कुछ तरह के जगह के आईडी की वजह से, कभी-कभी NOT_FOUND रिस्पॉन्स मिल सकता है. इसके अलावा, ऐसा भी हो सकता है कि एपीआई, रिस्पॉन्स में कोई दूसरा जगह का आईडी दिखाए. जगह के आईडी के इन टाइप में ये शामिल हैं:

  • ऐसे सड़क के पते जो Google Maps में सटीक पतों के तौर पर मौजूद नहीं हैं. हालांकि, ये कई पतों से लिए गए हैं.
  • किसी लंबे रास्ते के सेगमेंट, जहां अनुरोध में किसी शहर या इलाके की जानकारी भी दी गई हो.
  • चौराहे.
  • subpremise टाइप के पते वाले कॉम्पोनेंट वाली जगहें.

ये आईडी अक्सर लंबी स्ट्रिंग के तौर पर होते हैं. जगह के आईडी की कोई ज़्यादा से ज़्यादा लंबाई नहीं होती. उदाहरण के लिए:

EpID4LC14LC_4LCo4LCv4LGN4LCo4LCX4LCw4LGNIC0g4LC44LGI4LCm4LGN4LCs4LC-4LCm4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSAmIOCwteCwv-CwqOCwr-CxjSDgsKjgsJfgsLDgsY0g4LCu4LGG4LCv4LC_4LCo4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSwg4LC14LC_4LCo4LCv4LGNIOCwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwsuCwleCxjeCwt-CxjeCwruCwv-CwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwuOCwsOCxguCwsOCxjSDgsKjgsJfgsLDgsY0g4LC14LGG4LC44LGN4LCf4LGNLCDgsLjgsK_gsYDgsKbgsL7gsKzgsL7gsKbgsY0sIOCwueCxiOCwpuCwsOCwvuCwrOCwvuCwpuCxjSwg4LCk4LGG4LCy4LCC4LCX4LC-4LCjIDUwMDA1OSwg4LCt4LC-4LCw4LCk4LCm4LGH4LC24LCCImYiZAoUChIJ31l5uGWYyzsR9zY2qk9lDiASFAoSCd9ZebhlmMs7Efc2NqpPZQ4gGhQKEglDz61OZpjLOxHgDJCFY-o1qBoUChIJi37TW2-YyzsRr_uv50r7tdEiCg1MwFcKFS_dyy4