如要在消費者應用程式中追蹤行程,請先 地圖,並視需要加入向量地圖。
如要在應用程式中設定地圖,請按照下列步驟操作:
地圖定義完成後,您可以新增其他檢視畫面和相機 自訂視覺體驗詳情 請參閱設定地圖樣式。
步驟 1:定義分享歷程的地圖片段
您可以新增地圖片段或檢視畫面來建立地圖,其中 您在消費者應用程式中分享隨選行程。如要定義地圖 請按照下列其中一種做法進行:
這兩種方法的功能都相同,因此請選擇 因此更適合您的應用程式
以下章節將詳細說明這兩種方法。
新增地圖片段或檢視畫面
如要建立地圖以顯示行程進度,請使用 Android 片段或檢視畫面,請按照下列步驟操作,並參閱 程式碼範例
在應用程式版面配置 XML 檔案中,定義片段或檢視畫面
/res/layout
。使用以下程式碼,將歷程共用地圖定義為片段ConsumerMapFragment
,或是使用ConsumerMapView
以 View 形式顯示。接著,片段或檢視畫面就能存取歷程 共用地圖,供您的應用程式存取及修改。地圖也提供 處理
ConsumerController
,可讓應用程式控制 自訂旅程分享體驗透過
onCreate()
方法呼叫getConsumerGoogleMapAsync(callback)
。 這會在回呼中以非同步方式傳回ConsumerGoogleMap
。使用
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" />
透過
onCreate()
呼叫getConsumerGoogleMapAsync()
方法。
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" />
透過
onCreate()
呼叫getConsumerGoogleMapAsync()
。於 除了回呼參數之外,請納入下列詳細資料:包含的活動或片段。活動或片段基礎 類別必須是
FragmentActivity
或支援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
與上述範例
活動中的 MapView
,但片段會加載會
在片段 onCreateView()
方法中加入 MapView
。
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
類別。
從
ConsumerMapFragment
或ConsumerGoogleMap
取得ConsumerMapView
,兩者都會以非同步方式傳回 「ConsumerMapReadyCallback
」中的ConsumerGoogleMap
。ConsumerGoogleMap
是GoogleMap
類別的包裝函式類別。該公式採用 相當於GoogleMap
的 API,讓應用程式能與地圖互動。 如此一來,您的應用程式就能與 Google 的相同基礎 Google 服務流暢互動 。舉例來說,GoogleMap
僅允許註冊單一回呼,但ConsumerGoogleMap
支援雙註冊回呼。這些回呼可讓 您的應用程式會註冊依序呼叫的回呼。向「
getConsumerController()
」中的「ConsumerGoogleMap
」取得ConsumerController
。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
:在 Consumer SDK 中使用向量可繪項目。
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}