یک نقشه تنظیم کنید

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

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

برای تنظیم نقشه در برنامه خود، این مراحل را دنبال کنید:

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

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

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

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

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

  • ConsumerMapView : برای تعریف نقشه با View استفاده کنید.

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

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

یک قطعه یا نمای نقشه اضافه کنید

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

  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();
             }
           });
     }
   }

 }

کاتلین

 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 خود تعریف شده است، از 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" />
    
  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);
    }
  }

}

کاتلین

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 و ترسیم‌های برداری را اضافه کنید:

  1. کد زیر را به 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() {
  // ...
}

بعد چه است

یک نقشه را در Android Style دنبال کنید