একটি মানচিত্র সেট আপ করুন

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

আপনার কনজিউমার অ্যাপে কোনো ট্রিপ অনুসরণ করতে, আপনাকে প্রথমে একটি ম্যাপ নির্ধারণ করতে হবে এবং প্রয়োজন হলে ভেক্টর ম্যাপের জন্য সাপোর্ট যোগ করতে হবে।

আপনার অ্যাপে একটি মানচিত্র সেট আপ করতে, এই ধাপগুলো অনুসরণ করুন:

  1. একটি ভ্রমণপথ অনুসরণ করার জন্য একটি মানচিত্রের অংশ নির্ধারণ করুন
  2. ম্যাপের বেস লেয়ার এবং ভিউ কন্ট্রোলারের জন্য সমর্থন যোগ করুন
  3. প্রয়োজনে ভেক্টর ম্যাপ প্রদর্শনের জন্য অ্যান্ড্রয়েড ভেক্টর গ্রাফিক্সের সমর্থন যোগ করুন

একটি মানচিত্র নির্ধারণ করার পরে, আপনি এর দৃশ্যমান অভিজ্ঞতাকে নিজের মতো করে সাজাতে অতিরিক্ত ভিউ এবং ক্যামেরা নিয়ন্ত্রণ যোগ করতে পারেন। আরও বিস্তারিত জানতে, ‘একটি মানচিত্র স্টাইল করুন’ দেখুন।

ধাপ ১: একটি ভ্রমণপথ অনুসরণ করার জন্য মানচিত্রের একটি অংশ নির্ধারণ করুন।

আপনার কনজিউমার অ্যাপে অন-ডিমান্ড ট্রিপ শেয়ার করার জন্য, আপনি একটি ম্যাপ ফ্র্যাগমেন্ট বা ভিউ যোগ করে ম্যাপটি সংজ্ঞায়িত করেন। আপনার ম্যাপ সংজ্ঞায়িত করতে, এই পদ্ধতিগুলোর মধ্যে যেকোনো একটি অনুসরণ করুন:

  • ConsumerMapFragment : একটি Fragment ব্যবহার করে আপনার ম্যাপ সংজ্ঞায়িত করতে এটি ব্যবহার করুন।

  • ConsumerMapView : একটি View সহ মানচিত্র সংজ্ঞায়িত করতে ব্যবহৃত হয়।

উভয় পদ্ধতির ক্ষেত্রেই বৈশিষ্ট্যগুলো একই, তাই আপনার অ্যাপ্লিকেশনের জন্য কোন পদ্ধতিটি বেশি ভালো তা বেছে নিন।

পরবর্তী অংশে উভয় পদ্ধতি আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।

একটি মানচিত্রের অংশ বা দৃশ্য যোগ করুন

অ্যান্ড্রয়েড ফ্র্যাগমেন্ট বা ভিউ ব্যবহার করে ভ্রমণের অগ্রগতি দেখানোর জন্য একটি মানচিত্র তৈরি করতে, এই ধাপগুলো অনুসরণ করুন এবং কোডের উদাহরণগুলো দেখুন।

  1. /res/layout এ অবস্থিত আপনার অ্যাপ্লিকেশন লেআউট XML ফাইলে একটি ফ্র্যাগমেন্ট বা ভিউ সংজ্ঞায়িত করুন। ট্রিপ ম্যাপটিকে ConsumerMapFragment ব্যবহার করে একটি ফ্র্যাগমেন্ট হিসেবে, অথবা ConsumerMapView ব্যবহার করে একটি ভিউ হিসেবে সংজ্ঞায়িত করুন।

    এরপর ফ্র্যাগমেন্ট বা ভিউটি ট্রিপ ম্যাপে অ্যাক্সেস দেয়, যা আপনার অ্যাপ অ্যাক্সেস ও পরিবর্তন করতে পারে। ম্যাপটি ConsumerController এর একটি হ্যান্ডেলও প্রদান করে, যা আপনার অ্যাপকে কনজিউমার এক্সপেরিয়েন্স নিয়ন্ত্রণ ও কাস্টমাইজ করার সুযোগ দেয়।

  2. আপনার onCreate() মেথড থেকে getConsumerGoogleMapAsync(callback) কল করুন, যা কলব্যাকে অ্যাসিঙ্ক্রোনাসভাবে ConsumerGoogleMap রিটার্ন করে।

  3. ভ্রমণের অগ্রগতি দেখতে এবং প্রয়োজন অনুযায়ী আপডেট করতে ConsumerGoogleMap ব্যবহার করুন।

