برای دنبال کردن یک سفر در برنامه مصرف کننده خود، ابتدا باید یک نقشه تعریف کنید و در صورت نیاز، پشتیبانی از نقشه های برداری را اضافه کنید.
برای تنظیم نقشه در برنامه خود، این مراحل را دنبال کنید:
- یک قطعه نقشه را برای دنبال کردن یک سفر تعریف کنید .
- پشتیبانی برای لایه پایه نقشه و کنترلر مشاهده اضافه کنید .
- در صورت نیاز، پشتیبانی از گرافیک های برداری اندروید را برای نمایش نقشه های برداری اضافه کنید .
پس از تعریف نقشه، میتوانید نماها و کنترلهای دوربین دیگری را که میخواهید تجربه بصری را سفارشی کنید، اضافه کنید. برای جزئیات بیشتر، به Style a map مراجعه کنید.
مرحله 1: یک قطعه نقشه را برای دنبال کردن یک سفر تعریف کنید
شما یک نقشه را با افزودن یک قطعه یا نمای نقشه تعریف میکنید تا نقشهای را ایجاد کنید که در آن یک سفر درخواستی را در برنامه مصرفکننده خود به اشتراک میگذارید. برای تعریف نقشه خود یکی از روش های زیر را دنبال کنید:
ConsumerMapFragment
: برای تعریف نقشه خود با یکFragment
استفاده کنید.ConsumerMapView
: برای تعریف نقشه با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 خود تعریف شده است، از view در یک قطعه یا در یک فعالیت استفاده کنید.
<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()
تماس بگیرید. علاوه بر پارامتر پاسخ به تماس، جزئیات زیر را نیز درج کنید:فعالیت یا قطعه حاوی. اکتیویتی یا کلاس پایه قطعه باید به ترتیب یک
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
در یک اکتیویتی است، با این تفاوت که قطعه، طرحی را که شامل MapView
در متد ()Fragment در قطعه onCreateView()
است، افزایش میدهد.
جاوا
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)
}
}
مرحله 2: پشتیبانی از لایه پایه نقشه و کنترلر را اضافه کنید
برای اشتراکگذاری پیشرفت سفر در برنامه خود، کلاسهای زیر را به برنامه خود اضافه کنید: ConsumerGoogleMap
و ConsumerController
.
ConsumerGoogleMap
ازConsumerMapFragment
یاConsumerMapView
دریافت کنید، که هر دو به طور ناهمزمانConsumerGoogleMap
درConsumerMapReadyCallback
برمیگردانند.ConsumerGoogleMap
یک کلاس پوششی برای کلاسGoogleMap
است. از یک API معادلGoogleMap
استفاده می کند تا برنامه شما بتواند با نقشه تعامل داشته باشد. به این ترتیب، برنامه شما می تواند به طور یکپارچه با همان نقشه زیرین گوگل تعامل داشته باشد. به عنوان مثال،GoogleMap
تنها امکان ثبت نام پاسخ به تماس را می دهد، اماConsumerGoogleMap
از تماس های ثبت شده دوگانه پشتیبانی می کند. این تماسها به برنامه شما اجازه میدهند تا تماسهایی را که بهطور متوالی فراخوانی میشوند، ثبت کند.ConsumerController
ازConsumerGoogleMap
درgetConsumerController()
دریافت کنید.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,
}
)
مرحله 3: پشتیبانی از گرافیک های برداری اندروید را اضافه کنید
اگر طراحی برنامه شما نیاز به پشتیبانی از گرافیک برداری دارد، با استفاده از این مراحل، پشتیبانی از دستگاههای Android و ترسیمهای برداری را اضافه کنید:
- کد زیر را به Activity خود اضافه کنید. این کد
AppCompatActivity
برای استفاده از ترسیمهای Vector در Consumer SDK گسترش میدهد.
جاوا
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
کاتلین
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}