जगह की जानकारी

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript वेब सेवा

Android के लिए Places SDK टूल, आपके ऐप्लिकेशन में ऐसी जगहों की ज़्यादा जानकारी उपलब्ध कराता है जिनमें जगह का नाम और पता शामिल हो. साथ ही, अक्षांश/देशांतर निर्देशांकों के तौर पर बताई गई जगहों, जैसे कि जगह, जैसे कि नाइट क्लब, पालतू जानवरों की दुकान, और संग्रहालय वगैरह की जानकारी भी देता है. किसी खास जगह की यह जानकारी ऐक्सेस करने के लिए, जगह का आईडी इस्तेमाल किया जा सकता है. यह एक ऐसा आइडेंटिफ़ायर है जो किसी जगह की खास पहचान करता है.

जगह की जानकारी

Place ऑब्जेक्ट किसी खास जगह के बारे में जानकारी देता है. Place ऑब्जेक्ट को इन तरीकों से पकड़ा जा सकता है:

किसी जगह का अनुरोध करने पर, आपको यह बताना होगा कि किस जगह का डेटा वापस करना है. ऐसा करने के लिए, दिए गए डेटा के बारे में बताने वाले Place.Field वैल्यू की सूची पास करें. यह एक ज़रूरी विचार है, क्योंकि इससे हर अनुरोध की लागत पर असर पड़ता है.

जगह के डेटा के नतीजे खाली नहीं हो सकते, इसलिए सिर्फ़ डेटा वाले जगह के नतीजे दिखाए जाते हैं (उदाहरण के लिए, अगर अनुरोध की गई जगह में कोई फ़ोटो नहीं है, तो खोज के नतीजे में photos फ़ील्ड नहीं दिखेगा).

नीचे दिए गए उदाहरण में तीन Place.Field वैल्यू की सूची दी गई है और अनुरोध के ज़रिए मिले डेटा की जानकारी दी गई है:

Java

// Specify the fields to return.
final List placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);

Kotlin

// Specify the fields to return.
val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)

Place ऑब्जेक्ट मिलने के बाद, अनुरोध में बताए गए डेटा फ़ील्ड ऐक्सेस करने के लिए, ऑब्जेक्ट के तरीकों का इस्तेमाल करें. अगर फ़ील्ड में Place ऑब्जेक्ट नहीं है, तो इससे जुड़ा तरीका शून्य पर सेट हो जाता है. नीचे कुछ तरीकों में से कुछ के उदाहरण दिए गए हैं. सभी तरीकों की पूरी सूची के लिए, Place एपीआई का रेफ़रंस देखें.

  • getAddress() – जगह का पता, जिसे लोग पढ़ सकें.
  • getAddressComponents() – इस जगह के पते के कॉम्पोनेंट का List. ये कॉम्पोनेंट किसी जगह के पते के बारे में स्ट्रक्चर्ड जानकारी निकालने के लिए दिए जाते हैं. उदाहरण के लिए, किसी शहर में मौजूद किसी शहर को ढूंढना. पते के फ़ॉर्मैट के लिए इन कॉम्पोनेंट का इस्तेमाल न करें. इसके बजाय, getAddress() को कॉल करें, जो स्थानीय जगह के हिसाब से फ़ॉर्मैट किया गया पता देता है.
  • getId() – जगह के लिए टेक्स्ट वाला आइडेंटिफ़ायर. पेज के बाकी हिस्से में जगह के आईडी के बारे में ज़्यादा पढ़ें.
  • getLatLng() – जगह की भौगोलिक जगह, जिसे अक्षांश और देशांतर निर्देशांक के तौर पर दिखाया गया है.
  • getName() – जगह का नाम.
  • getOpeningHours() – जगह का OpeningHours. हफ़्ते के हर दिन के लिए, कारोबार के खुलने और बंद होने का समय बताने वाली स्ट्रिंग की सूची दिखाने के लिए, OpeningHours.getWeekdayText() को कॉल करें. OpeningHours.getPeriods() को कॉल करें, ताकि period ऑब्जेक्ट की सूची दिखाई जा सके. इस सूची में, getWeekdayText() से मिले डेटा के साथ ज़्यादा जानकारी भी मिलती है.

    Place ऑब्जेक्ट में, getCurrentOpeningHours() तरीका भी होता है, जो अगले सात दिनों में किसी जगह के खुले होने का समय दिखाता है. साथ ही, getSecondaryOpeningHours() जो अगले सात दिनों में किसी जगह के दूसरे घंटे काम करता है.

  • isOpen() – एक बूलियन, जो बताता है कि वह जगह फ़िलहाल खुली है या नहीं. अगर कोई समय तय नहीं किया गया है, तो अब डिफ़ॉल्ट सेटिंग बन गई है. isOpen को सिर्फ़ तब वापस किया जाएगा, जब Place.Field.UTC_OFFSET और Place.Field.OPENING_HOURS, दोनों उपलब्ध हों. सही नतीजे दिखाने के लिए, मूल जगह के अनुरोध में, Place.Field.BUSINESS_STATUS और Place.Field.UTC_OFFSET फ़ील्ड का अनुरोध करें. अगर अनुरोध नहीं किया गया है, तो यह माना जाता है कि कारोबार काम कर रहा है. जगह की जानकारी के साथ isOpen इस्तेमाल करने का तरीका जानने के लिए, यह वीडियो देखें.

