このドキュメントでは、地図の外観をカスタマイズし、データの公開設定とビューポート オプションを制御する方法について説明します。その方法は次のとおりです。
- Cloud ベースのマップのスタイル設定を使用する
- 独自のコードで地図スタイル オプションを直接設定する
クラウドベースのマップのスタイル設定で地図のスタイルを設定する
クラウドベースのマップのスタイル設定を使用して、地図コンポーネントの外観をカスタマイズします。Google マップを使用するすべてのアプリの地図のスタイルは、Google Cloud コンソールでコードを変更することなく作成、編集できます。詳細については、Cloud ベースのマップのスタイル設定をご覧ください。
ConsumerMapView
クラスと ConsumerMapFragment
クラスの両方が、クラウドベースのマップのスタイル設定をサポートしています。Cloud ベースのマップのスタイル設定を使用するには、選択した地図レンダラが LATEST
であることを確認してください。以降のセクションでは、プロジェクトでクラウドベースのマップ スタイル設定を使用する方法の例を示します。
ConsumerMapView
ConsumerMapView
でクラウドベースの地図のスタイル設定を使用するには、GoogleMapOptions
の mapId
フィールドを設定し、GoogleMapOptions
を getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) または getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions) に渡します。
例
Java
public class SampleAppActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConsumerMapView mapView = findViewById(R.id.consumer_map_view);
if (mapView != null) {
GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
mapView.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
// ...
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ optionsWithMapId);
}
}
}
Kotlin
class SampleAppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
val optionsWithMapId = GoogleMapOptions().mapId("map-id")
mapView.getConsumerGoogleMapAsync(
object : ConsumerGoogleMap.ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
// ...
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ optionsWithMapId)
}
}
ConsumerMapFragment
ConsumerMapFragment でクラウドベースの地図のスタイル設定を使用する方法は 2 つあります。
- XML を使用して静的に設定します。
newInstance
で動的に。
XML を使用して静的に
ConsumerMapFragment
の XML で Cloud ベースのマップのスタイル設定を使用するには、指定された mapId
を使用して map:mapId
XML 属性を追加します。次の例をご覧ください。
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment"
android:id="@+id/consumer_map_fragment"
map:mapId="map-id"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
newInstance
を使用した動的
ConsumerMapFragment
の newInstance
で Cloud ベースのマップのスタイル設定を使用するには、GoogleMapOptions
に mapId
フィールドを設定し、GoogleMapOptions
を newInstance
に渡します。次の例をご覧ください。
Java
public class SampleFragmentJ extends Fragment {
@Override
public View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.consumer_map_fragment, container, false);
GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
ConsumerMapFragment consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId);
getParentFragmentManager()
.beginTransaction()
.add(R.id.consumer_map_fragment, consumerMapFragment)
.commit();
consumerMapFragment.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
// ...
}
});
return view;
}
}
Kotlin
class SampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.consumer_map_fragment, container, false)
val optionsWithMapId = GoogleMapOptions().mapId("map-id")
val consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId)
parentFragmentManager
.beginTransaction()
.add(R.id.consumer_map_fragment, consumerMapFragment)
.commit()
consumerMapFragment.getConsumerGoogleMapAsync(
object : ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
// ...
}
})
return view
}
}
JavaScript ユーザーのルート共有地図に地図のスタイルを適用するには、JourneySharingMapView
を作成するときに mapId
とその他の mapOptions
を指定します。
次の例は、マップ ID を使用して地図のスタイルを適用する方法を示しています。
JavaScript
const mapView = new google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
mapOptions: {
mapId: 'YOUR_MAP_ID'
}
// Any other styling options.
});
TypeScript
const mapView = new google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
mapOptions: {
mapId: 'YOUR_MAP_ID'
}
// Any other styling options.
});
独自のコードで地図のスタイルを直接設定する
JourneySharingMapView
の作成時に地図オプションを設定して、地図のスタイルをカスタマイズすることもできます。次の例は、地図オプションを使用して地図のスタイルを設定する方法を示しています。設定できる地図オプションの詳細については、Google Maps JavaScript API リファレンスの mapOptions
をご覧ください。
JavaScript
const mapView = new google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
mapOptions: {
styles: [
{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{ "color": "#CCFFFF" }
]
}
]
}
});
TypeScript
const mapView = new google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
mapOptions: {
styles: [
{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{ "color": "#CCFFFF" }
]
}
]
}
});
SDK に対するタスクデータの公開設定を制御する
可視性ルールを使用して、地図上の特定のタスク オブジェクトの可視性を制御できます。
タスクデータのデフォルトの公開設定
デフォルトでは、車両に割り当てられたタスクのデータは、車両がタスクから 5 停留所以内にある場合に表示されます。タスクが完了またはキャンセルされると、公開は終了します。
次の表に、各タスクタイプのデフォルトの公開設定を示します。多くのタスクの公開設定をカスタマイズできますが、すべてではありません。タスクタイプの詳細については、スケジュール設定されたタスクガイドのタスクタイプをご覧ください。
タスクの種類 | デフォルトの公開設定 | カスタマイズ可能か | 説明 |
---|---|---|---|
不在タスク | 非表示 | いいえ | ドライバーの休憩や給油に使用されます。配達タスクのルートに別の車両停留所が含まれている場合、その停留所に不在タスクのみが含まれている場合、その停留所は表示されません。配送タスク自体には、到着予定時刻とタスク完了予定時刻が引き続き表示されます。 |
車両のタスクを開く | 表示 | はい | タスクが完了またはキャンセルされると、公開は終了します。 未解決の車両タスクの公開設定をカスタマイズできます。オープンな車両タスクの表示をカスタマイズするをご覧ください。 |
クローズされた車両のタスク | 非表示 | いいえ | クローズされた車両タスクの公開設定をカスタマイズすることはできません。 |
未解決の車両タスクの表示をカスタマイズする
TaskTrackingInfo
インターフェースには、Consumer SDK で表示できるタスクデータ要素がいくつか用意されています。
カスタマイズ可能なタスクデータ要素 | |
---|---|
ルート ポリライン 到着予定時刻 タスクの完了までの推定時間 |
タスクまでの残りの運転距離 残りの停留所数 車両の位置情報 |
タスクごとの公開設定オプション
可視性の構成は、Fleet Engine 内でタスクを作成または更新するときに TaskTrackingViewConfig
を設定して、タスクごとにカスタマイズできます。次の公開設定オプションを使用して、タスク要素の公開設定を決定する条件を作成します。
公開設定オプション | ||
---|---|---|
残りの停留所数 到着予定時刻までの所要時間 残りの走行距離 |
常に表示 非表示 |
たとえば、カスタマイズの例で、次の表に示す条件を使用して 3 つのデータ要素の公開設定を調整するとします。他のすべての要素は、デフォルトの公開設定ルールに従います。
調整するデータ要素 | 公開設定 | Criterion |
---|---|---|
ルート ポリライン | 表示 | 車両が 3 つ目の停留所以内にある。 |
ETA | 表示 | 残りの走行距離が 5,000 メートル未満である。 |
残りの停留所数 | 表示しない | 車両が 3 つ目の停留所以内にある。 |
次の例は、この構成を示しています。
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"estimatedArrivalTimeVisibility": {
"remainingDrivingDistanceMetersThreshold": 5000
},
"remainingStopCountVisibility": {
"never": true
}
}
ルート ポリラインと車両位置の公開設定ルール
車両の位置も表示されない限り、ルート ポリラインを表示することはできません。車両の位置が表示されている場合は、ポリラインの終点から車両の位置を推測できます。
これらのガイドラインは、ルート ポリラインと車両位置情報の公開設定の有効な組み合わせを提供するために役立ちます。
同じ公開設定オプション | 公開設定の条件 | ガイダンス |
---|---|---|
ルート ポリラインのオプションが常に表示される設定になっている。 | 車両の位置を常に表示するように設定します。 | |
車両の位置情報の公開を [表示しない] に設定している。 | ルート ポリラインを非表示に設定します。 | |
公開設定オプションは次のいずれかです。
|
ルート ポリライン オプションを、車両の位置に設定された値以下の値に設定します。次に例を示します。 "taskTrackingViewConfig": { "routePolylinePointsVisibility": { "remainingStopCountThreshold": 3 }, "vehicleLocationVisibility": { "remainingStopCountThreshold": 5 }, } |
|
さまざまな公開設定オプション | 公開設定の条件 | ガイダンス |
車両の位置情報が表示される | これは、車両の位置情報とポリラインの公開設定オプションの両方が満たされている場合にのみ行われます。次に例を示します。 "taskTrackingViewConfig": { "routePolylinePointsVisibility": { "remainingStopCountThreshold": 3 }, "vehicleLocationVisibility": { "remainingDrivingDistanceMetersThreshold": 3000 }, } この例では、残りの停留所数が 3 以上で、残りの走行距離が 3, 000 メートル以上の場合のみ、車両の位置情報が表示されます。 |
自動フィットを無効にする
自動フィットを無効にすると、地図のビューポートが車両と予想ルートに自動的にフィットしなくなります。次の例は、ルート共有地図ビューを構成するときに自動フィットを無効にする方法を示しています。
JavaScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
automaticViewportMode:
google.maps.journeySharing
.AutomaticViewportMode.NONE,
...
});
TypeScript
const mapView = new
google.maps.journeySharing.JourneySharingMapView({
element: document.getElementById('map_canvas'),
locationProviders: [locationProvider],
automaticViewportMode:
google.maps.journeySharing
.AutomaticViewportMode.NONE,
...
});