Android के लिए Places SDK टूल, आपके ऐप्लिकेशन में ऐसी जगहों की ज़्यादा जानकारी उपलब्ध कराता है जिनमें जगह का नाम और पता शामिल हो. साथ ही, अक्षांश/देशांतर निर्देशांकों के तौर पर बताई गई जगहों, जैसे कि जगह, जैसे कि नाइट क्लब, पालतू जानवरों की दुकान, और संग्रहालय वगैरह की जानकारी भी देता है. किसी खास जगह की यह जानकारी ऐक्सेस करने के लिए, जगह का आईडी इस्तेमाल किया जा सकता है. यह एक ऐसा आइडेंटिफ़ायर है जो किसी जगह की खास पहचान करता है.
जगह की जानकारी
Place
ऑब्जेक्ट किसी खास जगह के बारे में जानकारी देता है. Place
ऑब्जेक्ट को इन तरीकों से पकड़ा जा सकता है:
- कॉल करें
PlacesClient.findCurrentPlace()
– मौजूदा जगह की जानकारी पाने के लिए गाइड देखें. - कॉल करें
PlacesClient.fetchPlace()
– आईडी की मदद से जगह पाना के लिए गाइड देखें.
किसी जगह का अनुरोध करने पर, आपको यह बताना होगा कि किस जगह का डेटा वापस करना है. ऐसा करने के लिए, दिए गए डेटा के बारे में बताने वाले Place.Field वैल्यू की सूची पास करें. यह एक ज़रूरी विचार है, क्योंकि इससे हर अनुरोध की लागत पर असर पड़ता है.
जगह के डेटा के नतीजे खाली नहीं हो सकते, इसलिए सिर्फ़ डेटा वाले जगह के नतीजे दिखाए जाते हैं (उदाहरण के लिए, अगर अनुरोध की गई जगह में कोई फ़ोटो नहीं है, तो खोज के नतीजे में photos
फ़ील्ड नहीं दिखेगा).
नीचे दिए गए उदाहरण में तीन Place.Field वैल्यू की सूची दी गई है और अनुरोध के ज़रिए मिले डेटा की जानकारी दी गई है:
Java
// Specify the fields to return. final ListplaceFields = 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 टूल में इस्तेमाल किया गया जगह का आईडी वही है जो जगह के एपीआई में इस्तेमाल किया गया है. हर जगह के आईडी से सिर्फ़ एक जगह की जानकारी मिल सकती है, लेकिन किसी एक जगह के लिए एक से ज़्यादा जगहों के आईडी हो सकते हैं. ऐसी अन्य स्थितियां हैं जिनकी वजह से किसी जगह को नया स्थान आईडी मिल सकता है. उदाहरण के लिए, ऐसा तब हो सकता है, जब कोई कारोबार किसी नई जगह पर चला जाता है.
अगर आप किसी जगह का आईडी तय करके, उस जगह के लिए अनुरोध करते हैं, तो इस बात पर भरोसा किया जा सकता है कि जवाब देने पर आपको हमेशा एक ही जगह मिलेगी (अगर जगह अब भी मौजूद है). ध्यान दें कि जवाब में एक ऐसी जगह का आईडी हो सकता है जो आपके अनुरोध में दिए गए आईडी से अलग होगा.
ज़्यादा जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.