ConsumerMapFragment যোগ করার একটি উদাহরণ

  1. নিম্নলিখিত কোড উদাহরণে দেখানো অনুযায়ী আপনার অ্যাপ্লিকেশন লেআউট XML ফাইলে ফ্র্যাগমেন্টটি সংজ্ঞায়িত করুন।

    <fragment
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment"
        android:id="@+id/consumer_map_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
  2. onCreate() মেথড থেকে getConsumerGoogleMapAsync() ফাংশনটিকে কল করুন।

জাভা

 public class SampleAppActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {

     // Find the ConsumerMapFragment.
     ConsumerMapFragment consumerMapFragment =
         (ConsumerMapFragment) fragmentManager.findFragmentById(R.id.consumer_map_fragment);

     // Initiate the callback that returns the map.
     if (consumerMapFragment != null) {
       consumerMapFragment.getConsumerGoogleMapAsync(
           new ConsumerMapReadyCallback() {
             // The map returned in the callback is used to access the ConsumerController.
             @Override
             public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
               ConsumerController consumerController = consumerGoogleMap.getConsumerController();
             }
           });
     }
   }

 }

কোটলিন

 class SampleAppActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
     // Find the ConsumerMapFragment.
     val consumerMapFragment =
       fragmentManager.findFragmentById(R.id.consumer_map_fragment) as ConsumerMapFragment

     consumerMapFragment.getConsumerGoogleMapAsync(
       object : ConsumerMapReadyCallback() {
         override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
           val consumerController = consumerGoogleMap.getConsumerController()!!
         }
       }
     )
   }
 }

ConsumerMapView যোগ করার একটি উদাহরণ

  1. আপনার XML ফাইলে সংজ্ঞায়িত করা অনুযায়ী ভিউটি একটি ফ্র্যাগমেন্টে অথবা একটি অ্যাক্টিভিটিতে ব্যবহার করুন।

     <com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapView
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/consumer_map_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
    
  2. onCreate() থেকে getConsumerGoogleMapAsync() কলটি করুন। কলব্যাক প্যারামিটারের পাশাপাশি, নিম্নলিখিত বিবরণগুলি অন্তর্ভুক্ত করুন:

    • ধারণকারী অ্যাক্টিভিটি বা ফ্র্যাগমেন্ট। অ্যাক্টিভিটি বা ফ্র্যাগমেন্টের বেস ক্লাস অবশ্যই যথাক্রমে FragmentActivity বা support Fragment হতে হবে, কারণ এগুলি এর লাইফসাইকেলে অ্যাক্সেস প্রদান করে।

    • GoogleMapOptions (যা null হতে পারে), যাতে MapView এর জন্য কনফিগারেশন অ্যাট্রিবিউটগুলো থাকে।

জাভা

public class SampleAppActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    ConsumerMapView mapView = findViewById(R.id.consumer_map_view);

    if (mapView != null) {
      mapView.getConsumerGoogleMapAsync(
          new ConsumerMapReadyCallback() {
            // The map returned in the callback is used to access the ConsumerController.
            @Override
            public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
              ConsumerController consumerController = consumerGoogleMap.getConsumerController();
            }
          }, this, null);
    }
  }

}

কোটলিন

class SampleAppActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView

    mapView.getConsumerGoogleMapAsync(
      object : ConsumerMapReadyCallback() {
        // The map returned in the callback is used to access the ConsumerController.
        override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
          val consumerController = consumerGoogleMap.getConsumerController()!!
        }
      },
      /* fragmentActivity= */ this,
      /* googleMapOptions= */ null,
    )
  }
}

একটি ফ্র্যাগমেন্টের মধ্যে থাকা MapView অ্যাক্টিভিটির মধ্যে থাকা MapView এর পূর্ববর্তী উদাহরণের মতোই, তবে পার্থক্য হলো ফ্র্যাগমেন্টটি তার onCreateView() মেথডের মধ্যে MapView সহ লেআউটটি ইনফ্লেট করে।

জাভা

public class MapViewInFragment extends Fragment {

  @Override
  public View onCreateView(
      @NonNull LayoutInflater layoutInflater,
      @Nullable ViewGroup viewGroup,
      @Nullable Bundle bundle) {
    return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false);
  }

}

কোটলিন

class MapViewInFragment : Fragment() {
  override fun onCreateView(
    layoutInflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?,
  ): View {
    return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false)
  }
}

