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

এন্ড্রয়েডে কোটলিন ব্যবহার করে ঠিকানা থেকে ল্যাটিটিউড এবং লองিটিউড বের করার পদ্ধতি

জিওকোডিং দিয়ে ঠিকানা থেকে স্থানাঙ্ক বের করা

এই উদাহরণটি দেখায় কিভাবে কোটলিন ব্যবহার করে এন্ড্রয়েডে একটি ঠিকানা থেকে অক্ষাংশ (latitude) এবং দ্রাঘিমাংশ (longitude) বের করা যায়। Geocoder ক্লাস ব্যবহার করে এটিকে বাস্তবায়ন করা হয়েছে।

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

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

ধাপ ২: লেআউট XML ফাইল কনফিগার করুন

res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textViewAddress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:text="ঠিকানা লিখুন: "
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/editTextAddress"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/textViewAddress"
        android:singleLine="true"
        android:text="" />

    <Button
        android:id="@+id/addressButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textViewAddress"
        android:layout_marginTop="50dp"
        android:layout_toEndOf="@+id/textViewAddress"
        android:text="Lat/Long দেখান" />

    <TextView
        android:id="@+id/latLongTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toEndOf="@+id/textViewAddress"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@android:color/background_dark" />

</RelativeLayout>

ধাপ ৩: MainActivity.kt ফাইলে লজিক লিখুন

import android.os.Bundle
import android.os.Handler
import android.os.Message
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var addressButton: Button
    private lateinit var textViewAddress: TextView
    lateinit var textViewLatLong: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        textViewAddress = findViewById(R.id.textViewAddress)
        textViewLatLong = findViewById(R.id.latLongTV)
        addressButton = findViewById(R.id.addressButton)

        addressButton.setOnClickListener {
            val editText = findViewById<EditText>(R.id.editTextAddress)
            val address = editText.text.toString()
            val locationAddress = GeoCodingLocation()
            locationAddress.getAddressFromLocation(address, applicationContext, GeoCoderHandler(this))
        }
    }

    companion object {
        private class GeoCoderHandler(private val mainActivity: MainActivity) : Handler() {
            override fun handleMessage(message: Message) {
                val locationAddress: String? = when (message.what) {
                    1 -> {
                        val bundle = message.data
                        bundle.getString("address")
                    }
                    else -> null
                }
                mainActivity.textViewLatLong.text = locationAddress
            }
        }
    }
}

ধাপ ৪: GeoCodingLocation.kt ক্লাস তৈরি করুন

একটি নতুন কোটলিন ক্লাস তৈরি করে নিচের কোড যোগ করুন:

import android.content.Context
import android.location.Address
import android.location.Geocoder
import android.os.Bundle
import android.os.Handler
import android.os.Message
import android.util.Log
import java.io.IOException
import java.util.*

class GeoCodingLocation {
    private val TAG = "GeoCodeLocation"

    fun getAddressFromLocation(locationAddress: String, context: Context, handler: Handler) {
        val thread = object : Thread() {
            override fun run() {
                val geoCoder = Geocoder(context, Locale.getDefault())
                var result: String? = null
                try {
                    val addressList = geoCoder.getFromLocationName(locationAddress, 1)
                    if (addressList != null && addressList.size > 0) {
                        val address = addressList.get(0) as Address
                        val sb = StringBuilder()
                        sb.append(address.latitude).append("\n")
                        sb.append(address.longitude).append("\n")
                        result = sb.toString()
                    }
                } catch (e: IOException) {
                    Log.e(TAG, "Unable to connect to GeoCoder", e)
                } finally {
                    val message = Message.obtain()
                    message.target = handler
                    message.what = 1
                    val bundle = Bundle()
                    result = ("Address: $locationAddress" + "\n\nLatitude and Longitude: \n" + result)
                    bundle.putString("address", result)
                    message.data = bundle
                    message.sendToTarget()
                }
            }
        }
        thread.start()
    }
}

ধাপ ৫: AndroidManifest.xml-এ লোকেশন পারমিশন যোগ করুন

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

অ্যাপ্লিকেশন চালানোর পদ্ধতি

ডিভাইস সংযুক্ত করে Run করুন। ঠিকানা লিখে "Lat/Long দেখান" বাটনে ক্লিক করলে অক্ষাংশ ও দ্রাঘিমাংশ দেখাবে।

  1. অ্যান্ড্রয়েডে ঠিকানা থেকে ল্যাটিটিউড এবং লংগিটিউড বের করা

  2. How to complete address from latitude and longitude on Android?

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

  4. Python ব্যবহার করে একটি শহরের দ্রাঘিমাংশ এবং অক্ষাংশ কীভাবে পাবেন?