कुछ आसान उदाहरण:

Java


final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final LatLng location = place.getLatLng();

      

Kotlin


val name = place.name
val address = place.address
val location = place.latLng

      

आईडी के आधार पर जगह पाएं

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

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

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

यह कोड उदाहरण दिखाता है कि fetchPlace() को बताई गई जगह के बारे में जानकारी कैसे दी जाती है.

Java


// Define a Place ID.
final String placeId = "INSERT_PLACE_ID_HERE";

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

// 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();
    Log.i(TAG, "Place found: " + place.getName());
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException) {
        final ApiException apiException = (ApiException) exception;
        Log.e(TAG, "Place not found: " + exception.getMessage());
        final int statusCode = apiException.getStatusCode();
        // TODO: Handle error with given status code.
    }
});

      

Kotlin


// Define a Place ID.
val placeId = "INSERT_PLACE_ID_HERE"

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

// 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
        Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}")
    }.addOnFailureListener { exception: Exception ->
        if (exception is ApiException) {
            Log.e(TAG, "Place not found: ${exception.message}")
            val statusCode = exception.statusCode
            TODO("Handle error with given status code")
        }
    }

      

स्थिति देखें

PlacesClient.isOpen(IsOpenRequest request) तरीका, IsOpenResponse ऑब्जेक्ट दिखाता है. इससे पता चलता है कि कॉल में बताए गए समय के आधार पर, जगह अभी खुली है या नहीं.

इस तरीके में IsOpenRequest का एक आर्ग्युमेंट लिया जाता है, जिसमें ये शामिल होते हैं:

  • Place ऑब्जेक्ट या कोई ऐसी स्ट्रिंग जो जगह के आईडी की जानकारी देती हो.
  • यह वैकल्पिक समय की वैल्यू होती है, जो 1970-01-01T00:00:00Z से मिलीसेकंड में समय की जानकारी देती है. अगर कोई समय तय नहीं किया गया है, तो अब डिफ़ॉल्ट सेटिंग बन गई है.

इस तरीके के लिए ज़रूरी है कि Place ऑब्जेक्ट में ये फ़ील्ड मौजूद हों:

  • Place.Field.BUSINESS_STATUS
  • Place.Field.CURRENT_OPENING_HOURS
  • Place.Field.OPENING_HOURS
  • Place.Field.UTC_OFFSET

अगर Place ऑब्जेक्ट में ये फ़ील्ड नहीं दिए गए हैं या आपने किसी जगह का आईडी पास किया है, तो उन्हें फ़ेच करने के लिए, तरीका PlacesClient.fetchPlace() का इस्तेमाल करता है. ज़रूरी फ़ील्ड के साथ प्लेस ऑब्जेक्ट बनाने के बारे में ज़्यादा जानकारी के लिए, जगह की जानकारी देखें.

