Android-এর জন্য Maps SDK ব্যবহার করার জন্য প্রোজেক্ট কনফিগার করার পরে, কীভাবে Android অ্যাপে একটি বেসিক ম্যাপ যোগ করতে হয় তা এই বিষয়ে বর্ণনা করা হয়েছে। ম্যাপ যোগ করার পরে, আপনি ম্যাপের ধরন ও ফিচার পরিবর্তন করতে পারবেন।
এক নজরে
Android-এর জন্য Maps SDK বেশ কিছু ক্লাস প্রদান করে যা আপনার অ্যাপ ব্যবহার করে ম্যাপের লাইফসাইকেল, কার্যকারিতা এবং ডেটা ম্যানেজ করতে পারে। ক্লাসগুলি Android UI মডেলের উপর ভিত্তি করে ব্যবহারকারীর ইন্টার্যাকশনকে সমর্থন করে, যেমন ম্যাপের প্রাথমিক অবস্থা সেট করা এবং রানটাইমে ব্যবহারকারীর কাছ থেকে জেসচার ইনপুটের উত্তর দেওয়া।
ম্যাপ ম্যানেজ করার জন্য প্রধান ইন্টারফেস ও ক্লাস:
GoogleMap— অন্তর্নিহিত ম্যাপ ফিচার ও ডেটা ম্যানেজ করার এন্ট্রি পয়েন্ট। আপনার অ্যাপ শুধুমাত্রGoogleMapঅবজেক্ট অ্যাক্সেস করতে পারবে, যখন এটিSupportMapFragmentবাMapViewঅবজেক্ট থেকে ফিরিয়ে আনা হবে।SupportMapFragment—GoogleMapঅবজেক্টের লাইফসাইকেল ম্যানেজ করার জন্য একটি ফ্র্যাগমেন্ট।MapView—GoogleMapঅবজেক্টের লাইফসাইকেল ম্যানেজ করার জন্য ভিউ।OnMapReadyCallback— একটি কলব্যাক ইন্টারফেস যাGoogleMapঅবজেক্টের জন্য ইভেন্ট এবং ব্যবহারকারীর ইন্টারঅ্যাকশন ম্যানেজ করে।
একটি GoogleMap অবজেক্ট অটোমেটিক এইসব অপারেশন পারফর্ম করে:
- Google Maps পরিষেবার সাথে কানেক্ট করা হচ্ছে।
- ম্যাপ টাইল ডাউনলোড করা হচ্ছে।
- ডিভাইসের স্ক্রিনে টাইল দেখানো হচ্ছে।
- প্যান ও জুমের মতো বিভিন্ন কন্ট্রোল দেখানো।
- ম্যাপ সরিয়ে এবং জুম-ইন বা জুম-আউট করে প্যান ও জুম জেসচারের উত্তর দেওয়া।
আপনার অ্যাপে GoogleMap অবজেক্ট ব্যবহার করতে, আপনাকে অবশ্যই ম্যাপের জন্য কন্টেনার অবজেক্ট হিসেবে
SupportMapFragment বা MapView অবজেক্ট ব্যবহার করতে হবে এবং
তারপর কন্টেনার থেকে GoogleMap অবজেক্টটি ফিরিয়ে আনতে হবে। কন্টেনার ক্লাসগুলি Android ফ্র্যাগমেন্ট বা ভিউ থেকে প্রাপ্ত হয়, তাই তারা ম্যাপকে তাদের Android বেস ক্লাসের লাইফসাইকেল ম্যানেজমেন্ট এবং UI ক্ষমতা প্রদান করে।
SupportMapFragment ক্লাস হল GoogleMap অবজেক্টের জন্য আরও আধুনিক এবং সাধারণ কন্টেনার।
কোড দেখুন
নিম্নলিখিত কোডটি এই বিষয়ে ব্যবহৃত সম্পূর্ণ Java অ্যাক্টিভিটি থেকে নেওয়া হয়েছে, যখন ফ্র্যাগমেন্ট স্ট্যাটিক্যালি যোগ করা হয়। Android প্রোজেক্টটি খালি প্রোজেক্ট টেমপ্লেট থেকে তৈরি করা হয়েছে এবং তারপরে প্রোজেক্ট কনফিগারেশন গাইডের উপর ভিত্তি করে আপডেট করা হয়েছে। এই বিষয়ে উল্লেখ করা ধাপগুলি অনুসরণ করার পরে, আপনার কোড প্রোজেক্ট টেমপ্লেটের উপর ভিত্তি করে আলাদা হতে পারে।
package com.example.mapsetup; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; // Implement OnMapReadyCallback. public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout file as the content view. setContentView(R.layout.activity_main); // Get a handle to the fragment and register the callback. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } // Get a handle to the GoogleMap object and display marker. @Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); } }
ম্যাপ যোগ করতে
এই বিভাগে ম্যাপ কন্টেনার হিসেবে ফ্র্যাগমেন্ট ব্যবহার করে কীভাবে একটি বেসিক ম্যাপ যোগ করতে হয় তা বর্ণনা করা হয়েছে; তবে, আপনি এর পরিবর্তে একটি ভিউ ব্যবহার করতে পারেন। উদাহরণ হিসেবে, Github-এ RawMapViewDemoActivity দেখুন।
প্রাথমিক ধাপ:
SDK পেতে, API কী পান এবং প্রয়োজনীয় ফ্রেমওয়ার্ক যোগ করুন, এই ধাপগুলি অনুসরণ করুন:
অ্যাক্টিভিটিতে একটি
SupportMapFragmentঅবজেক্ট যোগ করুন যা ম্যাপ ম্যানেজ করবে। আপনি স্ট্যাটিক বা ডায়নামিক উপায়ে ফ্র্যাগমেন্ট যোগ করতে পারবেন।OnMapReadyCallbackইন্টারফেস প্রয়োগ করুন।কন্টেন্ট ভিউ হিসেবে লেআউট ফাইল সেট করুন।
আপনি ফ্র্যাগমেন্ট স্ট্যাটিক্যালি যোগ করলে, ফ্র্যাগমেন্টের হ্যান্ডেল পান।
কলব্যাক রেজিস্টার করুন।
GoogleMapঅবজেক্টের হ্যান্ডেল পান।
SupportMapFragment অবজেক্ট যোগ করা
আপনি স্ট্যাটিক বা ডায়নামিক উপায়ে আপনার অ্যাপে SupportMapFragment অবজেক্ট যোগ করতে পারবেন।
সবচেয়ে সহজ উপায় হল এটি স্ট্যাটিক্যালি যোগ করা। আপনি ফ্র্যাগমেন্ট ডায়নামিক্যালি যোগ করলে,
ফ্র্যাগমেন্টের উপর অতিরিক্ত অ্যাকশন পারফর্ম করতে পারবেন, যেমন রানটাইমে এটি সরানো এবং
পরিবর্তন করা।
স্ট্যাটিক্যালি ফ্র্যাগমেন্ট যোগ করতে
ম্যাপ ম্যানেজ করবে এমন অ্যাক্টিভিটির লেআউট ফাইলে:
fragmentএলিমেন্ট যোগ করুন।- নামের ঘোষণা যোগ করুন
xmlns:map="http://schemas.android.com/apk/res-auto". এটিmapsকাস্টম XML অ্যাট্রিবিউট ব্যবহার করার সুবিধা দেয়। fragmentএলিমেন্টে,android:nameঅ্যাট্রিবিউটকেcom.google.android.gms.maps.SupportMapFragmentহিসেবে সেট করুন।fragmentএলিমেন্টে,android:idঅ্যাট্রিবিউট যোগ করুন এবং এটি R.id.map রিসোর্স আইডি (@+id/map)-তে সেট করুন।
যেমন, এখানে একটি সম্পূর্ণ লেআউট ফাইল দেওয়া হল যাতে fragment এলিমেন্ট অন্তর্ভুক্ত আছে:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
ডায়নামিক্যালি ফ্র্যাগমেন্ট যোগ করতে
অ্যাক্টিভিটিতে:
- একটি
SupportMapFragmentইনস্ট্যান্স তৈরি করুন। - অ্যাক্টিভিটিতে ফ্র্যাগমেন্ট যোগ করে এমন ট্রানজ্যাকশন কমিট করুন। আরও তথ্যের জন্য, ফ্র্যাগমেন্ট ট্রানজ্যাকশন দেখুন।
যেমন:
Kotlin
val mapFragment = SupportMapFragment.newInstance() supportFragmentManager .beginTransaction() .add(R.id.map_container, mapFragment) .commit()
Java
SupportMapFragment mapFragment = SupportMapFragment.newInstance(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.map_container, mapFragment); fragmentTransaction.commit();
OnMapReadyCallback ইন্টারফেস প্রয়োগ করুন
নিম্নলিখিত উপায়ে অ্যাক্টিভিটি সংক্রান্ত ঘোষণা আপডেট করুন:
Kotlin
class MainActivity : AppCompatActivity(), OnMapReadyCallback { // ... }
Java
class MainActivity extends AppCompatActivity implements OnMapReadyCallback { // ... }
কন্টেন্ট ভিউ সেট করুন
আপনার অ্যাক্টিভিটির onCreate পদ্ধতিতে,
setContentView পদ্ধতি কল করুন এবং লেআউট ফাইলকে কন্টেন্ট ভিউ হিসেবে সেট করুন।
যেমন, লেআউট ফাইলের নাম main.xml হলে:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) }
Java
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
ফ্র্যাগমেন্টের হ্যান্ডেল পান এবং কলব্যাক রেজিস্টার করুন
ফ্র্যাগমেন্টের হ্যান্ডেল পেতে,
FragmentManager.findFragmentByIdমেথড কল করুন এবং আপনার লেআউট ফাইলে ফ্র্যাগমেন্টের রিসোর্স আইডি পাস করুন। আপনি ডায়নামিক্যালি ফ্র্যাগমেন্ট যোগ করলে, এই ধাপটি এড়িয়ে যান কারণ আপনি আগেই হ্যান্ডেল ফিরিয়ে এনেছেন।ফ্র্যাগমেন্টে কলব্যাক সেট করতে
getMapAsyncমেথড কল করুন।
যেমন, আপনি যদি ফ্র্যাগমেন্ট স্ট্যাটিক্যালি যোগ করে থাকেন:
Kotlin
val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this)
Java
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this);
GoogleMap অবজেক্টের হ্যান্ডেল পান
GoogleMapঅবজেক্টের হ্যান্ডেল পেতে onMapReady কলব্যাক পদ্ধতি ব্যবহার করুন। ব্যবহারকারীর ইনপুট গ্রহণ করার জন্য ম্যাপ রেডি হয়ে গেলে কলব্যাক ট্রিগার করা হয়। এটি GoogleMap ক্লাসের একটি নন-নাল ইনস্ট্যান্স প্রদান করে যা আপনি
ম্যাপ আপডেট করতে ব্যবহার করতে পারেন।
এই উদাহরণে, onMapReady কলব্যাক GoogleMap অবজেক্টের জন্য একটি হ্যান্ডেল ফিরিয়ে আনে এবং তারপর ম্যাপে একটি মার্কার যোগ করা হয়:
Kotlin
override fun onMapReady(googleMap: GoogleMap) { googleMap.addMarker( MarkerOptions() .position(LatLng(0.0, 0.0)) .title("Marker"), ) }
Java
@Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); }

আপনি অ্যাপটি সফলভাবে তৈরি করে রান করলে, এটি Null Island-এ (শূন্য ডিগ্রি অক্ষাংশ এবং শূন্য ডিগ্রি দ্রাঘিমাংশ) একটি মার্কার সহ একটি ম্যাপ দেখাবে।
সম্পূর্ণ অ্যাক্টিভিটির জন্য কোড দেখুন:
এর পরে কী করতে হবে
এইসব ধাপ সম্পূর্ণ করার পরে, আপনি ম্যাপ সেটিংস কনফিগার করতে পারবেন।