একটি মানচিত্র যোগ করুন

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

এই টপিকে বর্ণনা করা হয়েছে, কীভাবে প্রজেক্টটিকে অ্যান্ড্রয়েডের জন্য ম্যাপস এসডিকে (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 দেখুন।

মৌলিক ধাপগুলো:

  1. SDK পেতে, একটি API কী সংগ্রহ করতে এবং প্রয়োজনীয় ফ্রেমওয়ার্কগুলো যোগ করতে, নিচের ধাপগুলো অনুসরণ করুন:

    1. গুগল ক্লাউড কনসোলে সেট আপ করুন

    2. একটি এপিআই কী ব্যবহার করুন

    3. Set up an Android Studio project

  2. যে অ্যাক্টিভিটি ম্যাপটি পরিচালনা করবে, তাতে একটি SupportMapFragment অবজেক্ট যোগ করুন। আপনি ফ্র্যাগমেন্টটি স্ট্যাটিক্যালি বা ডাইনামিক্যালি যোগ করতে পারেন।

  3. OnMapReadyCallback ইন্টারফেসটি বাস্তবায়ন করুন।

  4. লেআউট ফাইলটিকে কন্টেন্ট ভিউ হিসেবে সেট করুন।

  5. যদি আপনি ফ্র্যাগমেন্টটি স্ট্যাটিক্যালি যোগ করে থাকেন, তাহলে ফ্র্যাগমেন্টটির একটি হ্যান্ডেল নিন।

  6. কলব্যাকটি নিবন্ধন করুন।

  7. GoogleMap অবজেক্টটির একটি হ্যান্ডেল নিন।

একটি SupportMapFragment অবজেক্ট যোগ করুন

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

একটি ফ্র্যাগমেন্ট স্থিরভাবে যোগ করতে

যে অ্যাক্টিভিটিটি ম্যাপটি পরিচালনা করবে তার লেআউট ফাইলে :

  1. একটি fragment এলিমেন্ট যোগ করুন।
  2. xmlns:map="http://schemas.android.com/apk/res-auto" এই নেম ডিক্লারেশনটি যোগ করুন। এটি maps কাস্টম XML অ্যাট্রিবিউট ব্যবহারের সুবিধা দেয়।
  3. fragment এলিমেন্টের মধ্যে android:name অ্যাট্রিবিউটটি com.google.android.gms.maps.SupportMapFragment এ সেট করুন।
  4. 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"/>

গতিশীলভাবে একটি ফ্র্যাগমেন্ট যোগ করতে

কার্যকলাপে:

  1. একটি SupportMapFragment ইনস্ট্যান্স তৈরি করুন।
  2. একটি ট্রানজ্যাকশন সম্পন্ন করুন যা ফ্র্যাগমেন্টটিকে অ্যাক্টিভিটিতে যুক্ত করে। আরও তথ্যের জন্য, ফ্র্যাগমেন্ট ট্রানজ্যাকশন দেখুন।

উদাহরণস্বরূপ:

কোটলিন

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);
}

      

ফ্র্যাগমেন্টের হ্যান্ডেলটি নিন এবং কলব্যাকটি রেজিস্টার করুন।

  1. ফ্র্যাগমেন্টের হ্যান্ডেল পেতে, FragmentManager.findFragmentById মেথডটি কল করুন এবং আপনার লেআউট ফাইলে থাকা ফ্র্যাগমেন্টের রিসোর্স আইডিটি পাস করুন। যদি আপনি ফ্র্যাগমেন্টটি ডাইনামিকভাবে যোগ করে থাকেন , তবে এই ধাপটি এড়িয়ে যান, কারণ আপনি ইতিমধ্যেই হ্যান্ডেলটি সংগ্রহ করেছেন।

  2. ফ্র্যাগমেন্টে কলব্যাক সেট করতে 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"));
}

      

নাল আইল্যান্ডকে কেন্দ্র করে মানচিত্র ও মার্কারসহ স্ক্রিনশট।

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

সম্পূর্ণ অ্যাক্টিভিটির কোডটি দেখুন:

সম্পূর্ণ কার্যকলাপ


এরপর কী?

এই ধাপগুলো সম্পন্ন করার পর, আপনি মানচিত্রের সেটিংস কনফিগার করতে পারবেন।