আপনার কনজিউমার অ্যাপে ট্রিপ ফলো করতে, আপনাকে প্রথমে একটি ম্যাপ নির্ধারণ করতে হবে এবং প্রয়োজন হলে, ভেক্টর ম্যাপের জন্য সহায়তা যোগ করতে হবে।
আপনার অ্যাপে ম্যাপ সেট-আপ করতে, এইসব ধাপ অনুসরণ করুন:
- ট্রিপ ফলো করার জন্য ম্যাপ ফ্র্যাগমেন্ট নির্ধারণ করুন।
- ম্যাপের বেস লেয়ার ও ভিউ কন্ট্রোলারের জন্য সহায়তা যোগ করুন।
- প্রয়োজন হলে, ভেক্টর ম্যাপ দেখানোর জন্য 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 ডিভাইস ও ভেক্টর ড্রয়েবল যোগ করুন:
- আপনার অ্যাক্টিভিটিতে নিম্নলিখিত কোড যোগ করুন। এই কোডটি 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() {
// ...
}