আপনার গ্রাহক অ্যাপে কোনও ট্রিপ ফলো করতে, আপনাকে প্রথমে একটি ম্যাপ নির্ধারণ করতে হবে এবং প্রয়োজন হলে, ভেক্টর ম্যাপের জন্য সহায়তা যোগ করতে হবে।
আপনার অ্যাপে ম্যাপ সেট-আপ করতে, এই ধাপগুলি অনুসরণ করুন:
- ট্রিপ ফলো করার জন্য ম্যাপ ফ্র্যাগমেন্ট নির্ধারণ করুন।
- ম্যাপের বেস লেয়ার ও ভিউ কন্ট্রোলারের জন্য সহায়তা যোগ করুন।
- প্রয়োজন হলে, ভেক্টর ম্যাপ দেখানোর জন্য Android ভেক্টর গ্রাফিক্সের জন্য সহায়তা যোগ করুন।
আপনি ম্যাপ নির্দিষ্ট করার পরে, ভিজ্যুয়াল অভিজ্ঞতা কাস্টমাইজ করার জন্য অতিরিক্ত ভিউ ও ক্যামেরা কন্ট্রোল যোগ করতে পারবেন। আরও জানতে, ম্যাপ স্টাইল করুন দেখুন।
ধাপ ১: ট্রিপ ফলো করার জন্য ম্যাপ ফ্র্যাগমেন্ট নির্ধারণ করা
আপনি ম্যাপ ফ্র্যাগমেন্ট বা ভিউ যোগ করে ম্যাপ তৈরি করার মাধ্যমে ম্যাপকে সংজ্ঞায়িত করেন, যেখানে আপনি নিজের কনজিউমার অ্যাপে অন-ডিমান্ড ট্রিপ শেয়ার করেন। আপনার ম্যাপ সংজ্ঞায়িত করতে, এই পদ্ধতিগুলির মধ্যে একটি অনুসরণ করুন:
ConsumerMapFragment:Fragment-এর মাধ্যমে আপনার ম্যাপ সংজ্ঞায়িত করতে ব্যবহার করুন।ConsumerMapView:View-এর মাধ্যমে ম্যাপ সংজ্ঞায়িত করতে ব্যবহার করুন।
দুটি পদ্ধতির ক্ষেত্রেই ফিচারগুলি একই, তাই আপনার অ্যাপ্লিকেশনের জন্য কোন পদ্ধতিটি বেশি ভালো তা বেছে নিন।
নিচের বিভাগে দুটি পদ্ধতিই আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
ম্যাপ ফ্র্যাগমেন্ট বা ভিউ যোগ করুন
Android ফ্র্যাগমেন্ট বা ভিউ ব্যবহার করে ট্রিপের অগ্রগতি দেখানোর জন্য ম্যাপ তৈরি করতে, এইসব ধাপ অনুসরণ করুন এবং কোডের উদাহরণ দেখুন।
/res/layout-এ অবস্থিত আপনার অ্যাপ্লিকেশন লেআউট XML ফাইলে একটি ফ্র্যাগমেন্ট বা ভিউ সংজ্ঞায়িত করুন।ConsumerMapFragmentব্যবহার করে ফ্র্যাগমেন্ট হিসেবে অথবাConsumerMapViewব্যবহার করে ভিউ হিসেবে ট্রিপ ম্যাপ নির্ধারণ করুন।ফ্র্যাগমেন্ট বা ভিউ তারপর ট্রিপ ম্যাপে অ্যাক্সেস প্রদান করে যা আপনার অ্যাপ অ্যাক্সেস এবং পরিবর্তন করতে পারে। এছাড়াও, ম্যাপ
ConsumerController-এর জন্য একটি হ্যান্ডেল প্রদান করে, যা আপনার অ্যাপকে গ্রাহকের অভিজ্ঞতা নিয়ন্ত্রণ এবং কাস্টমাইজ করার অনুমতি দেয়।আপনার
onCreate()মেথড থেকে,getConsumerGoogleMapAsync(callback)কল করুন, যা কলব্যাকে অ্যাসিঙ্ক্রোনাসভাবেConsumerGoogleMapফিরিয়ে দেয়।ট্রিপের প্রোগ্রেস দেখাতে এবং প্রয়োজন অনুযায়ী আপডেট করতে
ConsumerGoogleMapব্যবহার করুন।
ConsumerMapFragment কীভাবে যোগ করতে হয় তার উদাহরণ
নিম্নলিখিত কোডের উদাহরণে যেমন দেখানো হয়েছে, আপনার অ্যাপ্লিকেশন লেআউট 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" />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 কীভাবে যোগ করতে হয় তার উদাহরণ
আপনার 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" />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 ডিভাইস ও ভেক্টর ড্রয়েবেলের জন্য সহায়তা যোগ করুন:
- আপনার অ্যাক্টিভিটিতে নিম্নলিখিত কোড যোগ করুন। এই কোড
AppCompatActivity-কে এক্সটেন্ড করে যাতে কনজিউমার SDK-তে ভেক্টর ড্রয়েবেল ব্যবহার করা যায়।
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}