বর্তমান জায়গা (লিগ্যাসি)

ইউরোপীয় অর্থনৈতিক অঞ্চল (EEA)-এর ডেভেলপার

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. PlacesClient.findCurrentPlace() কল করুন, আগের ধাপে আপনার তৈরি করা FindCurrentPlaceRequest পাস করুন।
  4. FindCurrentPlaceResponse থেকে PlaceLikelihood-এর তালিকা পান।

ফিল্ডগুলি জায়গা সার্চ করার ফলাফলের সাথে সম্পর্কিত এবং তিনটি বিলিং বিভাগে বিভক্ত: বেসিক, পরিচিতি এবং পরিবেশ। বেসিক ফিল্ডের জন্য বেস রেটে বিল করা হয় এবং কোনও অতিরিক্ত চার্জ লাগে না। যোগাযোগ এবং পরিবেশ সংক্রান্ত ফিল্ডের জন্য বেশি রেটে বিল করা হয়। জায়গার ডেটা সংক্রান্ত অনুরোধের জন্য কীভাবে বিল করা হয় সেই সম্পর্কে আরও তথ্যের জন্য, ব্যবহার ও বিলিং দেখুন।

API একটি FindCurrentPlaceResponse একটি Task-এ ফেরত দেয়। FindCurrentPlaceResponse-এ PlaceLikelihood অবজেক্টের একটি তালিকা থাকে যা এমন সব জায়গাকে দেখায় যেখানে ডিভাইসটি থাকার সম্ভাবনা আছে। প্রতিটি জায়গার জন্য, ফলাফলে একটি ইঙ্গিত অন্তর্ভুক্ত থাকে যে জায়গাটি সঠিক হওয়ার সম্ভাবনা কতটা। প্রদত্ত ডিভাইস লোকেশন অনুযায়ী কোনও পরিচিত জায়গা না থাকলে, তালিকাটি খালি থাকতে পারে।

আপনি Place অবজেক্ট ফিরিয়ে আনতে PlaceLikelihood.getPlace() কল করতে পারেন এবং জায়গার লাইকলিহুড রেটিং পেতে PlaceLikelihood.getLikelihood() কল করতে পারেন। ভ্যালু বেশি হলে, জায়গাটি সবচেয়ে ভাল ম্যাচ হওয়ার সম্ভাবনাও বেশি হয়।

নিম্নলিখিত কোড স্যাম্পেল সেইসব জায়গার তালিকা ফিরিয়ে আনে যেখানে ডিভাইসটি থাকার সম্ভাবনা সবচেয়ে বেশি এবং প্রতিটি জায়গার নাম ও সম্ভাবনা লগ করে।

Kotlin

// Use fields to define the data types to return.
val placeFields = listOf(Place.Field.DISPLAY_NAME, Place.Field.FORMATTED_ADDRESS, Place.Field.LOCATION)

// Define the search area around the current location (500m radius).
val currentLocation = LatLng(37.4220, -122.0841)
val circle = CircularBounds.newInstance(currentLocation, 500.0)
val request = SearchNearbyRequest.builder(circle, placeFields)
    .setMaxResultCount(20)
    .build()

// Call searchNearby and handle the response (first check that the user has granted permission).
if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED
) {
    placesClient.searchNearby(request).addOnSuccessListener { response ->
        binding.progressBar.visibility = View.GONE
        adapter.setPlaces(response.places)
    }.addOnFailureListener { exception ->
        binding.progressBar.visibility = View.GONE
        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()
}

      

Java

// Use fields to define the data types to return.
List<Place.Field> placeFields =
        Arrays.asList(
                Place.Field.DISPLAY_NAME,
                Place.Field.FORMATTED_ADDRESS,
                Place.Field.LOCATION);

// Define the search area around the current location.
LatLng currentLocation = new LatLng(37.4220, -122.0841);
LocationRestriction circle =
        CircularBounds.newInstance(currentLocation, /* radius= */ 500.0);

// Use the builder to create a SearchNearbyRequest.
SearchNearbyRequest request =
        SearchNearbyRequest.builder(circle, placeFields).setMaxResultCount(20).build();

// Call searchNearby and handle the response (first check that the user has granted
// permission).
if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION)
        == PackageManager.PERMISSION_GRANTED) {
    Task<SearchNearbyResponse> placeResponse = placesClient.searchNearby(request);
    placeResponse.addOnCompleteListener(
            task -> {
                binding.progressBar.setVisibility(View.GONE);
                if (task.isSuccessful()) {
                    SearchNearbyResponse response = task.getResult();
                    adapter.setPlaces(response.getPlaces());
                } else {
                    Exception exception = task.getException();
                    if (exception instanceof ApiException apiException) {
                        Log.e(
                                "CurrentPlace",
                                "Place not found: " + apiException.getStatusCode());
                    }
                }
            });
} else {
    // A local method to request required permissions;
    // See https://developer.android.com/training/permissions/requesting
    getLocationPermission();
}

      

সম্ভাবনার ভ্যালু সম্পর্কে নোট:

  • সম্ভাবনা, একটি অনুরোধের জন্য ফেরত আসা স্থানের তালিকার মধ্যে স্থানটি সবচেয়ে উপযুক্ত হওয়ার আপেক্ষিক সম্ভাবনা প্রদান করে। আপনি বিভিন্ন অনুরোধ জুড়ে সম্ভাবনা তুলনা করতে পারবেন না।
  • সম্ভাবনার মান ০.০ থেকে ১.০-এর মধ্যে হবে।

যেমন, সঠিক জায়গাটি যে জায়গা A হওয়ার সম্ভাবনা ৫৫% এবং জায়গা B হওয়ার সম্ভাবনা ৩৫% তা দেখানোর জন্য, উত্তরে দুটি মেম্বার থাকে, জায়গা A-এর সম্ভাবনা ০.৫৫ এবং জায়গা B-এর সম্ভাবনা ০.৩৫।

আপনার অ্যাপে অ্যাট্রিবিউশন দেখান

আপনার অ্যাপ যখন PlacesClient.findCurrentPlace() থেকে পাওয়া তথ্য দেখায়, তখন অ্যাপটিকে অবশ্যই অ্যাট্রিবিউশন দেখাতে হবে। অ্যাট্রিবিউশন সম্পর্কিত ডকুমেন্টেশন দেখুন।