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

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS

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

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

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

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

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

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

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

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

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

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

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

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

  1. یک قطعه یا نمای (view) را در فایل 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 شما تعریف شده است، استفاده کنید.

     <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() فراخوانی کنید. علاوه بر پارامتر 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);
    }
  }

}

کاتلین

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 در یک activity است، با این تفاوت که فرگمنت، طرح‌بندی‌ای را که شامل MapView در متد onCreateView() فرگمنت است، inflate می‌کند.

جاوا

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

مرحله ۲: پشتیبانی از لایه پایه نقشه‌ها و کنترلر نمایش را اضافه کنید

برای اشتراک‌گذاری پیشرفت سفر در برنامه‌تان، کلاس‌های زیر را به برنامه‌تان اضافه کنید: ConsumerGoogleMap و ConsumerController .

  • ConsumerGoogleMap از ConsumerMapFragment یا ConsumerMapView دریافت کنید، که هر دو به صورت غیرهمزمان ConsumerGoogleMap در ConsumerMapReadyCallback برمی‌گردانند.

    ConsumerGoogleMap یک کلاس پوششی برای کلاس GoogleMap است. این کلاس از یک API معادل GoogleMap استفاده می‌کند تا برنامه شما بتواند با نقشه تعامل داشته باشد. به این ترتیب، برنامه شما می‌تواند به طور یکپارچه با همان نقشه گوگلِ زیربنایی تعامل داشته باشد. به عنوان مثال، GoogleMap فقط امکان ثبت یک فراخوانی برگشتی را فراهم می‌کند، اما ConsumerGoogleMap از فراخوانی‌های برگشتی دوگانه پشتیبانی می‌کند. این فراخوانی‌های برگشتی به برنامه شما اجازه می‌دهند فراخوانی‌های برگشتی را که به صورت متوالی فراخوانی می‌شوند، ثبت کند.

  • تابع getConsumerController() ConsumerController از ConsumerGoogleMap دریافت می‌کند.

    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,
  }
)

مرحله ۳: پشتیبانی از گرافیک برداری اندروید را اضافه کنید

اگر طراحی برنامه شما نیاز به پشتیبانی از گرافیک برداری دارد، با استفاده از این مراحل، پشتیبانی از دستگاه‌های اندروید و فایل‌های قابل ترسیم برداری را اضافه کنید:

  1. کد زیر را به Activity خود اضافه کنید. این کد AppCompatActivity برای استفاده از Vector drawables در Consumer SDK بسط می‌دهد.

جاوا

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

// ...

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

کاتلین

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

// ...

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

قدم بعدی چیست؟

دنبال کردن یک سفر در اندروید

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