इस उदाहरण से पता चलता है कि कोई जगह फ़िलहाल खुली है या नहीं. इस उदाहरण में, आप isOpen() को सिर्फ़ जगह का आईडी पास करते हैं:

Java


@NonNull
Calendar isOpenCalendar = Calendar.getInstance();
String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk";
IsOpenRequest isOpenRequest;

try {
    isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis());
} catch (IllegalArgumentException e) {
    e.printStackTrace();
    return;
}

Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest);

placeTask.addOnSuccessListener(
        (response) ->
                isOpen = response.isOpen());
// ...

      

Kotlin


val isOpenCalendar: Calendar = Calendar.getInstance()
val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"

val request: IsOpenRequest = try {
    IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis)
} catch (e: IllegalArgumentException) {
    e.printStackTrace()
    return
}
val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request)
isOpenTask.addOnSuccessListener { response ->
    val isOpen = response.isOpen
}
// ...

      

अगले उदाहरण में isOpen() को कॉल करना दिखाया गया है, जहां आप Place ऑब्जेक्ट को पास करते हैं. Place ऑब्जेक्ट में एक मान्य स्थान आईडी होना चाहिए:

Java


@NonNull
Calendar isOpenCalendar = Calendar.getInstance();
String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk";
// Specify the required fields for an isOpen request.
List<Place.Field> placeFields = new ArrayList<>(Arrays.asList(
        Place.Field.BUSINESS_STATUS,
        Place.Field.CURRENT_OPENING_HOURS,
        Place.Field.ID,
        Place.Field.OPENING_HOURS,
        Place.Field.UTC_OFFSET
));

FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request);

placeTask.addOnSuccessListener(
        (placeResponse) -> {
            Place place = placeResponse.getPlace();
            IsOpenRequest isOpenRequest;

            try {
                isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis());
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                return;
            }
            Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest);

            isOpenTask.addOnSuccessListener(
                    (isOpenResponse) -> isOpen = isOpenResponse.isOpen());
            // ...
        });
// ...

      

Kotlin


val isOpenCalendar: Calendar = Calendar.getInstance()
var place: Place
val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"
// Specify the required fields for an isOpen request.
val placeFields: List<Place.Field> = listOf(
    Place.Field.BUSINESS_STATUS,
    Place.Field.CURRENT_OPENING_HOURS,
    Place.Field.ID,
    Place.Field.OPENING_HOURS,
    Place.Field.UTC_OFFSET
)

val placeRequest: FetchPlaceRequest =
    FetchPlaceRequest.newInstance(placeId, placeFields)
val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest)
placeTask.addOnSuccessListener { placeResponse ->
    place = placeResponse.place

    val isOpenRequest: IsOpenRequest = try {
        IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis)
    } catch (e: IllegalArgumentException) {
        e.printStackTrace()
        return@addOnSuccessListener
    }
    val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest)
    isOpenTask.addOnSuccessListener { isOpenResponse ->
        val isOpen = isOpenResponse.isOpen
    }
    // ...
}
// ...

      

अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाएं

जब आपका ऐप्लिकेशन, जगह की जानकारी दिखाता है, तब ऐप्लिकेशन को भी जानकारी दिखानी चाहिए. एट्रिब्यूशन पर दस्तावेज़ देखें.

जगह के आईडी के बारे में ज़्यादा जानकारी

Android के लिए Places SDK टूल में इस्तेमाल किया गया जगह का आईडी वही है जो जगह के एपीआई में इस्तेमाल किया गया है. हर जगह के आईडी से सिर्फ़ एक जगह की जानकारी मिल सकती है, लेकिन किसी एक जगह के लिए एक से ज़्यादा जगहों के आईडी हो सकते हैं. ऐसी अन्य स्थितियां हैं जिनकी वजह से किसी जगह को नया स्थान आईडी मिल सकता है. उदाहरण के लिए, ऐसा तब हो सकता है, जब कोई कारोबार किसी नई जगह पर चला जाता है.

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

ज़्यादा जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.