برای دنبال کردن یک سفر در برنامهی مصرفکننده، ابتدا باید یک نقشه تعریف کنید و در صورت نیاز، پشتیبانی از نقشههای برداری را اضافه کنید.
برای تنظیم نقشه در برنامه خود، این مراحل را دنبال کنید:
- یک قطعه نقشه برای دنبال کردن یک سفر تعریف کنید .
- پشتیبانی از لایه پایه نقشهها و کنترلر نمایش را اضافه کنید .
- در صورت نیاز، پشتیبانی از گرافیک برداری اندروید برای نمایش نقشههای برداری اضافه شود .
پس از تعریف نقشه، میتوانید نماها و کنترلهای دوربین دیگری را که میخواهید برای سفارشیسازی تجربه بصری اضافه کنید، اضافه کنید. برای جزئیات بیشتر، به بخش «طراحی نقشه» مراجعه کنید.
مرحله ۱: تعریف یک قطعه نقشه برای دنبال کردن یک سفر
شما با اضافه کردن یک قطعه یا نمای نقشه، نقشهای را تعریف میکنید که در آن یک سفر درخواستی را در برنامه مصرفکننده خود به اشتراک میگذارید. برای تعریف نقشه، یکی از این روشها را دنبال کنید:
ConsumerMapFragment: برای تعریف نقشه خود با یکFragmentاستفاده میشود.ConsumerMapView: برای تعریف یک نقشه با یکViewاستفاده میشود.
ویژگیها برای هر دو روش یکسان است، بنابراین روشی را انتخاب کنید که برای کاربرد شما بهتر است.
هر دو روش در بخش زیر با جزئیات بیشتر توضیح داده شدهاند.
اضافه کردن یک قطعه یا نمای نقشه
برای ایجاد نقشهای برای نمایش پیشرفت سفر با استفاده از یک فرگمنت اندروید یا یک ویو، این مراحل را دنبال کنید و به مثالهای کد مراجعه کنید.
یک قطعه یا نمای (view) را در فایل XML طرحبندی برنامه خود که در
/res/layoutقرار دارد، تعریف کنید. نقشه سفر را یا به عنوان یک قطعه با استفاده از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()را فراخوانی کنید.
جاوا
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
از نما یا در یک قطعه کد یا در یک فعالیت، همانطور که در فایل 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" /تابع
getConsumerGoogleMapAsync()را ازonCreate()فراخوانی کنید. علاوه بر پارامتر callback، جزئیات زیر را نیز وارد کنید:اکتیویتی یا فرگمنتِ حاوی. کلاس پایهی اکتیویتی یا فرگمنت باید (به ترتیب) یک
FragmentActivityیا یکFragmentپشتیبان باشد، زیرا آنها دسترسی به چرخهی حیات آن را فراهم میکنند.GoogleMapOptions(که میتواند تهی باشد)، شامل ویژگیهای پیکربندی برای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 در یک activity است، با این تفاوت که فرگمنت، طرحبندیای را که شامل MapView در متد onCreateView() فرگمنت است، inflate میکند.
جاوا
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 .
ConsumerGoogleMapازConsumerMapFragmentیاConsumerMapViewدریافت کنید، که هر دو به صورت غیرهمزمانConsumerGoogleMapدرConsumerMapReadyCallbackبرمیگردانند.ConsumerGoogleMapیک کلاس پوششی برای کلاسGoogleMapاست. این کلاس از یک API معادلGoogleMapاستفاده میکند تا برنامه شما بتواند با نقشه تعامل داشته باشد. به این ترتیب، برنامه شما میتواند به طور یکپارچه با همان نقشه گوگلِ زیربنایی تعامل داشته باشد. به عنوان مثال،GoogleMapفقط امکان ثبت یک فراخوانی برگشتی را فراهم میکند، اماConsumerGoogleMapاز فراخوانیهای برگشتی دوگانه پشتیبانی میکند. این فراخوانیهای برگشتی به برنامه شما اجازه میدهند فراخوانیهای برگشتی را که به صورت متوالی فراخوانی میشوند، ثبت کند.تابع
getConsumerController()ConsumerControllerازConsumerGoogleMapدریافت میکند.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,
}
)
مرحله ۳: پشتیبانی از گرافیک برداری اندروید را اضافه کنید
اگر طراحی برنامه شما نیاز به پشتیبانی از گرافیک برداری دارد، با استفاده از این مراحل، پشتیبانی از دستگاههای اندروید و فایلهای قابل ترسیم برداری را اضافه کنید:
- کد زیر را به Activity خود اضافه کنید. این کد
AppCompatActivityبرای استفاده از Vector drawables در Consumer SDK بسط میدهد.
جاوا
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
کاتلین
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}