কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে Google Maps-এ বর্তমান অবস্থান দেখানোর পদ্ধতি


ভূমিকা

এই উদাহরণটি দেখাবে কিভাবে Google Maps SDK এবং Fused Location Provider ব্যবহার করে বর্তমান অবস্থান ম্যাপে দেখাতে হয়।

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ গিয়ে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="https://schemas.android.com/apk/res/android" 
    xmlns:tools="https://schemas.android.com/tools" 
    android:id="@+id/myMap" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" />

ধাপ ৩: গ্রেডেল ডিপেন্ডেন্সি যোগ করুন (build.gradle - Module: app)

implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'

ধাপ ৪: মেইন এক্টিভিটি কোড (src/MainActivity.java)

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.os.Bundle; 
import android.widget.Toast; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.location.FusedLocationProviderClient; 
import com.google.android.gms.location.LocationServices; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.google.android.gms.tasks.OnSuccessListener; 
import com.google.android.gms.tasks.Task; 
import androidx.annotation.NonNull; 
import androidx.core.app.ActivityCompat; 
import androidx.fragment.app.FragmentActivity; 

public class MainActivity extends FragmentActivity implements OnMapReadyCallback { 
    Location currentLocation; 
    FusedLocationProviderClient fusedLocationProviderClient; 
    private static final int REQUEST_CODE = 101; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        
        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this); 
        fetchLocation(); 
    } 

    private void fetchLocation() { 
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && 
            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE); 
            return; 
        } 

        Task<Location> task = fusedLocationProviderClient.getLastLocation(); 
        task.addOnSuccessListener(new OnSuccessListener<Location>() { 
            @Override 
            public void onSuccess(Location location) { 
                if (location != null) { 
                    currentLocation = location; 
                    Toast.makeText(getApplicationContext(), 
                        currentLocation.getLatitude() + ", " + currentLocation.getLongitude(), 
                        Toast.LENGTH_SHORT).show(); 
                    
                    SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.myMap); 
                    assert supportMapFragment != null; 
                    supportMapFragment.getMapAsync(MainActivity.this); 
                } 
            } 
        }); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
        LatLng latLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()); 
        MarkerOptions markerOptions = new MarkerOptions().position(latLng).title("I am here!"); 
        googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
        googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5)); 
        googleMap.addMarker(markerOptions); 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
        switch (requestCode) { 
            case REQUEST_CODE: 
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
                    fetchLocation(); 
                } 
                break; 
        } 
    } 
}

ধাপ ৫: স্ট্রিং রিসোর্স (res/values/strings.xml)

<resources> 
    <string name="app_name">Sample</string> 
    <string name="map_key" translatable="false">Enter your google API key here</string> 
</resources>

ধাপ ৬: Google API Key পাওয়ার পদ্ধতি

  1. Google Cloud Platform Console-এ যান
  2. প্রজেক্ট নির্বাচন বা তৈরি করুন
  3. মেনু → APIs & Services → Credentials এ যান
  4. Create credentials → API key ক্লিক করুন
  5. API Key কপি করুন এবং strings.xml-এ paste করুন
  6. প্রোডাকশনে ব্যবহারের আগে API Key রס্ট্রিক্ট করতে ভুলবেন না

ধাপ ৭: মেনিফেস্ট ফাইল (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample"> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <application 
        android:allowBackup="true" 
        android:icon="@mipmap/ic_launcher" 
        android:label="@string/app_name" 
        android:roundIcon="@mipmap/ic_launcher_round" 
        android:supportsRtl="true" 
        android:theme="@style/AppTheme"> 
        <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/map_key"/> 
        <activity android:name=".MainActivity"> 
            <intent-filter> 
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" /> 
            </intent-filter> 
        </activity> 
    </application> 
</manifest>

অ্যাপ্লিকেশন চালান

অ্যাপটি চালান। লোকেশন পারমিশন দিতে হবে। তারপর ম্যাপে আপনার বর্তমান অবস্থান মার্কার সহ দেখাবে।


  1. এন্ড্রয়েডে গুগল API ছাড়া স্পিচ রিকগনিশনার ডেভেলপ করার পদ্ধতি

  2. অ্যান্ড্রয়েডে বর্তমান লোকেশনের ল্যাটিটিউড এবং লองিটিউড কীভাবে পাবেন?

  3. Android-এ Location API ব্যবহার করে বর্তমান লোকেশন ট্র্যাক করা

  4. HTML5 জিওলোকেশন এবং গুগল ম্যাপস দিয়ে বর্তমান লোকেশন দেখানো