برای دنبال کردن سفر در برنامه مصرفکننده، ابتدا باید نقشهای تعریف کنید و درصورت نیاز، پشتیبانی از نقشههای برداری را اضافه کنید.
برای راهاندازی نقشه در برنامهتان، این مراحل را دنبال کنید:
- تعریف کردن قطعه نقشه برای دنبال کردن سفر.
- افزودن پشتیبانی برای لایه پایه نقشهها و کنترلکننده نما.
- درصورت نیاز، پشتیبانی از گرافیک برداری Android را اضافه کنید تا نقشههای برداری نمایش داده شود.
پساز تعریف کردن نقشه، میتوانید نماهای اضافی و کنترلهای دوربین را اضافه کنید تا تجربه دیداری را سفارشیسازی کنید. برای جزئیات بیشتر، سبکبندی نقشه را ببینید.
مرحله ۱: تعریف قطعه نقشه برای دنبال کردن سفر
با افزودن قطعه یا نمای نقشه، نقشهای را تعریف میکنید تا نقشه را در جایی ایجاد کنید که سفر درخواستی را در برنامه مصرفکننده همرسانی میکنید. برای تعریف نقشه، یکی از این روشها را دنبال کنید:
ConsumerMapFragment: از آن برای تعریف کردن نقشه باFragmentاستفاده کنید.
ConsumerMapView: برای تعریف نقشه باViewاستفاده میشود.
ویژگیها برای هر دو روش یکسان است، بنابراین روشی را انتخاب کنید که برای برنامه شما بهتر است.
هر دو روش در بخش زیر با جزئیات بیشتری توضیح داده شده است.
افزودن قطعه یا نمای نقشه
برای ایجاد نقشهای برای نمایش پیشرفت سفر بااستفاده از تکه Android یا نما، این مراحل را دنبال کنید و به نمونههای کد مراجعه کنید.
تکهکد یا نمای موردنظرتان را در فایل 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();
}
});
}
}
}
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" />با
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);
}
}
}
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 در یک فعالیت است، با این تفاوت که تکهبرنامه چیدمانی را که
شامل MapView در روش تکهبرنامه 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);
}
}
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.
ConsumerGoogleMapرا ازConsumerMapFragmentیاConsumerMapViewدریافت کنید، که هر دو بهصورت ناهمگامConsumerGoogleMapرا درConsumerMapReadyCallbackبرمیگردانند.
ConsumerGoogleMapکلاس بستهبندی برای کلاسGoogleMapاست. این نما از میانای برنامهسازی کاربردی معادلGoogleMapاستفاده میکند تا برنامهتان بتواند با نقشه تعامل داشته باشد. به این ترتیب، برنامهتان میتواند بهطور یکپارچه با همان Google Map زیربنایی تعامل داشته باشد. برای مثال،GoogleMapفقط از ثبت یک تماس برگشتی پشتیبانی میکند، اماConsumerGoogleMapاز تماسهای برگشتی ثبتشده دوگانه پشتیبانی میکند. این فراخوانیهای برگشتی به برنامه شما اجازه میدهد فراخوانیهای برگشتی را که بهصورت متوالی فراخوانی میشوند ثبت کند.
ConsumerControllerرا ازConsumerGoogleMapدرgetConsumerController()دریافت کنید.
ConsumerControllerدسترسی به ویژگیهای همرسانی سفر را فراهم میکند، ازجمله نظارت بر سفرها، کنترل وضعیت سفر، و تنظیم مکانها.
برای نحوه افزودن ConsumerGoogleMap و ConsumerController به برنامهتان در
Java و Kotlin، نمونههای زیر را ببینید.
جاوا
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 و داراییهای برداری را اضافه کنید:
- کد زیر را به Activity خود اضافه کنید. این کد
AppCompatActivityرا گسترش میدهد تا از «داراییهای برداری» در «کیت توسعه نرمافزار مصرفکننده» استفاده کند.
جاوا
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}