הגדרת מפה

בחירת פלטפורמה: Android iOS

כדי לעקוב אחרי נסיעה באפליקציה לצרכנים, צריך קודם להגדיר מפה ולהוסיף תמיכה במפות וקטוריות, אם יש צורך.

כדי להגדיר מפה באפליקציה:

  1. הגדרת מקטע במפה לשיתוף של מסלולים.
  2. הוספת תמיכה בשכבה בסיסית של מפות Google ובבקר תצוגה.
  3. הוספת תמיכה בגרפיקה וקטורית של Android להצגת הווקטור במפות Google, אם יש צורך.

אחרי שמגדירים מפה, אפשר להוסיף עוד תצוגות ומצלמה את הפקדים שרוצים להתאים אישית את החוויה החזותית. לפרטים נוספים, ראו עיצוב מפה.

שלב 1: מגדירים מקטע במפה לשיתוף המסע

אפשר להגדיר מפה על ידי הוספה של קטע מפה או תצוגה מפורטת כדי ליצור את המפה שבה אתם משתפים נסיעה על פי דרישה באפליקציה שלכם לצרכנים. כדי להגדיר את המפה שלך, אפשר להשתמש באחת מהשיטות הבאות:

  • ConsumerMapFragment: משמש להגדרת המפה באמצעות Fragment.

  • ConsumerMapView: משמש להגדרת מפה עם View.

התכונות זהות בכל אחת מהשיטות, לכן צריך לבחור באיזו שיטה מתאימים יותר לאפליקציה שלכם.

שתי השיטות מוסברות בפירוט בקטע הבא.

הוספת קטע במפה או תצוגה

כדי ליצור מפה ולהציג את התקדמות הנסיעה באמצעות קטע Android או תצוגה מפורטת של Android, פועלים לפי השלבים הבאים ומעיינים דוגמאות לקודים.

  1. הגדרת מקטע או תצוגה בקובץ ה-XML של פריסת האפליקציה שנמצא ב- /res/layout מגדירים את מפת שיתוף המסע כמקטעי באמצעות באמצעות ConsumerMapFragment, או כתצוגה באמצעות ConsumerMapView.

    לאחר מכן, המקטע או התצוגה מעניקים גישה לתהליך. שיתוף מפה שהאפליקציה שלך יכולה לגשת אליה ולשנות אותה. המפה מספקת גם נקודת אחיזה אל ConsumerController, שמאפשרת לאפליקציה לשלוט להתאים אישית את חוויית השיתוף של התהליך.

  2. באמצעי התשלום onCreate(), מתקשרים אל getConsumerGoogleMapAsync(callback), שמחזירה את ConsumerGoogleMap באופן אסינכרוני ב-callback.

  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. ביצוע שיחה אל getConsumerGoogleMapAsync() באמצעות onCreate() .

Java

 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 (שיכול להיות null), מכיל הגדרה של MapView.

Java

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 ב-method onCreateView() של המקטע.

Java

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

שלב 2: הוספת תמיכה בשכבת הבסיס של מפות ובבקר תצוגה

כדי להפעיל את האפשרות לשתף את התהליכים באפליקציה, צריך להוסיף את הכיתות הבאות לאפליקציה שלך: ConsumerGoogleMap ו-ConsumerController.

  • אפשר לקבל ConsumerGoogleMap מ-ConsumerMapFragment או ConsumerMapView, שתיהן מחזירות באופן אסינכרוני ConsumerGoogleMap בConsumerMapReadyCallback.

    ConsumerGoogleMap היא מחלקה מסוג wrapper למחלקה GoogleMap. הוא משתמש ממשק API מקביל ל-GoogleMap כדי שהאפליקציה תוכל לקיים אינטראקציה עם המפה. כך האפליקציה יכולה לקיים אינטראקציה בצורה חלקה עם אותה מערכת Google מפה לדוגמה, הפונקציה GoogleMap מאפשרת רישום של קריאה חוזרת רק פעם אחת, אבל ב-ConsumerGoogleMap יש תמיכה בקריאות חוזרות (callback) רשומות כפולות. הקריאות החוזרות האלה מאפשרות יתעדו קריאות חוזרות (callback) באפליקציה, שנקראות ברצף.

  • אפשר לקבל ConsumerController מ-ConsumerGoogleMap ב-getConsumerController().

    האפליקציה ConsumerController מספקת גישה לתכונות של שיתוף מסלולים, כמו כמו מעקב אחר נסיעות, שליטה בסטטוס הנסיעה והגדרת מיקומים.

הוראות להוספה של ConsumerGoogleMap ושל ConsumerController לאפליקציה ב- ו-Java ו-Kotlin, ראו את הדוגמאות הבאות.

Java

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

שלב 3: הוספת תמיכה בגרפיקה וקטורית של Android

אם עיצוב האפליקציה דורש תמיכה בגרפיקה וקטורית, הוסף תמיכה עבור מכשירי Android ופריטים לגרפיקה וקטורית באמצעות השלבים הבאים:

  1. צריך להוסיף את הקוד הבא לדף 'פעילות'. קוד זה נמשך AppCompatActivity כדי להשתמש בפריטי גרפיקה של Vector ב-SDK לצרכנים.

Java

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

// ...

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

Kotlin

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

// ...

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

המאמרים הבאים

מעקב אחרי נסיעה ב-Android עיצוב מפה