আপনি Android এর জন্য মানচিত্র SDK ব্যবহার করার জন্য প্রকল্পটি কনফিগার করার পরে একটি Android অ্যাপে কীভাবে একটি মৌলিক মানচিত্র যুক্ত করবেন এই বিষয়টি বর্ণনা করে৷ একটি মানচিত্র যোগ করার পরে, আপনি মানচিত্রের ধরন এবং বৈশিষ্ট্যগুলি পরিবর্তন করতে পারেন৷
ওভারভিউ
অ্যান্ড্রয়েডের জন্য মানচিত্র SDK অনেকগুলি ক্লাস সরবরাহ করে যা আপনার অ্যাপ একটি মানচিত্রের জীবনচক্র, কার্যকারিতা এবং ডেটা পরিচালনা করতে ব্যবহার করতে পারে৷ ক্লাসগুলি অ্যান্ড্রয়েড UI মডেলের উপর ভিত্তি করে ব্যবহারকারীর ইন্টারঅ্যাকশনগুলিকে সমর্থন করে, যেমন মানচিত্রের প্রাথমিক অবস্থা সেট করা এবং রানটাইমে ব্যবহারকারীর কাছ থেকে ইঙ্গিত ইনপুটের প্রতিক্রিয়া জানানো।
মানচিত্র পরিচালনার জন্য প্রধান ইন্টারফেস এবং ক্লাস:
GoogleMap
— অন্তর্নিহিত মানচিত্র বৈশিষ্ট্য এবং ডেটা পরিচালনার জন্য প্রবেশ বিন্দু। আপনার অ্যাপ শুধুমাত্র একটিGoogleMap
অবজেক্ট অ্যাক্সেস করতে পারে যখন এটি একটিSupportMapFragment
বাMapView
অবজেক্ট থেকে পুনরুদ্ধার করা হয়।SupportMapFragment
—GoogleMap
অবজেক্টের জীবনচক্র পরিচালনার জন্য একটি খণ্ড ।MapView
— একটিGoogleMap
অবজেক্টের জীবনচক্র পরিচালনার জন্য একটি দৃশ্য ।OnMapReadyCallback
— একটি কলব্যাক ইন্টারফেস যাGoogleMap
অবজেক্টের জন্য ইভেন্ট এবং ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করে।
একটি GoogleMap
অবজেক্ট স্বয়ংক্রিয়ভাবে এই ক্রিয়াকলাপগুলি সম্পাদন করে:
- Google Maps পরিষেবার সাথে সংযুক্ত হচ্ছে৷
- মানচিত্রের টাইলস ডাউনলোড করা হচ্ছে।
- ডিভাইসের স্ক্রিনে টাইলস দেখানো হচ্ছে।
- বিভিন্ন নিয়ন্ত্রণ যেমন প্যান এবং জুম প্রদর্শন করা হচ্ছে।
- মানচিত্র সরানো এবং জুম ইন বা আউট করে প্যান এবং জুম অঙ্গভঙ্গির প্রতিক্রিয়া।
আপনার অ্যাপে একটি 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")); } }
একটি মানচিত্র যোগ করতে
এই বিভাগটি বর্ণনা করে কিভাবে একটি মানচিত্র ধারক হিসাবে একটি খণ্ড ব্যবহার করে একটি মৌলিক মানচিত্র যোগ করতে হয়; যাইহোক, আপনি পরিবর্তে একটি ভিউ ব্যবহার করতে পারেন। একটি উদাহরণের জন্য, Github-এ RawMapViewDemoActivity দেখুন।
মৌলিক পদক্ষেপ:
SDK পেতে, একটি API কী প্রাপ্ত করুন এবং প্রয়োজনীয় ফ্রেমওয়ার্ক যোগ করুন, এই ধাপগুলি অনুসরণ করুন:
ক্রিয়াকলাপে একটি
SupportMapFragment
অবজেক্ট যোগ করুন যা মানচিত্রটি পরিচালনা করবে। আপনি স্থির বা গতিশীলভাবে খণ্ডটি যোগ করতে পারেন।OnMapReadyCallback
ইন্টারফেস প্রয়োগ করুন।লেআউট ফাইলটিকে কন্টেন্ট ভিউ হিসেবে সেট করুন।
আপনি যদি স্থিরভাবে খণ্ডটি যোগ করেন, তাহলে খণ্ডটিতে একটি হ্যান্ডেল পান।
কলব্যাক নিবন্ধন করুন।
GoogleMap
অবজেক্টে একটি হ্যান্ডেল পান।
একটি SupportMapFragment অবজেক্ট যোগ করুন
আপনি স্ট্যাটিক বা গতিশীলভাবে আপনার অ্যাপে একটি SupportMapFragment
অবজেক্ট যোগ করতে পারেন। সবচেয়ে সহজ উপায় হল স্থিরভাবে যোগ করা। যদি আপনি গতিশীলভাবে খণ্ডটি যোগ করেন, আপনি খণ্ডটিতে অতিরিক্ত ক্রিয়া সম্পাদন করতে পারেন, যেমন রানটাইমে এটি অপসারণ এবং প্রতিস্থাপন করা।
স্ট্যাটিক্যালি একটি টুকরা যোগ করতে
ক্রিয়াকলাপের বিন্যাস ফাইলে যা মানচিত্রটি পরিচালনা করবে:
- একটি
fragment
উপাদান যোগ করুন। - নামের ঘোষণা যোগ করুন
xmlns:map="http://schemas.android.com/apk/res-auto"
। এটিmaps
কাস্টম XML বৈশিষ্ট্য ব্যবহার করতে সক্ষম করে। -
fragment
এলিমেন্টে,com.google.android.gms.maps.SupportMapFragment
এandroid:name
অ্যাট্রিবিউট সেট করুন। -
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")); }
আপনি যখন সফলভাবে অ্যাপটি তৈরি এবং চালান , তখন এটি নাল আইল্যান্ডে (শূন্য ডিগ্রি অক্ষাংশ এবং শূন্য ডিগ্রি দ্রাঘিমাংশ) একটি মার্কার সহ একটি মানচিত্র প্রদর্শন করবে।
সম্পূর্ণ কার্যকলাপের জন্য কোড দেখুন:
এরপর কি
আপনি এই পদক্ষেপগুলি সম্পূর্ণ করার পরে, আপনি মানচিত্র সেটিংস কনফিগার করতে পারেন৷