ধাপ ২: ম্যাপের বেস লেয়ার এবং ভিউ কন্ট্রোলারের জন্য সাপোর্ট যোগ করুন

আপনার অ্যাপে ভ্রমণের অগ্রগতি শেয়ার করতে, ConsumerGoogleMap এবং ConsumerController ক্লাসগুলো যোগ করুন।

  • ConsumerMapFragment অথবা ConsumerMapView থেকে ConsumerGoogleMap নিন, যাদের উভয়ই ConsumerMapReadyCallback এ অ্যাসিঙ্ক্রোনাসভাবে ConsumerGoogleMap রিটার্ন করে।

    ConsumerGoogleMap হলো GoogleMap ক্লাসের একটি র‍্যাপার ক্লাস। এটি GoogleMap এর সমতুল্য একটি এপিআই (API) ব্যবহার করে, যাতে আপনার অ্যাপ ম্যাপটির সাথে ইন্টারঅ্যাক্ট করতে পারে। এইভাবে, আপনার অ্যাপ একই অন্তর্নিহিত গুগল ম্যাপের সাথে নির্বিঘ্নে ইন্টারঅ্যাক্ট করতে পারে। উদাহরণস্বরূপ, GoogleMap শুধুমাত্র একটি কলব্যাক রেজিস্ট্রেশনের অনুমতি দেয়, কিন্তু ConsumerGoogleMap দ্বৈত রেজিস্টার্ড কলব্যাক সমর্থন করে। এই কলব্যাকগুলো আপনার অ্যাপকে এমন কলব্যাক রেজিস্টার করার সুযোগ দেয় যা ক্রমানুসারে কল করা হয়।

  • getConsumerController() ফাংশনে ConsumerGoogleMap থেকে ConsumerController পান।

    ConsumerController ট্রিপ শেয়ারিং ফিচার, যেমন ট্রিপ মনিটর করা, ট্রিপের স্ট্যাটাস নিয়ন্ত্রণ করা এবং লোকেশন সেট করার সুবিধা প্রদান করে।

আপনার অ্যাপে জাভা এবং কোটলিনে কীভাবে ConsumerGoogleMap এবং ConsumerController যোগ করবেন, তার জন্য নিম্নলিখিত উদাহরণগুলি দেখুন।

জাভা

private ConsumerGoogleMap consumerGoogleMap;
private ConsumerController consumerController;
private ConsumerMapView consumerMapView;

consumerMapView.getConsumerGoogleMapAsync(
    new ConsumerMapReadyCallback() {
      @Override
      public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerMap) {
        consumerGoogleMap = consumerMap;
        consumerController = consumerMap.getConsumerController();
      }
    },
    this, null);

কোটলিন

var consumerGoogleMap: ConsumerGoogleMap
var consumerController: ConsumerController
val consumerMapView = findViewById(R.id.consumer_map_view) as ConsumerMapView

consumerMapView.getConsumerGoogleMapAsync(
  object : ConsumerMapReadyCallback() {
    override fun onConsumerMapReady(consumerMap: ConsumerGoogleMap) {
      consumerGoogleMap = consumerMap
      consumerController = consumerMap.getConsumerController()
    },
    /* fragmentActivity= */ this,
    /* googleMapOptions= */ null,
  }
)

ধাপ ৩: অ্যান্ড্রয়েড ভেক্টর গ্রাফিক্সের জন্য সমর্থন যোগ করুন

আপনার অ্যাপ ডিজাইনে যদি ভেক্টর গ্রাফিক্সের সমর্থনের প্রয়োজন হয়, তাহলে এই ধাপগুলো অনুসরণ করে অ্যান্ড্রয়েড ডিভাইস এবং ভেক্টর ড্রয়েবলের জন্য সমর্থন যোগ করুন:

  1. আপনার অ্যাক্টিভিটিতে নিম্নলিখিত কোডটি যোগ করুন। এই কোডটি কনজিউমার এসডিকে-তে থাকা ভেক্টর ড্রয়েবল ব্যবহার করার জন্য AppCompatActivity এক্সটেন্ড করে।

জাভা

// ...
import android.support.v7.app.AppCompatActivity;

// ...

public class ConsumerTestActivity extends AppCompatActivity {
  // ...
}

কোটলিন

// ...
import android.support.v7.app.AppCompatActivity

// ...

class ConsumerTestActivity : AppCompatActivity() {
  // ...
}

এরপর কী হবে

অ্যান্ড্রয়েডে একটি ভ্রমণ অনুসরণ করুন

একটি মানচিত্র শৈলী