मौजूदा जगह

प्लैटफ़ॉर्म चुनें: Android iOS

Android के लिए Places SDK टूल का इस्तेमाल करके, आप जगह की जानकारी को डिवाइस की मौजूदा जगह पर खोज सकते हैं. जगहों के उदाहरणों में स्थानीय कारोबार, लोकप्रिय जगहें, और भौगोलिक जगहें शामिल हैं.

अनुमतियां

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

अगर आपका ऐप्लिकेशन PlacesClient.findCurrentPlace() का इस्तेमाल नहीं करता है, तो अपने मेनिफ़ेस्ट में इन्हें जोड़कर, ACCESS_FINE_LOCATION और ACCESS_COARSE_LOCATION को लाइब्रेरी से बाहर की जाने वाली अनुमतियों को साफ़ तौर पर हटाएं:

<manifest ... xmlns:tools="http://schemas.android.com/tools">
    ...
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/>
    ...
</manifest>

अनुमतियों के बारे में ज़्यादा पढ़ें और शुरू करने के लिए EasyPermissions का इस्तेमाल करने के बारे में सोचें.

वर्तमान स्थान पाएं

स्थानीय कारोबार या ऐसी दूसरी जगह का पता लगाने के लिए जहां डिवाइस मौजूद है, यह तरीका अपनाएं:

  1. ContextCompat.checkSelfPermission को कॉल करके देखें कि उपयोगकर्ता ने डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति दी है या नहीं. उपयोगकर्ता को अनुमति देने और नतीजे को मैनेज करने के लिए, आपके ऐप्लिकेशन में कोड भी होना चाहिए. ज़्यादा जानकारी के लिए, ऐप्लिकेशन अनुमतियों का अनुरोध करना देखें.
  2. ऐसे FindCurrentPlaceRequest बनाएं जो Place.Field के List पास कर सके. इससे यह पता चलेगा कि आपके ऐप्लिकेशन को किस तरह की जगह का डेटा पाने का अनुरोध करना चाहिए.
  3. पिछले चरण में बनाए गए FindCurrentPlaceRequest को पास करते हुए, PlacesClient.findCurrentPlace() को कॉल करें.
  4. FindCurrentPlaceResponse से PlaceLikelihood की सूची पाएं.

फ़ील्ड, प्लेस सर्च नतीजों के मुताबिक होते हैं और उन्हें तीन बिलिंग श्रेणियों में बांटा जाता है: बुनियादी, संपर्क और माहौल. बेसिक फ़ील्ड के लिए बेस रेट से बिलिंग की जाती है. इनके लिए अलग से शुल्क नहीं लिया जाता है. संपर्क और वायुमंडल फ़ील्ड की बिलिंग ज़्यादा दर पर की जाती है. कारोबार की जगह से जुड़े डेटा के अनुरोधों के बिल भेजने के तरीके के बारे में ज़्यादा जानने के लिए, इस्तेमाल और बिलिंग पर जाएं.

एपीआई, Task में एक FindCurrentPlaceResponse दिखाता है. FindCurrentPlaceResponse में उन जगहों को दिखाने वाले PlaceLikelihood ऑब्जेक्ट की सूची है जहां डिवाइस मौजूद हो सकता है. हर जगह के लिए, नतीजे में इस बात का संकेत शामिल होता है कि वह जगह सही है. अगर डिवाइस की दी गई जगह से जुड़ी कोई भी ऐसी जगह मौजूद नहीं है जिसके बारे में जानकारी हो, तो सूची खाली हो सकती है.

किसी Place ऑब्जेक्ट को वापस लाने के लिए, PlaceLikelihood.getPlace() को कॉल किया जा सकता है, साथ ही, जगह की संभावना बताने के लिए PlaceLikelihood.getLikelihood() पर कॉल किया जा सकता है. ज़्यादा वैल्यू का मतलब है कि वह जगह सबसे ज़्यादा मैच करने की संभावना है.

यहां दिए गए कोड सैंपल में, उन जगहों की सूची दी गई है जहां डिवाइस सबसे ज़्यादा मौजूद हो सकता है. साथ ही, यह हर जगह का नाम और संभावना भी लॉग करता है.

Java


// Use fields to define the data types to return.
List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME);

// Use the builder to create a FindCurrentPlaceRequest.
FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields);

// Call findCurrentPlace and handle the response (first check that the user has granted permission).
if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request);
    placeResponse.addOnCompleteListener(task -> {
        if (task.isSuccessful()){
            FindCurrentPlaceResponse response = task.getResult();
            for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) {
                Log.i(TAG, String.format("Place '%s' has likelihood: %f",
                    placeLikelihood.getPlace().getName(),
                    placeLikelihood.getLikelihood()));
            }
        } else {
            Exception exception = task.getException();
            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();
}

      

Kotlin


// Use fields to define the data types to return.
val placeFields: List<Place.Field> = listOf(Place.Field.NAME)

// Use the builder to create a FindCurrentPlaceRequest.
val request: FindCurrentPlaceRequest = FindCurrentPlaceRequest.newInstance(placeFields)

// Call findCurrentPlace and handle the response (first check that the user has granted permission).
if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED) {

    val placeResponse = placesClient.findCurrentPlace(request)
    placeResponse.addOnCompleteListener { task ->
        if (task.isSuccessful) {
            val response = task.result
            for (placeLikelihood: PlaceLikelihood in response?.placeLikelihoods ?: emptyList()) {
                Log.i(
                    TAG,
                    "Place '${placeLikelihood.place.name}' has likelihood: ${placeLikelihood.likelihood}"
                )
            }
        } else {
            val exception = task.exception
            if (exception is ApiException) {
                Log.e(TAG, "Place not found: ${exception.statusCode}")
            }
        }
    }
} else {
    // A local method to request required permissions;
    // See https://developer.android.com/training/permissions/requesting
    getLocationPermission()
}

      

संभावित वैल्यू के बारे में नोट:

  • इस बात की संभावना है कि जगह की जानकारी से यह पता चल सके कि एक ही अनुरोध के लिए, जोड़ी गई जगहों की सूची में से सबसे बढ़िया जगह कौनसी है. आप अलग-अलग अनुरोधों के लिए संभावनाओं की तुलना नहीं कर सकते.
  • इस संभावना का मान 0.0 और 1.0 के बीच होगा.

उदाहरण के लिए, 55% संभावना दिखाने के लिए कि सही जगह जगह A है, और 35% संभावना है कि यह स्थान B है, तो जवाब में दो सदस्य होंगे, जगह A की संभावना 0.55 होगी और जगह B 0.35 की संभावना के साथ.

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

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