หากต้องการติดตามการเดินทางในแอปสำหรับผู้บริโภค คุณต้องกำหนด แผนที่และเพิ่มการรองรับแผนที่เวกเตอร์ก่อน หากจำเป็น
หากต้องการตั้งค่าแผนที่ในแอป ให้ทำตามขั้นตอนต่อไปนี้
- กำหนด Map Fragment เพื่อติดตามการเดินทาง
- เพิ่มการรองรับเลเยอร์ฐานของแผนที่และตัวควบคุมมุมมอง
- เพิ่มการรองรับกราฟิกแบบเวกเตอร์ของ Android เพื่อแสดงแผนที่เวกเตอร์ หากจำเป็น
หลังจากกำหนดแผนที่แล้ว คุณจะเพิ่มมุมมองและการควบคุมกล้องเพิ่มเติมเพื่อปรับแต่งประสบการณ์การมองเห็นได้ ดูรายละเอียดเพิ่มเติมได้ที่จัดรูปแบบแผนที่
ขั้นตอนที่ 1: กำหนด MapFragment เพื่อติดตามการเดินทาง
คุณกำหนดแผนที่ได้โดยการเพิ่ม MapFragment หรือ View เพื่อสร้างแผนที่ที่คุณแชร์การเดินทางตามต้องการในแอปสำหรับผู้บริโภค หากต้องการกำหนดแผนที่ ให้ทำตามวิธีใดวิธีหนึ่งต่อไปนี้
- ConsumerMapFragment: ใช้เพื่อกำหนดแผนที่ด้วย- Fragment
- ConsumerMapView: ใช้เพื่อกำหนดแผนที่ที่มี- View
ฟีเจอร์จะเหมือนกันไม่ว่าคุณจะใช้วิธีใดก็ตาม ดังนั้นให้เลือกวิธีที่เหมาะกับแอปพลิเคชันของคุณมากกว่า
เราจะอธิบายทั้ง 2 วิธีโดยละเอียดในส่วนต่อไปนี้
เพิ่มแผนที่ย่อยหรือมุมมอง
หากต้องการสร้างแผนที่เพื่อแสดงความคืบหน้าของการเดินทางโดยใช้ Android Fragment หรือ View ให้ทำตามขั้นตอนต่อไปนี้และดู ตัวอย่างโค้ด
- กำหนด Fragment หรือ View ในไฟล์ XML ของเลย์เอาต์แอปพลิเคชันที่อยู่ใน - /res/layoutกำหนดแผนที่การเดินทางเป็น Fragment โดยใช้- ConsumerMapFragmentหรือเป็น View โดยใช้- ConsumerMapView- จากนั้น Fragment หรือ View จะให้สิทธิ์เข้าถึงแผนที่การเดินทางที่แอปของคุณเข้าถึงและแก้ไขได้ นอกจากนี้ แผนที่ยังมีแฮนเดิลไปยัง - ConsumerControllerซึ่งช่วยให้แอปของคุณควบคุมและ ปรับแต่งประสบการณ์ของผู้บริโภคได้
- จากเมธอด - onCreate()ให้เรียกใช้- getConsumerGoogleMapAsync(callback)ซึ่งจะแสดงผล- ConsumerGoogleMapแบบไม่พร้อมกันในการเรียกกลับ
- ใช้ - ConsumerGoogleMapเพื่อแสดงความคืบหน้าของการเดินทางและอัปเดตตามต้องการ
ตัวอย่างวิธีเพิ่ม ConsumerMapFragment
- กำหนด Fragment ในไฟล์ 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
- ใช้มุมมองใน Fragment หรือในกิจกรรมตามที่กำหนดไว้ในไฟล์ 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()นอกเหนือจากพารามิเตอร์การเรียกกลับแล้ว ให้ระบุรายละเอียดต่อไปนี้- กิจกรรมหรือ Fragment ที่มี คลาสฐานของกิจกรรมหรือ Fragment ต้องเป็น - FragmentActivityหรือ- Fragment(ตามลำดับ) เนื่องจากคลาสเหล่านี้ให้สิทธิ์เข้าถึงวงจรของกิจกรรมหรือ Fragment
- GoogleMapOptions(ซึ่งอาจเป็นค่าว่าง) ที่มีการกำหนดค่า แอตทริบิวต์สำหรับ- 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 ใน Fragment จะเหมือนกับตัวอย่างก่อนหน้าสำหรับ
MapView ในกิจกรรม ยกเว้นว่า Fragment จะขยายเลย์เอาต์ที่มี
MapView ในเมธอด onCreateView() ของ Fragment
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ซึ่งทั้ง 2 อย่างจะแสดงผล- ConsumerGoogleMapแบบไม่พร้อมกันใน- ConsumerMapReadyCallback- ConsumerGoogleMapเป็นคลาส Wrapper สำหรับคลาส- GoogleMapโดยใช้ API ที่เทียบเท่ากับ- GoogleMapเพื่อให้แอปโต้ตอบกับแผนที่ได้ ด้วยวิธีนี้ แอปของคุณจะโต้ตอบกับ Google Maps พื้นฐานเดียวกันได้อย่างราบรื่น เช่น- GoogleMapอนุญาตให้ลงทะเบียนการเรียกกลับได้เพียงครั้งเดียว แต่- ConsumerGoogleMapรองรับการเรียกกลับที่ลงทะเบียน 2 ครั้ง 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 และ Drawable แบบเวกเตอร์โดยทำตามขั้นตอนต่อไปนี้
- เพิ่มโค้ดต่อไปนี้ลงในกิจกรรม โค้ดนี้ขยาย
AppCompatActivityเพื่อใช้ภาพวาดแบบเวกเตอร์ใน Consumer SDK
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
  // ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
  // ...
}