এই টপিকে বর্ণনা করা হয়েছে, কীভাবে প্রজেক্টটিকে অ্যান্ড্রয়েডের জন্য ম্যাপস এসডিকে (Maps SDK for Android) ব্যবহারের জন্য কনফিগার করার পর একটি অ্যান্ড্রয়েড অ্যাপে একটি বেসিক ম্যাপ যোগ করতে হয়। ম্যাপ যোগ করার পর, আপনি ম্যাপের ধরন এবং ফিচারগুলো পরিবর্তন করতে পারবেন।
সংক্ষিপ্ত বিবরণ
অ্যান্ড্রয়েডের জন্য ম্যাপস এসডিকে এমন বেশ কিছু ক্লাস সরবরাহ করে, যা আপনার অ্যাপ একটি ম্যাপের লাইফসাইকেল, কার্যকারিতা এবং ডেটা পরিচালনা করতে ব্যবহার করতে পারে। এই ক্লাসগুলো অ্যান্ড্রয়েড ইউআই মডেলের উপর ভিত্তি করে ব্যবহারকারীর ইন্টারঅ্যাকশন সমর্থন করে, যেমন ম্যাপের প্রাথমিক অবস্থা নির্ধারণ করা এবং রানটাইমে ব্যবহারকারীর জেসচার ইনপুটে সাড়া দেওয়া।
ম্যাপ পরিচালনার জন্য প্রধান ইন্টারফেস এবং ক্লাসসমূহ:
GoogleMap— অন্তর্নিহিত মানচিত্রের বৈশিষ্ট্য এবং ডেটা পরিচালনার প্রবেশদ্বার। আপনার অ্যাপ শুধুমাত্র একটিSupportMapFragmentবাMapViewঅবজেক্ট থেকেGoogleMapঅবজেক্টটি পুনরুদ্ধার করার পরেই তা অ্যাক্সেস করতে পারে।SupportMapFragment— একটিGoogleMapঅবজেক্টের জীবনচক্র পরিচালনার জন্য ব্যবহৃত একটি ফ্র্যাগমেন্ট ।MapView— একটিGoogleMapঅবজেক্টের জীবনচক্র পরিচালনা করার জন্য ব্যবহৃত ভিউ ।OnMapReadyCallback— একটি কলব্যাক ইন্টারফেস যাGoogleMapঅবজেক্টের ইভেন্ট এবং ব্যবহারকারীর কার্যকলাপ পরিচালনা করে।
একটি GoogleMap অবজেক্ট স্বয়ংক্রিয়ভাবে এই অপারেশনগুলো সম্পাদন করে:
- গুগল ম্যাপস পরিষেবার সাথে সংযোগ স্থাপন করা হচ্ছে।
- মানচিত্রের টাইলস ডাউনলোড করা হচ্ছে।
- ডিভাইসের স্ক্রিনে টাইলসগুলো প্রদর্শন করা হচ্ছে।
- প্যান ও জুমের মতো বিভিন্ন নিয়ন্ত্রণ প্রদর্শন করা হচ্ছে।
- প্যান এবং জুম অঙ্গভঙ্গির মাধ্যমে ম্যাপটি সরানো এবং জুম ইন বা আউট করা।
আপনার অ্যাপে একটি GoogleMap অবজেক্ট ব্যবহার করতে হলে, আপনাকে অবশ্যই ম্যাপের কন্টেইনার অবজেক্ট হিসেবে একটি SupportMapFragment অথবা MapView অবজেক্ট ব্যবহার করতে হবে এবং তারপর কন্টেইনার থেকে GoogleMap অবজেক্টটি পুনরুদ্ধার করতে হবে। যেহেতু কন্টেইনার ক্লাসগুলো অ্যান্ড্রয়েড ফ্র্যাগমেন্ট বা ভিউ থেকে উদ্ভূত হয়, তাই এগুলো ম্যাপকে তাদের অ্যান্ড্রয়েড বেস ক্লাসের লাইফসাইকেল ম্যানেজমেন্ট এবং UI সক্ষমতা প্রদান করে। SupportMapFragment ক্লাসটি হলো একটি GoogleMap অবজেক্টের জন্য অধিক আধুনিক এবং প্রচলিত কন্টেইনার।
কোডটি দেখুন
নিম্নলিখিত কোডটি এই টপিকে স্ট্যাটিক্যালি একটি ফ্র্যাগমেন্ট যোগ করার জন্য ব্যবহৃত সম্পূর্ণ জাভা অ্যাক্টিভিটি থেকে নেওয়া হয়েছে। অ্যান্ড্রয়েড প্রজেক্টটি 'এমটি' প্রজেক্ট টেমপ্লেট থেকে তৈরি করা হয়েছিল এবং তারপর প্রজেক্ট কনফিগারেশন গাইড অনুসারে আপডেট করা হয়েছে। এই টপিকের ধাপগুলো অনুসরণ করার পর, আপনার কোড প্রজেক্ট টেমপ্লেটের উপর ভিত্তি করে ভিন্ন হতে পারে।
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")); } }
একটি মানচিত্র যোগ করতে
এই অংশে একটি ফ্র্যাগমেন্টকে ম্যাপ কন্টেইনার হিসেবে ব্যবহার করে কীভাবে একটি সাধারণ ম্যাপ যোগ করতে হয় তা বর্ণনা করা হয়েছে; তবে, আপনি এর পরিবর্তে একটি ভিউও ব্যবহার করতে পারেন। একটি উদাহরণের জন্য, গিটহাবে 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ইনস্ট্যান্স তৈরি করুন। - একটি ট্রানজ্যাকশন সম্পন্ন করুন যা ফ্র্যাগমেন্টটিকে অ্যাক্টিভিটিতে যুক্ত করে। আরও তথ্যের জন্য, ফ্র্যাগমেন্ট ট্রানজ্যাকশন দেখুন।
উদাহরণস্বরূপ:
কোটলিন
val mapFragment = SupportMapFragment.newInstance() supportFragmentManager .beginTransaction() .add(R.id.my_container, mapFragment) .commit()
জাভা
SupportMapFragment mapFragment = SupportMapFragment.newInstance(); getSupportFragmentManager() .beginTransaction() .add(R.id.my_container, mapFragment) .commit();
OnMapReadyCallback ইন্টারফেসটি বাস্তবায়ন করুন
অ্যাক্টিভিটি ডিক্লারেশনটি নিম্নরূপভাবে আপডেট করুন:
কোটলিন
class MainActivity : AppCompatActivity(), OnMapReadyCallback { // ... }
জাভা
class MainActivity extends AppCompatActivity implements OnMapReadyCallback { // ... }
বিষয়বস্তু দৃশ্য সেট করুন
আপনার অ্যাক্টিভিটির onCreate মেথডে, setContentView মেথডটি কল করুন এবং লেআউট ফাইলটিকে কন্টেন্ট ভিউ হিসেবে সেট করুন।
উদাহরণস্বরূপ, যদি লেআউট ফাইলের নাম main.xml হয়:
কোটলিন
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) }
জাভা
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
ফ্র্যাগমেন্টের হ্যান্ডেলটি নিন এবং কলব্যাকটি রেজিস্টার করুন।
ফ্র্যাগমেন্টের হ্যান্ডেল পেতে,
FragmentManager.findFragmentByIdমেথডটি কল করুন এবং আপনার লেআউট ফাইলে থাকা ফ্র্যাগমেন্টের রিসোর্স আইডিটি পাস করুন। যদি আপনি ফ্র্যাগমেন্টটি ডাইনামিকভাবে যোগ করে থাকেন , তবে এই ধাপটি এড়িয়ে যান, কারণ আপনি ইতিমধ্যেই হ্যান্ডেলটি সংগ্রহ করেছেন।ফ্র্যাগমেন্টে কলব্যাক সেট করতে
getMapAsyncমেথডটি কল করুন।
উদাহরণস্বরূপ, যদি আপনি ফ্র্যাগমেন্টটি স্ট্যাটিক্যালি যোগ করে থাকেন:
কোটলিন
val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this)
জাভা
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this);
GoogleMap অবজেক্টটির একটি হ্যান্ডেল পান
GoogleMap অবজেক্টের হ্যান্ডেল পেতে onMapReady কলব্যাক মেথডটি ব্যবহার করুন। ম্যাপ যখন ব্যবহারকারীর ইনপুট গ্রহণের জন্য প্রস্তুত হয়, তখন এই কলব্যাকটি ট্রিগার হয়। এটি GoogleMap ক্লাসের একটি নন-নাল ইনস্ট্যান্স প্রদান করে, যা আপনি ম্যাপ আপডেট করার জন্য ব্যবহার করতে পারেন।
এই উদাহরণে onMapReady কলব্যাকটি GoogleMap অবজেক্টের একটি হ্যান্ডেল গ্রহণ করে এবং তারপরে মানচিত্রে একটি মার্কার যুক্ত করা হয়:
কোটলিন
override fun onMapReady(googleMap: GoogleMap) { googleMap.addMarker( MarkerOptions() .position(LatLng(0.0, 0.0)) .title("Marker") ) }
জাভা
@Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); }

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