راه‌اندازی نقشه

انتخاب پلاتفرم: Android iOS

برای دنبال کردن سفر در برنامه مصرف‌کننده، ابتدا باید نقشه‌ای تعریف کنید و درصورت نیاز، پشتیبانی از نقشه‌های برداری را اضافه کنید.

برای راه‌اندازی نقشه در برنامه‌تان، این مراحل را دنبال کنید:

  1. تعریف کردن قطعه نقشه برای دنبال کردن سفر.
  2. افزودن پشتیبانی برای لایه پایه نقشه‌ها و کنترل‌کننده نما.
  3. درصورت نیاز، پشتیبانی از گرافیک برداری Android را اضافه کنید تا نقشه‌های برداری نمایش داده شود.

پس‌از تعریف کردن نقشه، می‌توانید نماهای اضافی و کنترل‌های دوربین را اضافه کنید تا تجربه دیداری را سفارشی‌سازی کنید. برای جزئیات بیشتر، سبک‌بندی نقشه را ببینید.

مرحله ۱: تعریف قطعه نقشه برای دنبال کردن سفر

با افزودن قطعه یا نمای نقشه، نقشه‌ای را تعریف می‌کنید تا نقشه را در جایی ایجاد کنید که سفر درخواستی را در برنامه مصرف‌کننده هم‌رسانی می‌کنید. برای تعریف نقشه، یکی از این روش‌ها را دنبال کنید:

  • ConsumerMapFragment: از آن برای تعریف کردن نقشه با Fragment استفاده کنید.

  • ‫ConsumerMapView: برای تعریف نقشه با View استفاده می‌شود.

ویژگی‌ها برای هر دو روش یکسان است، بنابراین روشی را انتخاب کنید که برای برنامه شما بهتر است.

هر دو روش در بخش زیر با جزئیات بیشتری توضیح داده شده است.

افزودن قطعه یا نمای نقشه

برای ایجاد نقشه‌ای برای نمایش پیشرفت سفر بااستفاده از تکه Android یا نما، این مراحل را دنبال کنید و به نمونه‌های کد مراجعه کنید.

  1. تکه‌کد یا نمای موردنظرتان را در فایل XML چیدمان برنامه که در /res/layout قرار دارد تعریف کنید. نقشه سفر را به‌عنوان قطعه بااستفاده از ConsumerMapFragment یا به‌عنوان نما بااستفاده از ConsumerMapView تعریف کنید.

    سپس قطعه یا نما دسترسی به نقشه سفر را فراهم می‌کند که برنامه‌تان می‌تواند به آن دسترسی داشته باشد و آن را اصلاح کند. نقشه همچنین یک دستگیره برای ConsumerController ارائه می‌دهد که به برنامه شما امکان می‌دهد تجربه مصرف‌کننده را کنترل و سفارشی‌سازی کند.

  2. از روش onCreate()، getConsumerGoogleMapAsync(callback) را فراخوانی کنید، که ConsumerGoogleMap را به‌صورت ناهم‌زمان در برگشت تماس برمی‌گرداند.

  3. از ConsumerGoogleMap برای نمایش پیشرفت سفر استفاده کنید و درصورت نیاز آن را به‌روز کنید.

نمونه‌ای از نحوه افزودن ConsumerMapFragment

  1. همان‌طور که در نمونه کد زیر نشان داده شده است، قطعه را در فایل 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" />
    
  2. با روش 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

  1. از نما در یک تکه‌برنامه یا در یک فعالیت، همان‌طور که در فایل 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" />
    
  2. با 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 و دارایی‌های برداری را اضافه کنید:

  1. کد زیر را به Activity خود اضافه کنید. این کد AppCompatActivity را گسترش می‌دهد تا از «دارایی‌های برداری» در «کیت توسعه نرم‌افزار مصرف‌کننده» استفاده کند.

جاوا

// ...
import android.support.v7.app.AppCompatActivity;

// ...

public class ConsumerTestActivity extends AppCompatActivity {
  // ...
}

Kotlin

// ...
import android.support.v7.app.AppCompatActivity

// ...

class ConsumerTestActivity : AppCompatActivity() {
  // ...
}

بعدی چیست؟

دنبال کردن سفر در Android

سبک‌دار کردن نقشه