इस गाइड में, Places compatibility library और Places SDK for Android के नए स्टैंडअलोन वर्शन के बीच के अंतर के बारे में बताया गया है. अगर आपने Places SDK for Android के नए स्टैंडअलोन वर्शन पर माइग्रेट करने के बजाय, Places compatibility library का इस्तेमाल किया है, तो इस गाइड में बताया गया है कि Places SDK for Android के नए वर्शन का इस्तेमाल करने के लिए, अपने प्रोजेक्ट कैसे अपडेट करें.
Places SDK for Android के 2.6.0 से ऊपर के वर्शन में मौजूद सुविधाओं और गड़बड़ियों को ठीक करने वाले अपडेट को ऐक्सेस करने का सिर्फ़ एक तरीका है. इसके लिए, आपको Places SDK for Android का इस्तेमाल करना होगा. Google का सुझाव है कि आप कंपैटिबिलिटी लाइब्रेरी से, Android के लिए नए Places SDK टूल के वर्शन पर जल्द से जल्द अपडेट करें.
गड़बड़ी: 9005 PLACES_API_RATE_LIMIT_EXCEEDED
क्या बदल गया है?
इन मुख्य बातों में बदलाव किए गए हैं:
- Places SDK for Android का नया वर्शन, स्टैटिक क्लाइंट लाइब्रेरी के तौर पर डिस्ट्रिब्यूट किया जाता है. जनवरी 2019 से पहले, Places SDK for Android को Google Play services के ज़रिए उपलब्ध कराया जाता था. इसके बाद, Places SDK for Android के नए वर्शन पर आसानी से माइग्रेट करने के लिए, Places SDK के साथ काम करने वाली लाइब्रेरी उपलब्ध कराई गई थी.
- पैसे कमाने के नए तरीके उपलब्ध हैं.
- जगह की जानकारी दिखाने वाले तरीकों के लिए, अब फ़ील्ड मास्क इस्तेमाल किए जा सकते हैं. जगह की जानकारी के किस तरह के डेटा को वापस लाना है, यह तय करने के लिए फ़ील्ड मास्क का इस्तेमाल किया जा सकता है.
- गड़बड़ियों की जानकारी देने के लिए इस्तेमाल किए जाने वाले स्टेटस कोड को बेहतर बनाया गया है.
- ऑटोकंप्लीट की सुविधा अब सेशन टोकन के साथ काम करती है.
- जगह चुनने की सुविधा अब उपलब्ध नहीं है.
Places API के साथ काम करने वाली लाइब्रेरी के बारे में जानकारी
जनवरी 2019 में, Google ने Places SDK for Android के स्टैंडअलोन वर्शन 1.0 को रिलीज़ किया था. साथ ही, Google ने एक कंपैटिबिलिटी लाइब्रेरी उपलब्ध कराई थी. इससे, Places SDK for Android के बंद किए गए Google Play services वर्शन (com.google.android.gms:play-services-places
) से माइग्रेट करने में मदद मिलती है.
इस कंपैटिबिलिटी लाइब्रेरी को कुछ समय के लिए उपलब्ध कराया गया था. इसका मकसद, Google Play services के वर्शन के लिए किए गए एपीआई कॉल को रीडायरेक्ट करना और उनका अनुवाद करना था. ऐसा तब तक किया गया, जब तक डेवलपर ने अपने कोड को नए स्टैंडअलोन वर्शन में माइग्रेट नहीं कर लिया. Places SDK for Android के वर्शन 1.0 से लेकर 2.6.0 तक के हर वर्शन के लिए, Places compatibility library का एक वर्शन रिलीज़ किया गया है, ताकि एक जैसी सुविधाएं मिल सकें.
Places API के साथ काम करने वाली लाइब्रेरी को बंद करना और उसे इस्तेमाल करने से रोकना
Places SDK for Android के साथ काम करने वाली लाइब्रेरी के सभी वर्शन को 31 मार्च, 2022 से बंद कर दिया गया है. Places compatibility library का आखिरी वर्शन 2.6.0 है. Places SDK for Android के 2.6.0 से ऊपर के वर्शन में मौजूद सुविधाओं और गड़बड़ियों को ठीक करने वाले अपडेट को ऐक्सेस करने का सिर्फ़ एक तरीका है. इसके लिए, आपको Places SDK for Android का इस्तेमाल करना होगा.
Google का सुझाव है कि आप Places SDK for Android पर माइग्रेट करें, ताकि आपको वर्शन 2.6.0 से ऊपर की रिलीज़ के लिए नई सुविधाओं और ज़रूरी बग ठीक करने की सुविधा मिल सके. अगर फ़िलहाल, कंपैटिबिलिटी लाइब्रेरी का इस्तेमाल किया जा रहा है, तो Places SDK for Android पर माइग्रेट करने के लिए, Places SDK for Android इंस्टॉल करना सेक्शन में दिया गया तरीका अपनाएं.
क्लाइंट लाइब्रेरी इंस्टॉल करना
Places SDK for Android का नया वर्शन, स्टैटिक क्लाइंट लाइब्रेरी के तौर पर डिस्ट्रिब्यूट किया जाता है.
अपने Android Studio प्रोजेक्ट में Places SDK for Android जोड़ने के लिए, Maven का इस्तेमाल करें:
अगर फ़िलहाल Places API के साथ काम करने वाली लाइब्रेरी का इस्तेमाल किया जा रहा है, तो:
dependencies
सेक्शन में मौजूद इस लाइन को बदलें:implementation 'com.google.android.libraries.places:places-compat:X.Y.Z'
इस लाइन की मदद से, Places SDK for Android पर स्विच करें:
implementation("com.google.android.libraries.places:places:4.3.1")
अगर फ़िलहाल, Places SDK for Android के Play Services वर्शन का इस्तेमाल किया जा रहा है:
dependencies
सेक्शन में मौजूद इस लाइन को बदलें:implementation 'com.google.android.gms:play-services-places:X.Y.Z'
इस लाइन की मदद से, Places SDK for Android पर स्विच करें:
implementation("com.google.android.libraries.places:places:4.3.1")
अपने Gradle प्रोजेक्ट को सिंक करें.
अपने ऐप्लिकेशन प्रोजेक्ट के लिए,
minSdkVersion
को 23 या उसके बाद के लेवल पर सेट करें."Powered by Google" ऐसेट अपडेट करें:
@drawable/powered_by_google_light // OLD @drawable/places_powered_by_google_light // NEW @drawable/powered_by_google_dark // OLD @drawable/places_powered_by_google_dark // NEW
अपना ऐप्लिकेशन बनाएं. अगर आपको Places SDK for Android में कन्वर्ज़न की वजह से कोई गड़बड़ी दिखती है, तो इन गड़बड़ियों को ठीक करने के बारे में जानने के लिए, यहां दिए गए सेक्शन देखें.
Places SDK के नए क्लाइंट को शुरू करना
नीचे दिए गए उदाहरण में दिखाए गए तरीके से, नए Places SDK क्लाइंट को शुरू करें:
// Add an import statement for the client library.
import com.google.android.libraries.places.api.Places;
...
// Initialize Places.
Places.initialize(getApplicationContext(), apiKey);
// Create a new Places client instance.
PlacesClient placesClient = Places.createClient(this);
स्टेटस कोड
क्यूपीएस की सीमा से जुड़ी गड़बड़ियों के लिए स्टेटस कोड बदल गया है. क्यूपीएस की सीमा से जुड़ी गड़बड़ियों की जानकारी अब PlaceStatusCodes.OVER_QUERY_LIMIT
के ज़रिए दी जाती है. अब क्यूपीडी की कोई सीमा नहीं है.
ये स्टेटस कोड जोड़े गए हैं:
REQUEST_DENIED
— अनुरोध अस्वीकार कर दिया गया. ऐसा इन वजहों से हो सकता है:- कोई एपीआई पासकोड नहीं दिया गया था.
- अमान्य एपीआई पासकोड दिया गया है.
- Cloud Console में Places API चालू नहीं किया गया है.
- एपीआई पासकोड के साथ, पाबंदियों की गलत जानकारी दी गई है.
INVALID_REQUEST
— कोई तर्क मौजूद न होने या अमान्य होने की वजह से अनुरोध अमान्य है.NOT_FOUND
— दिए गए अनुरोध के लिए कोई नतीजा नहीं मिला.
नए तरीके
Places SDK for Android के नए वर्शन में, बिलकुल नए तरीके पेश किए गए हैं. इन्हें एक जैसा काम करने के लिए डिज़ाइन किया गया है. सभी नए तरीके, इन शर्तों का पालन करते हैं:
- एंडपॉइंट अब
get
क्रिया का इस्तेमाल नहीं करते. - अनुरोध और जवाब ऑब्जेक्ट का नाम, क्लाइंट के तरीके के नाम से मिलता-जुलता होता है.
- अनुरोध ऑब्जेक्ट में अब बिल्डर होते हैं. ज़रूरी पैरामीटर, अनुरोध बिल्डर पैरामीटर के तौर पर पास किए जाते हैं.
- बफ़र का इस्तेमाल अब नहीं किया जाता.
इस सेक्शन में नए तरीकों के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि वे कैसे काम करते हैं.
आईडी के हिसाब से किसी जगह की जानकारी फ़ेच करना
किसी जगह के बारे में जानकारी पाने के लिए, fetchPlace()
का इस्तेमाल करें. fetchPlace()
, getPlaceById()
की तरह काम करता है.
किसी जगह की जानकारी पाने के लिए, यह तरीका अपनाएं:
fetchPlace()
को कॉल करें. इसके लिए,FetchPlaceRequest
ऑब्जेक्ट पास करें. इसमें जगह का आईडी और फ़ील्ड की सूची शामिल होनी चाहिए. इससे यह तय किया जा सकेगा कि जगह का कौन-सा डेटा दिखाना है.// Define a Place ID. String placeId = "INSERT_PLACE_ID_HERE"; // Specify the fields to return. List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Construct a request object, passing the place ID and fields array. FetchPlaceRequest request = FetchPlaceRequest.builder(placeId, placeFields) .build();
FetchPlaceResponse
को मैनेज करने के लिए,addOnSuccessListener()
पर कॉल करें. एकPlace
नतीजा मिलता है.// Add a listener to handle the response. placesClient.fetchPlace(request).addOnSuccessListener((response) -> { Place place = response.getPlace(); Log.i(TAG, "Place found: " + place.getName()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; int statusCode = apiException.getStatusCode(); // Handle error with given status code. Log.e(TAG, "Place not found: " + exception.getMessage()); } });
किसी जगह की फ़ोटो पाना
किसी जगह की फ़ोटो पाने के लिए, fetchPhoto()
का इस्तेमाल करें. fetchPhoto()
किसी जगह की फ़ोटो दिखाता है. फ़ोटो का अनुरोध करने के पैटर्न को आसान बनाया गया है. अब Place
ऑब्जेक्ट से सीधे PhotoMetadata
का अनुरोध किया जा सकता है. इसके लिए, अलग से अनुरोध करने की ज़रूरत नहीं है.
फ़ोटो की ज़्यादा से ज़्यादा चौड़ाई या ऊंचाई 1600 पिक्सल हो सकती है. fetchPhoto()
फ़ंक्शन, getPhoto()
की तरह काम करता है.
जगह की फ़ोटो पाने के लिए, यह तरीका अपनाएं:
fetchPlace()
को कॉल करने की सुविधा सेट अप करें. अपने अनुरोध मेंPHOTO_METADATAS
फ़ील्ड को शामिल करना न भूलें:List<Place.Field> fields = Arrays.asList(Place.Field.PHOTO_METADATAS);
Place ऑब्जेक्ट पाएं (इस उदाहरण में
fetchPlace()
का इस्तेमाल किया गया है. हालांकि,findCurrentPlace()
का भी इस्तेमाल किया जा सकता है):FetchPlaceRequest placeRequest = FetchPlaceRequest.builder(placeId, fields).build();
FetchPlaceResponse
में मौजूदPlace
से फ़ोटो मेटाडेटा पाने के लिए,OnSuccessListener
जोड़ें. इसके बाद, मिले हुए फ़ोटो मेटाडेटा का इस्तेमाल करके, बिटमैप और एट्रिब्यूशन टेक्स्ट पाएं:placesClient.fetchPlace(placeRequest).addOnSuccessListener((response) -> { Place place = response.getPlace(); // Get the photo metadata. PhotoMetadata photoMetadata = place.getPhotoMetadatas().get(0); // Get the attribution text. String attributions = photoMetadata.getAttributions(); // Create a FetchPhotoRequest. FetchPhotoRequest photoRequest = FetchPhotoRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build(); placesClient.fetchPhoto(photoRequest).addOnSuccessListener((fetchPhotoResponse) -> { Bitmap bitmap = fetchPhotoResponse.getBitmap(); imageView.setImageBitmap(bitmap); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; int statusCode = apiException.getStatusCode(); // Handle error with given status code. Log.e(TAG, "Place not found: " + exception.getMessage()); } }); });
उपयोगकर्ता की जगह की जानकारी के हिसाब से कोई जगह ढूंढना
उपयोगकर्ता के डिवाइस की मौजूदा जगह की जानकारी पाने के लिए, findCurrentPlace()
का इस्तेमाल करें. findCurrentPlace()
यह PlaceLikelihood
की एक सूची दिखाता है. इससे पता चलता है कि उपयोगकर्ता का डिवाइस कहां-कहां मौजूद हो सकता है. findCurrentPlace()
, getCurrentPlace()
की तरह ही काम करता है.
उपयोगकर्ता के डिवाइस की मौजूदा जगह की जानकारी पाने के लिए, यह तरीका अपनाएं:
पक्का करें कि आपका ऐप्लिकेशन
ACCESS_FINE_LOCATION
औरACCESS_WIFI_STATE
अनुमतियों का अनुरोध करता हो. उपयोगकर्ता को अपने मौजूदा डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति देनी होगी. ज़्यादा जानकारी के लिए, ऐप्लिकेशन की अनुमतियों का अनुरोध करना लेख पढ़ें.एक
FindCurrentPlaceRequest
बनाएँ. इसमें, जगह के डेटा टाइप की एक सूची शामिल करें, ताकि उसे वापस भेजा जा सके.// Use fields to define the data types to return. List<Place.Field> placeFields = Arrays.asList(Place.Field.DISPLAY_NAME); // Use the builder to create a FindCurrentPlaceRequest. FindCurrentPlaceRequest request = FindCurrentPlaceRequest.builder(placeFields).build();
findCurrentPlace को कॉल करें और जवाब को मैनेज करें. इससे पहले, यह पुष्टि करें कि उपयोगकर्ता ने अपने डिवाइस की जगह की जानकारी इस्तेमाल करने की अनुमति दी है.
// Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { placesClient.findCurrentPlace(request).addOnSuccessListener(((response) -> { for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) { Log.i(TAG, String.format("Place '%s' has likelihood: %f", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); textView.append(String.format("Place '%s' has likelihood: %f\n", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); } })).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } }); } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission(); }
ऑटोकंप्लीट की सुविधा से मिलने वाले सुझाव ढूंढना
उपयोगकर्ता की खोज क्वेरी के जवाब में, जगह के अनुमानित नतीजे दिखाने के लिए findAutocompletePredictions()
का इस्तेमाल करें.
findAutocompletePredictions()
, getAutocompletePredictions()
की तरह ही काम करता है.
यहां दिए गए उदाहरण में, findAutocompletePredictions()
को कॉल करने का तरीका बताया गया है:
// Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest,
// and once again when the user makes a selection (for example when calling fetchPlace()).
AutocompleteSessionToken token = AutocompleteSessionToken.newInstance();
// Create a RectangularBounds object.
RectangularBounds bounds = RectangularBounds.newInstance(
new LatLng(-33.880490, 151.184363),
new LatLng(-33.858754, 151.229596));
// Use the builder to create a FindAutocompletePredictionsRequest.
FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder()
// Call either setLocationBias() OR setLocationRestriction().
.setLocationBias(bounds)
//.setLocationRestriction(bounds)
.setCountry("au")
.setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS))
.setSessionToken(token)
.setQuery(query)
.build();
placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> {
for (AutocompletePrediction prediction : response.getAutocompletePredictions()) {
Log.i(TAG, prediction.getPlaceId());
Log.i(TAG, prediction.getPrimaryText(null).toString());
}
}).addOnFailureListener((exception) -> {
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
Log.e(TAG, "Place not found: " + apiException.getStatusCode());
}
});
सेशन टोकन
सेशन टोकन, उपयोगकर्ता की खोज के क्वेरी और चुनने के चरणों को बिलिंग के मकसद से अलग-अलग सेशन में ग्रुप करते हैं. हमारा सुझाव है कि सभी ऑटोमैटिक भरने वाले सेशन के लिए, सेशन टोकन का इस्तेमाल करें. सेशन तब शुरू होता है, जब उपयोगकर्ता कोई क्वेरी टाइप करना शुरू करता है. यह तब खत्म होता है, जब वह कोई जगह चुन लेता है. हर सेशन में कई क्वेरी हो सकती हैं. इसके बाद, किसी जगह को चुना जाता है. सेशन खत्म होने के बाद, टोकन मान्य नहीं रहता. आपके ऐप्लिकेशन को हर सेशन के लिए नया टोकन जनरेट करना होगा.
फ़ील्ड मास्क
जगह की जानकारी देने वाले तरीकों में, आपको यह बताना होगा कि हर अनुरोध के साथ किस तरह का जगह का डेटा दिखाना है. इससे यह पक्का करने में मदद मिलती है कि आपने सिर्फ़ उस डेटा का अनुरोध किया है जिसका इस्तेमाल आपको करना है. साथ ही, आपने सिर्फ़ उसी डेटा के लिए पेमेंट किया है.
यह तय करने के लिए कि कौनसे डेटा टाइप वापस लाने हैं, अपने FetchPlaceRequest
में Place.Field
का एक कलेक्शन पास करें. जैसा कि यहां दिए गए उदाहरण में दिखाया गया है:
// Include address, ID, and phone number.
List<Place.Field> placeFields = Arrays.asList(Place.Field.FORMATTED_ADDRESS,
Place.Field.ID,
Place.Field.INTERNATIONAL_PHONE_NUMBER);
फ़ील्ड मास्क में इस्तेमाल किए जा सकने वाले फ़ील्ड की सूची देखने के लिए, जगह के डेटा फ़ील्ड (नया) पर जाएं.
Places API के डेटा एसकेयू के बारे में ज़्यादा जानें.
जगह चुनने की सुविधा और अपने-आप पूरा होने की सुविधा से जुड़े अपडेट
इस सेक्शन में, Places विजेट (जगह चुनने वाला और अपने-आप पूरा होने वाला) में हुए बदलावों के बारे में बताया गया है.
प्रोग्राम के हिसाब से ऑटोकंप्लीट की सुविधा
अपने-आप भरने की सुविधा में ये बदलाव किए गए हैं:
PlaceAutocomplete
का नाम बदलकरAutocomplete
कर दिया गया है.PlaceAutocomplete.getPlace
का नाम बदलकरAutocomplete.getPlaceFromIntent
कर दिया गया है.PlaceAutocomplete.getStatus
का नाम बदलकरAutocomplete.getStatusFromIntent
कर दिया गया है.
PlaceAutocomplete.RESULT_ERROR
का नाम बदलकरAutocompleteActivity.RESULT_ERROR
कर दिया गया है (ऑटोकंप्लीट फ़्रैगमेंट के लिए गड़बड़ी ठीक करने की सुविधा में कोई बदलाव नहीं किया गया है).
जगह चुनने वाला टूल
जगह चुनने वाले टूल को 29 जनवरी, 2019 को बंद कर दिया गया था. इसे 29 जुलाई, 2019 को बंद कर दिया गया था. अब यह सुविधा उपलब्ध नहीं है. इसका इस्तेमाल जारी रखने पर, आपको गड़बड़ी का मैसेज मिलेगा. नए SDK टूल में, Place Picker की सुविधा काम नहीं करती.
ऑटोकंप्लीट विजेट
अपने-आप पूरा होने की सुविधा वाले विजेट अपडेट किए गए हैं:
- सभी क्लास से
Place
प्रीफ़िक्स हटा दिया गया है. - सेशन टोकन के लिए सहायता जोड़ी गई. विजेट, बैकग्राउंड में अपने-आप आपके लिए टोकन मैनेज करता है.
- फ़ील्ड मास्क के लिए सहायता जोड़ी गई है. इससे यह चुना जा सकता है कि उपयोगकर्ता के चुने जाने के बाद, किस तरह का जगह का डेटा दिखाना है.
यहां दिए गए सेक्शन में, अपने प्रोजेक्ट में अपने-आप पूरा होने वाला विजेट जोड़ने का तरीका बताया गया है.
AutocompleteFragment
एम्बेड करना
ऑटोकंप्लीट फ़्रैगमेंट जोड़ने के लिए, यह तरीका अपनाएं:
अपनी ऐक्टिविटी के एक्सएमएल लेआउट में एक फ़्रैगमेंट जोड़ें. इसका उदाहरण यहां दिया गया है.
<fragment android:id="@+id/autocomplete_fragment" android:layout_width="match_parent" android:layout_height="wrap_content" android:name= "com.google.android.libraries.places.widget.AutocompleteSupportFragment" />
गतिविधि में अपने-आप पूरा होने वाला विजेट जोड़ने के लिए, यह तरीका अपनाएं:
- ऐप्लिकेशन के कॉन्टेक्स्ट और एपीआई पासकोड को पास करके,
Places
को शुरू करें. AutocompleteSupportFragment
को शुरू करें.- आपको किस तरह का जगह का डेटा चाहिए, यह बताने के लिए
setPlaceFields()
को कॉल करें. - नतीजे के साथ कुछ करने के लिए,
PlaceSelectionListener
जोड़ें. साथ ही, होने वाली किसी भी गड़बड़ी को ठीक करें.
यहां दिए गए उदाहरण में, किसी गतिविधि में ऑटोकंप्लीट विजेट जोड़ने का तरीका दिखाया गया है:
/** * Initialize Places. For simplicity, the API key is hard-coded. In a production * environment we recommend using a secure mechanism to manage API keys. */ if (!Places.isInitialized()) { Places.initialize(getApplicationContext(), "YOUR_API_KEY"); } // Initialize the AutocompleteSupportFragment. AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment); autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME)); autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(Place place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: " + place.getName() + ", " + place.getId()); } @Override public void onError(Status status) { // TODO: Handle the error. Log.i(TAG, "An error occurred: " + status); } });
- ऐप्लिकेशन के कॉन्टेक्स्ट और एपीआई पासकोड को पास करके,
ऑटोकंप्लीट ऐक्टिविटी लॉन्च करने के लिए, इंटेंट का इस्तेमाल करना
- ऐप्लिकेशन के कॉन्टेक्स्ट और एपीआई पासकोड को पास करके,
Places
को शुरू करें Autocomplete.IntentBuilder
का इस्तेमाल करके इंटेंट बनाएं. साथ ही,PlaceAutocomplete
मोड (फ़ुल-स्क्रीन या ओवरले) पास करें. इंटेंट कोstartActivityForResult
को कॉल करना होगा. साथ ही, एक अनुरोध कोड पास करना होगा, जिससे आपके इंटेंट की पहचान हो सके.- चुनी गई जगह की जानकारी पाने के लिए,
onActivityResult
कॉलबैक को बदलें.
यहां दिए गए उदाहरण में, ऑटोकंप्लीट सुविधा को लॉन्च करने के लिए इंटेंट का इस्तेमाल करने और फिर नतीजे को मैनेज करने का तरीका बताया गया है:
/**
* Initialize Places. For simplicity, the API key is hard-coded. In a production
* environment we recommend using a secure mechanism to manage API keys.
*/
if (!Places.isInitialized()) {
Places.initialize(getApplicationContext(), "YOUR_API_KEY");
}
...
// Set the fields to specify which types of place data to return.
List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
// Start the autocomplete intent.
Intent intent = new Autocomplete.IntentBuilder(
AutocompleteActivityMode.FULLSCREEN, fields)
.build(this);
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);
...
/**
* Override the activity's onActivityResult(), check the request code, and
* do something with the returned place data (in this example its place name and place ID).
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Place place = Autocomplete.getPlaceFromIntent(data);
Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
} else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
// TODO: Handle the error.
Status status = Autocomplete.getStatusFromIntent(data);
Log.i(TAG, status.getStatusMessage());
} else if (resultCode == RESULT_CANCELED) {
// The user canceled the operation.
}
}
}
जगह चुनने की सुविधा अब उपलब्ध नहीं है
जगह चुनने वाले टूल को 29 जनवरी, 2019 को बंद कर दिया गया था. इसे 29 जुलाई, 2019 को बंद कर दिया गया था. अब यह सुविधा उपलब्ध नहीं है. इसका इस्तेमाल जारी रखने पर, आपको गड़बड़ी का मैसेज मिलेगा. नए SDK टूल में, Place Picker की सुविधा काम नहीं करती.