ম্যাপ সেট-আপ করা

প্ল্যাটফর্ম বেছে নিন: Android iOS

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

আপনার অ্যাপে ম্যাপ সেট-আপ করতে, এইসব ধাপ অনুসরণ করুন:

  1. ট্রিপ ফলো করার জন্য ম্যাপ ফ্র্যাগমেন্ট নির্ধারণ করুন।
  2. ম্যাপের বেস লেয়ার ও ভিউ কন্ট্রোলারের জন্য সহায়তা যোগ করুন।
  3. প্রয়োজন হলে, ভেক্টর ম্যাপ দেখানোর জন্য Android ভেক্টর গ্রাফিক্সের জন্য সহায়তা যোগ করুন।

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

ধাপ ১: ট্রিপ ফলো করার জন্য ম্যাপ ফ্র্যাগমেন্ট নির্ধারণ করা

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

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

  • ConsumerMapView: কোনও View সহ ম্যাপকে সংজ্ঞায়িত করতে ব্যবহার করুন।

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

নিচের বিভাগে দুটি পদ্ধতিই আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।

ম্যাপের ফ্র্যাগমেন্ট বা ভিউ যোগ করা

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

  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()-এ কল করুন।

Java

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

 }

Kotlin

 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 বা একটি সাপোর্ট Fragment (যথাক্রমে) হতে হবে, কারণ তারা এর লাইফসাইকেলে অ্যাক্সেস প্রদান করে।

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

Java

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

}

Kotlin

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 অন্তর্ভুক্ত করে।

Java

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

}

Kotlin

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 ব্যবহার করে যাতে আপনার অ্যাপ ম্যাপের সাথে ইন্টার‍্যাক্ট করতে পারে। এইভাবে, আপনার অ্যাপ একই Google ম্যাপের সাথে নির্বিঘ্নে ইন্টার‍্যাক্ট করতে পারে। যেমন, GoogleMap-এ শুধুমাত্র একটি কলব্যাক রেজিস্ট্রেশন করা যায়, কিন্তু ConsumerGoogleMap-এ দুটি রেজিস্টার করা কলব্যাক কাজ করে। এইসব কলব্যাক আপনার অ্যাপকে কলব্যাক রেজিস্টার করতে দেয় যা ক্রমানুসারে কল করা হয়।

  • getConsumerController()-এ ConsumerGoogleMap থেকে ConsumerController পান।

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

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

Java

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

Kotlin

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

ধাপ ৩: Android ভেক্টর গ্রাফিক্সের জন্য সহায়তা যোগ করা

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

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

Java

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

// ...

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

Kotlin

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

// ...

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

এরপর কী

Android-এ কোনও ট্রিপ ফলো করা

ম্যাপ স্টাইল করা