মানচিত্র রচনা লাইব্রেরি

জেটপ্যাক কম্পোজ হলো একটি ডিক্লারেটিভ, নেটিভ UI টুলকিট যা UI ডেভেলপমেন্টকে সহজ ও দ্রুততর করে। জেটপ্যাক কম্পোজের সাহায্যে, আপনি আপনার অ্যাপটি কেমন দেখতে চান তা বর্ণনা করেন এবং বাকিটা জেটপ্যাক কম্পোজের উপর ছেড়ে দেন।

অ্যান্ড্রয়েডের জন্য ম্যাপস এসডিকে-এর ম্যাপস কম্পোজ লাইব্রেরিটি হলো একগুচ্ছ ওপেন-সোর্স কম্পোজেবল ফাংশন এবং ডেটা টাইপ, যা আপনি আপনার অ্যাপ তৈরি করতে জেটপ্যাক কম্পোজের সাথে ব্যবহার করতে পারেন।

Maps Compose লাইব্রেরিতে কম্পোজেবল ফাংশন এবং ডেটা টাইপ রয়েছে যা আপনাকে অনেক সাধারণ কাজ সম্পাদন করতে দেয়। সচরাচর ব্যবহৃত কিছু কম্পোজেবল ফাংশন এবং ডেটা টাইপ হলো:

রচনাযোগ্য বিবরণ
বৃত্ত মানচিত্রে একটি বৃত্ত যোগ করার জন্য কম্পোজেবল ফাংশন।
গুগলম্যাপ ম্যাপ যোগ করার জন্য কম্পোজেবল ফাংশন।
গ্রাউন্ডওভারলে মানচিত্রে ভূমির একটি স্তর যুক্ত করার জন্য ব্যবহারযোগ্য ফাংশন।
মানচিত্রের বৈশিষ্ট্য ম্যাপে পরিবর্তনযোগ্য প্রোপার্টিগুলোর ডেটা টাইপ।
MapUISettings মানচিত্রে UI-সম্পর্কিত সেটিংসের জন্য ডেটা টাইপ।
মার্কার মানচিত্রে মার্কার যোগ করার জন্য কম্পোজেবল ফাংশন।
বহুভুজ ম্যাপে বহুভুজ যোগ করার জন্য কম্পোজেবল ফাংশন।
পলিলাইন ম্যাপে পলিলাইন যোগ করার জন্য কম্পোজেবল ফাংশন।
টাইলওভারলে মানচিত্রে টাইল ওভারলে যোগ করার জন্য কম্পোজেবল ফাংশন।

সমস্ত কম্পোজেবল ফাংশন ও ডেটা টাইপের সম্পূর্ণ তালিকার জন্য, ম্যাপস কম্পোজ লাইব্রেরি রেফারেন্স দেখুন।

আবশ্যকতা

অ্যান্ড্রয়েডের জন্য ম্যাপস এসডিকে-এর সাথে ম্যাপস কম্পোজ লাইব্রেরি ব্যবহার করতে হলে আপনাকে অবশ্যই:

  • অ্যান্ড্রয়েড স্টুডিও আর্কটিক ফক্স ডাউনলোড এবং ইনস্টল করুন।
  • অ্যান্ড্রয়েড স্টুডিওতে নিম্নলিখিত কমান্ড ব্যবহার করে একটি গুগল ম্যাপস প্রজেক্ট তৈরি করুন :

    • একটি খালি কম্পোজ অ্যাক্টিভিটি (Empty Compose Activity) ধরনের টেমপ্লেট। এই টেমপ্লেটটি জেটপ্যাক কম্পোজের (Jetpack Compose) জন্য প্রয়োজনীয় ডিপেন্ডেন্সিগুলো যোগ করে।
    • ন্যূনতম SDK এপিআই ২১-এ সেট করা হয়েছে: অ্যান্ড্রয়েড ৫.০ (ললিপপ) বা তার পরবর্তী সংস্করণ।
    • ভাষা কোটলিনে সেট করা হয়েছে।
  • একটি এপিআই কী সংগ্রহ করুন এবং আপনার প্রজেক্টে সেটি যুক্ত করুন।

  • পরবর্তী বিভাগে বর্ণিত পদ্ধতি অনুসারে প্রজেক্টে Maps Compose লাইব্রেরিটি ইনস্টল করুন।

স্থাপন

আপনার গুগল ম্যাপস প্রজেক্টে ম্যাপস কম্পোজ লাইব্রেরি ইনস্টল করতে:

  1. আপনার মডিউল-স্তরের build.gradle.kts ফাইলে নিম্নলিখিত নির্ভরতাগুলি যোগ করুন:

      dependencies {
    
        // Android Maps Compose composables for the Maps SDK for Android
        implementation("com.google.maps.android:maps-compose:6.12.0")
    }

  2. এই পরিবর্তনগুলো সিঙ্ক করতে অ্যান্ড্রয়েড স্টুডিওতে আপনার প্রজেক্টটি রি-বিল্ড করুন।

আপনার অ্যাপে একটি মানচিত্র যোগ করুন

নিচের উদাহরণটিতে দেখানো হয়েছে, কীভাবে GoogleMap কম্পোজেবল ব্যবহার করে একটি মানচিত্র যোগ করতে হয়।

val singapore = LatLng(1.35, 103.87)
val singaporeMarkerState = rememberUpdatedMarkerState(position = singapore)
val cameraPositionState = rememberCameraPositionState {
  position = CameraPosition.fromLatLngZoom(singapore, 10f)
}
GoogleMap(
  modifier = Modifier.fillMaxSize(),
  cameraPositionState = cameraPositionState
) {
  Marker(
    state = singaporeMarkerState,
    title = "Singapore",
    snippet = "Marker in Singapore"
  )
}

এই উদাহরণে, মানচিত্রটি সর্বাধিক অনুমোদিত স্থান দখল করে এবং এর ক্যামেরাটি সিঙ্গাপুরকে কেন্দ্র করে রয়েছে। ক্যামেরার অবস্থান নির্ধারণ করার জন্য cameraPositionState এর মধ্যে একটি CameraPositionState- ও তৈরি করে দেওয়া হয়েছে।

এরপর উদাহরণটি ম্যাপে একটি মার্কার যোগ করার জন্য ম্যাপের কন্টেন্টের মধ্যে থাকা Marker composable-কে কল করে।

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

একটি মানচিত্রে বৈশিষ্ট্য সেট করুন

আপনি একটি MapProperties অবজেক্ট, অথবা UI-সম্পর্কিত বৈশিষ্ট্যের জন্য একটি MapUiSettings অবজেক্ট প্রদান করে ম্যাপের বৈশিষ্ট্যগুলো নির্ধারণ করতে পারেন। ম্যাপের পুনর্গঠন শুরু করার জন্য আপনি এই অবজেক্টগুলো পরিবর্তন করতে পারেন।

নীচের উদাহরণে, ম্যাপের জুম কন্ট্রোল টগল করতে একটি সুইচ ( Material Design কম্পোনেন্ট) ব্যবহার করুন।

var uiSettings by remember { mutableStateOf(MapUiSettings()) }
var properties by remember {
  mutableStateOf(MapProperties(mapType = MapType.SATELLITE))
}

Box(Modifier.fillMaxSize()) {
  GoogleMap(
    modifier = Modifier.matchParentSize(),
    properties = properties,
    uiSettings = uiSettings
  )
  Switch(
    checked = uiSettings.zoomControlsEnabled,
    onCheckedChange = {
      uiSettings = uiSettings.copy(zoomControlsEnabled = it)
    }
  )
}

এরপর কী?