כדי לעקוב אחר נסיעה באפליקציה לצרכנים, צריך קודם להגדיר מפה ולהוסיף תמיכה במפות וקטוריות, אם יש צורך.
כדי להגדיר מפה באפליקציה:
- הגדרת מקטע במפה לשיתוף של מסלולים.
- הוספת תמיכה בשכבה בסיסית של מפות Google ובבקר תצוגה.
- הוספת תמיכה בגרפיקה וקטורית של Android להצגת הווקטור במפות Google, אם יש צורך.
אחרי שמגדירים מפה, אפשר להוסיף עוד תצוגות ומצלמה את הפקדים שרוצים להתאים אישית את החוויה החזותית. לפרטים נוספים, ראו עיצוב מפה.
שלב 1: מגדירים מקטע במפה לשיתוף המסע
אפשר להגדיר מפה על ידי הוספה של קטע מפה או תצוגה מפורטת כדי ליצור את המפה שבה אתם משתפים נסיעה על פי דרישה באפליקציה שלכם לצרכנים. כדי להגדיר את המפה שלך, יש כמה שיטות:
התכונות זהות בכל אחת מהשיטות, לכן צריך לבחור באיזו שיטה מתאימים יותר לאפליקציה שלכם.
שתי השיטות מוסברות בפירוט בקטע הבא.
הוספת קטע במפה או תצוגה
כדי ליצור מפה ולהציג את התקדמות הנסיעה באמצעות קטע Android או תצוגה מפורטת של Android, פועלים לפי השלבים הבאים ומעיינים דוגמאות לקודים.
הגדרת מקטע או תצוגה בקובץ ה-XML של פריסת האפליקציה שנמצא ב-
/res/layout
מגדירים את מפת שיתוף המסע כמקטעי באמצעות באמצעותConsumerMapFragment
, או כתצוגה באמצעותConsumerMapView
.לאחר מכן, המקטע או התצוגה מעניקים גישה לתהליך. שיתוף מפה שהאפליקציה שלך יכולה לגשת אליה ולשנות אותה. המפה מספקת גם נקודת אחיזה אל
ConsumerController
, שמאפשרת לאפליקציה לשלוט להתאים אישית את חוויית השיתוף של התהליך.באמצעי התשלום
onCreate()
, מתקשרים אלgetConsumerGoogleMapAsync(callback)
, שמחזירה אתConsumerGoogleMap
באופן אסינכרוני ב-callback.אפשר להשתמש ב
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()
.
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
להשתמש בתצוגה מקטעים או בפעילות, כפי שמוגדר ב 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()
. לחשבון בנוסף לפרמטר הקריאה החוזרת, עליכם לכלול את הפרטים הבאים:הפעילות או המקטע שמכיל את הקובץ. הפעילות או בסיס המקטעים הכיתה חייבת להיות
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
יש תמיכה בקריאות חוזרות (callbacks) רשומות כפולות. הקריאות החוזרות האלה מאפשרות יתעדו קריאות חוזרות (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 ופריטים לגרפיקה וקטורית באמצעות השלבים הבאים:
- צריך להוסיף את הקוד הבא לדף 'פעילות'. קוד זה נמשך
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() {
// ...
}