برای دنبال کردن سفر در برنامه مصرفکننده، ابتدا باید نقشهای تعریف کنید و درصورت نیاز، پشتیبانی از نقشههای برداری را اضافه کنید.
برای راهاندازی نقشه در برنامهتان، این مراحل را دنبال کنید:
- تعریف قطعه نقشه برای دنبال کردن سفر.
- افزودن پشتیبانی برای لایه پایه نقشهها و کنترلکننده نما.
- درصورت نیاز، پشتیبانی از گرافیک بُرداری 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" />تماسی با
getConsumerGoogleMapAsync()از روشonCreate()برقرار کنید.
جاوا
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()تماس بگیر. علاوهبر پارامتر 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);
}
}
}
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() {
// ...
}