এই বিষয়ে বর্ণনা করা হয়েছে যে, Android এর জন্য Maps SDK ব্যবহারের জন্য প্রকল্পটি কনফিগার করার পর, Android অ্যাপে কীভাবে একটি মৌলিক মানচিত্র যোগ করবেন। একটি মানচিত্র যোগ করার পরে, আপনি মানচিত্রের ধরণ এবং বৈশিষ্ট্যগুলি পরিবর্তন করতে পারেন।
সংক্ষিপ্ত বিবরণ
অ্যান্ড্রয়েডের জন্য ম্যাপস SDK বেশ কয়েকটি ক্লাস প্রদান করে যা আপনার অ্যাপ একটি মানচিত্রের জীবনচক্র, কার্যকারিতা এবং ডেটা পরিচালনা করতে ব্যবহার করতে পারে। ক্লাসগুলি অ্যান্ড্রয়েড UI মডেলের উপর ভিত্তি করে ব্যবহারকারীর মিথস্ক্রিয়া সমর্থন করে, যেমন মানচিত্রের প্রাথমিক অবস্থা সেট করা এবং রানটাইমের সময় ব্যবহারকারীর অঙ্গভঙ্গি ইনপুটের প্রতিক্রিয়া জানানো।
মানচিত্র পরিচালনার জন্য প্রধান ইন্টারফেস এবং ক্লাস:
GoogleMap— অন্তর্নিহিত মানচিত্রের বৈশিষ্ট্য এবং ডেটা পরিচালনার জন্য এন্ট্রি পয়েন্ট। আপনার অ্যাপটি কেবল একটিGoogleMapঅবজেক্ট অ্যাক্সেস করতে পারে যখন এটি একটিSupportMapFragmentবাMapViewঅবজেক্ট থেকে পুনরুদ্ধার করা হয়।SupportMapFragment— একটিGoogleMapঅবজেক্টের জীবনচক্র পরিচালনার জন্য একটি অংশ ।MapView—GoogleMapঅবজেক্টের জীবনচক্র পরিচালনার জন্য একটি ভিউ ।OnMapReadyCallback— একটি কলব্যাক ইন্টারফেস যাGoogleMapঅবজেক্টের জন্য ইভেন্ট এবং ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করে।
একটি GoogleMap অবজেক্ট স্বয়ংক্রিয়ভাবে এই ক্রিয়াকলাপগুলি সম্পাদন করে:
- গুগল ম্যাপস পরিষেবার সাথে সংযুক্ত হচ্ছে।
- মানচিত্রের টাইলস ডাউনলোড করা হচ্ছে।
- ডিভাইসের স্ক্রিনে টাইলস প্রদর্শন করা হচ্ছে।
- প্যান এবং জুমের মতো বিভিন্ন নিয়ন্ত্রণ প্রদর্শন করা হচ্ছে।
- ম্যাপটি সরানোর মাধ্যমে এবং জুম ইন বা আউট করে প্যান এবং জুম অঙ্গভঙ্গির প্রতিক্রিয়া জানানো।
আপনার অ্যাপে GoogleMap অবজেক্ট ব্যবহার করার জন্য, আপনাকে ম্যাপের জন্য কন্টেইনার অবজেক্ট হিসেবে SupportMapFragment অথবা MapView অবজেক্ট ব্যবহার করতে হবে এবং তারপর কন্টেইনার থেকে GoogleMap অবজেক্টটি পুনরুদ্ধার করতে হবে। যেহেতু কন্টেইনার ক্লাসগুলি একটি অ্যান্ড্রয়েড ফ্র্যাগমেন্ট বা ভিউ থেকে উদ্ভূত হয়, তাই তারা ম্যাপকে তাদের অ্যান্ড্রয়েড বেস ক্লাসের লাইফসাইকেল ম্যানেজমেন্ট এবং UI ক্ষমতা প্রদান করে। SupportMapFragment ক্লাস হল GoogleMap অবজেক্টের জন্য আরও আধুনিক এবং সাধারণ কন্টেইনার।
কোডটি দেখুন
নিচের কোডটি এই বিষয়ে ব্যবহৃত সম্পূর্ণ জাভা অ্যাক্টিভিটি থেকে নেওয়া হয়েছে যখন স্ট্যাটিক্যালি একটি ফ্র্যাগমেন্ট যোগ করা হয়। অ্যান্ড্রয়েড প্রজেক্টটি Empty প্রজেক্ট টেমপ্লেট থেকে তৈরি করা হয়েছিল, এবং তারপর প্রজেক্ট কনফিগারেশন গাইডের উপর ভিত্তি করে আপডেট করা হয়েছিল। এই বিষয়ের ধাপগুলি সম্পাদন করার পরে, আপনার কোডটি প্রজেক্ট টেমপ্লেটের উপর ভিত্তি করে ভিন্ন হতে পারে।
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ইনস্ট্যান্স তৈরি করুন। - এমন একটি লেনদেন করুন যা কার্যকলাপে খণ্ডটি যোগ করে। আরও তথ্যের জন্য, খণ্ড লেনদেন দেখুন।
উদাহরণস্বরূপ:
কোটলিন
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")); }
যখন আপনি অ্যাপটি সফলভাবে তৈরি এবং চালাবেন , তখন এটি নাল আইল্যান্ডের (শূন্য ডিগ্রি অক্ষাংশ এবং শূন্য ডিগ্রি দ্রাঘিমাংশ) একটি চিহ্নিতকারী সহ একটি মানচিত্র প্রদর্শন করবে।
সম্পূর্ণ কার্যকলাপের জন্য কোডটি দেখুন:
এরপর কি?
এই ধাপগুলি সম্পন্ন করার পরে, আপনি মানচিত্র সেটিংস কনফিগার করতে পারেন।