SDK for Android 開発者ガイド

輸送情報

お使い のアプリケーションでは、 SDK for Android からの API 通話を使用して、ユーザーの交通情報を表示できます。

注 : トランジットマップスキーム(NORMAL_DAY_TRANSITNORMAL_NIGHT_TRANSIT、および HYBRID_DAY_TRANSIT)は、トランジット情報を表示するために特別に設計されています。 アプリに交通情報が表示されているときに、これらの方法のいずれかを使用することを選択できます。

MapTransitLayer

MapTransitLayer は、地図エリアで利用可能な交通データを表示するレイヤーです。 中継レイヤーをカスタマイズするには、Map.getMapTransitLayer()を呼び出して、MapTransitLayerクラスで利用できるメソッドにアクセスします。 たとえば、利用可能なすべての交通情報を表示するには、次のようにします

// Assumes map is instantiated
map.getMapTransitLayer().setMode(MapTransitLayer.Mode.EVERYTHING);
注意 :MapTransitLayer 地図の設定を変更すると、設定が影響を受ける場合があります。 たとえば、マップ スキームを変更して NORMAL_DAY_TRANSIT 「 Everything 」モードを有効にします。 で変更を行う前に、マップ スキームの変更を行うことをお勧め MapTransitLayerします。
図 1. すべてを表示するように設定された MapTransitLayer

トランジットストップおよびアクセスコールのみを表示するには、次の手順に従います。

// Assumes map is instantiated
map.getMapTransitLayer().setMode(MapTransitLayer.Mode.STOPS_AND_ACCESSES);
図 2. 中継地点と中継地点のみを表示するように設定された MapTransitLayer

すべての交通情報通話を非表示にするには:

// Assumes map is instantiated
map.getMapTransitLayer().setMode(MapTransitLayer.Mode.NOTHING);

GitHub の交通情報の例

この機能の例について は、 https://github.com/heremaps/を参照してください。

輸送機器を高輝度表示します

次の 4 種類のトランジットデータオブジェクトを使用できます。
  • トランジットストップデータ - で表されます TransitStopObject
  • トランジットラインデータ - で表されます TransitLineObject
  • トランジット アクセスデータ - で表されます TransitAccessObject
  • トランジットラインセグメントデータ - で表されます TransitLineSegmentObject

通過するオブジェクトは、タップジェスチャで選択できます。 たとえば、 1 つ以上の TransitLineObjectを強調表示するには、ラインオブジェクトの一意の識別子を把握しておく必要があります。 ユースケースに応じ Identifier て、 1 つまたは複数のオブジェクトのリストを取得する方法がいくつかあります。

  • TransitLineObject.getLineId() ユーザーがを TransitLineObject タップして選択したときに呼び出します。 Identifier 選択した輸送明細のが返されます。
  • 経由地TransitStopObjectを選択した場合にTransitStopObject.getTransitStopInfo().getLines()呼び出します。 getLines()選択した経由地に接続されている明細Identifierのリストを戻します。

タップ作成可能なMapProxyObjectsオブジェクトの処理方法の詳細 については、「 MapProxyObject オブジェクトの処理」を参照してください。

1 つまたは複数 Identifier のオブジェクトのリストを使用して、次の API を呼び出し、行を高輝度表示します。

// Assumes map is instantiated and identifierList is
// filled with a list of Identifiers
map.getMapTransitLayer().highlightTransitLines(identifierList);
図 3. 選択した中継地点に接続されている中継地点を強調表示する MapTransitLayer

TransitStopObject

A TransitStopObjectMapProxyObject 、トランジットストップに関する情報を含むタイプのです。 次の図は、さまざまな種類のトランジットストップを示しています。

図 4. TransitStopObject : メトロの駅
図 5. TransitStopObject : フェリー乗り場

タップされたTransitStopObjectに関する情報を取得 するに は ( 「MapProxyObject オブジェクトを処理」を参照 ) 、次の方法onMapObjectsSelected(List<ViewObject>)を使用します。


private MapGesture.OnGestureListener listener = new MapGesture.OnGestureListener() {
...
@Override
public boolean onMapObjectsSelected(List<ViewObject> objects) {
  for (ViewObject obj : objects) {
    if (obj.getBaseType() == ViewObject.Type.PROXY_OBJECT) {
      MapProxyObject proxyObj = (MapProxyObject) obj;
      if (proxyObj.getType() == MapProxyObject.Type.TRANSIT_STOP) {
        TransitStopObject transitStopObj
            = (TransitStopObject) proxyObj;
        Log.d(TAG, "Found a TransitStopObject");
        Log.d(TAG, "position is "
          + transitStopObj.getCoordinate().toString());
        TransitStopInfo transitStopInfo
            = transitStopObj.getTransitStopInfo();
        ...
    }
  }
  return true;
}

TransitStopObject は、トランジットストップについての情報を取得するための 2 つの方法があります。

  • getCoordinate() 中継地点の位置座標を取得します
  • getTransitStopInfo() トランジットストップについての詳細情報を取得します

TransitStopInfo

TransitStopInfo クラスには、次のメソッドの 1 つ以上を呼び出してアクセスされる中継地点情報が含まれています。

  • getOfficialName() - 配達地点の正式な名前を取得します
  • getInformalName() - 配達地点の非公式の名前を取得します
  • getId() - Identifier トランジットストップのを取得します
  • getTransitTypes() - この中継地点が属する中継地点タイプを取得します。複数の種類がある場合があります。
  • getLines() - Identifier この中継地点に接続されている中継ラインの機器のリストを取得します

詳細情報を取得するために、各IdentifierTransitDatabaseに送信されます。 詳細については、 TransitDatabase を参照してください。 また、に送信し MapTransitLayer て、地図で強調表示することもできます。 (MapTransitLayer を参照 )

トランジットストップに接続されている最初のトランジットラインに関する情報を取得する例を以下に示します。 TransitDatabase.OnGetTransitInfoListener を受け取るには、を実装する必要 TransitLineInfoがあります。 (TransitLineInfo を参照 )

非同期要求が TransitDatabase とともにに送信 OnGetTransitInfoListenerされます。

TransitDatabase.OnGetTransitInfoListener listener
= new TransitDatabase.OnGetTransitInfoListener() {
......
  @Override
  public void onTransitLineInfo(TransitLineInfo info) {
    ......
  }
// transitStopInfo is a TransitStopInfo object
......
mTransitDatabase.getLineInfo(transitStopInfo.getLines().get(0), listener);

TransitLineObject

A TransitLineObjectMapProxyObject 、トランジット回線に関する情報を含むタイプのです。 次の図は、さまざまな種類のトランジット回線の例を示しています。

図 6. 3 種類のトランジットライン : 地下鉄、列車、水上タクシーを利用できる

タップされたTransitLineObjectに関する情報を取得 するに は ( 「 MapProxyObject オブジェクトの処理」を参照 ) 、次のコードに示すようにonMapObjectsSelected(List<ViewObject>)を使用します。


private MapGesture.OnGestureListener listener = new MapGesture.OnGestureListener() {
...
@Override
public boolean onMapObjectsSelected(List<ViewObject> objects) {
  for (ViewObject obj : objects) {
    if (obj.getBaseType() == ViewObject.Type.PROXY_OBJECT) {
      MapProxyObject proxyObj = (MapProxyObject) obj;
      if (proxyObj.getType() == MapProxyObject.Type.TRANSIT_LINE) {
        TransitLineObject transitLineObj
            = (TransitLineObject) proxyObj;
        Log.d(TAG, "Found a TransitLineObject");
        Log.d(TAG, "Id is "
          + transitLineObj.getLineId().toString());
        mTransitDatabase.getLineInfo(m_lineIdList.get(0),
                mOnGetTransitInfoListener);
      }
    }
  }
  return true;
}

TransitLineObjectは、中継ラインのIdentifierを取得するための単一の方法を提供します。 これ Identifier をに送信 MapTransitLayer すると、地図で強調表示されます。 ( 詳細については 、 MaptransitLayer を参照してください ) 。

上の例に示すよう に、Identifierは、OnGetTransitInfoListenerとともにTransitDatabaseに送信することもできます( TransitDatabase を参照)。これにより、トランジット回線の詳細情報を取得できます。mOnGetTransitInfoListenerは、TransitDatabaseからTransitLineInfoオブジェクトを受け取るように実装されています。

TransitDatabase.OnGetTransitInfoListener mOnGetTransitInfoListener
= new TransitDatabase.OnGetTransitInfoListener() {
  ...
  @Override
  public void onTransitLineInfo(TransitLineInfo info) {
  ...
  }
}

TransitLineInfo

TransitLineInfo このクラスには、次の 1 つ以上のメソッドを呼び出してアクセスする中継回線情報が含まれています。

  • getOfficialName() - トランジット回線の正式な名前を取得します
  • getInformalName() - トランジット回線の非公式な名前を取得します
  • getShortName() - トランジット回線の短い名前を取得します
  • getTransitType() - この輸送明細が属する輸送タイプを取得します

TransitAccessObject

TransitAccessObjectMapProxyObject トランジット アクセスに関する情報を含むのタイプです。 トランジット アクセスは、トランジットストップへの入口 / 出口です。 1 つのトランジットストップへの複数のトランジットアクセスが存在する場合があります。

トランジット アクセスは、下部に下向きの三角形が取り付けられた小さな通過地点として表示され、より高いズームレベルでのみ表示されます。 配達地点とアクセス地点を示すアイコンは、国や会社によって異なります。 次の図は、 2 つの例を示しています。

図 7. トランジットストップ & アクセス : 地下鉄の駅からは 1 ヶ所でアクセスできる
図 8. トランジットストップ & アクセス : 複数のアクセスが可能なメトロの駅

タップされたTransitAccessObjectに関する情報を取得するに は ( 「 MapProxyObject オブジェクトの処理」を参照 ) 、次のコードのようにonMapObjectsSelected(List<ViewObject>)を使用します。


private MapGesture.OnGestureListener listener = new MapGesture.OnGestureListener() {
...
@Override
public boolean onMapObjectsSelected(List<ViewObject> objects) {
  for (ViewObject obj : objects) {
    if (obj.getBaseType() == ViewObject.Type.PROXY_OBJECT) {
      MapProxyObject proxyObj = (MapProxyObject) obj;
      if (proxyObj.getType() == MapProxyObject.Type.TRANSIT_ACCESS) {
        TransitAccessObject transitAccessObj
                = (TransitAccessObject) proxyObj;
        Log.d(TAG, "position is " +
            transitAccessObj.getCoordinate().toString());
        TransitAccessInfo transitAccessInfo
              = transitAccessObj.getTransitAccessInfo();
        ...

        break;
        }
    }
  }
  return true;
}

TransitAccessObject は、トランジット アクセスについての情報を取得するための 2 つの方法があります。

  • getCoordinate() - トランジット アクセスの位置座標を取得します
  • getTransitAccessInfo() - トランジット アクセスの詳細情報を取得します

TransitAccessInfo

TransitAccessInfo クラスには、次の 1 つ以上のメソッドを呼び出してアクセスできるトランジット アクセス情報が含まれています。

  • getTransitTypes() - このトランジット アクセスが所属する輸送タイプを取得します。複数の種類がある場合があります
  • getStopId() - このトランジット アクセスが誘導する中継地点の一意の識別子を取得します

次の例 TransitDatabase では、詳細情報を取得するために、中継地点の一意の識別子がに送信されます。 詳細については、 TransitDatabase を参照してください。

// transitAccessInfo is a TransitAccessInfo object
Log.d(TAG, "transit type is " +
  transitAccessInfo.getTransitTypes().toString());
Log.d(TAG, "Stop Id is " +
  transitAccessInfo.getStopId().toString());
mTransitDatabase.getStopInfo(transitAccessInfo
    .getStopId(), mOnGetTransitInfoListener);
 

トランジット アクセスの目的地の通過地点に関する情報を取得する例を以下に示します。 TransitStopInfoオブジェクトを受け取るには、OnGetTransitInfoListenerを実装する必要があります。 非同期要求が TransitDatabase に送信さ OnGetTransitInfoListenerれます。 詳細については、「 TransitStopInfo 」を参照してください。

TransitDatabase.OnGetTransitInfoListener mOnGetTransitInfoListener
= new TransitDatabase.OnGetTransitInfoListener(){
  ......
  @Override
  public void onTransitStopInfo(TransitStopInfo info) {
    ......
  }
}
// transitAccessInfo is a TransitAccessInfo object
......
mTransitDatabase.getStopInfo(transitAccessInfo.getStopId(),
      mOnGetTransitInfoListener);

TransitSystemInfo

TransitSystemInfo クラスには、次のメソッドの 1 つ以上を呼び出してアクセスできる公共交通機関についての情報が含まれています。
  • getSystemOfficialName() - トランジットシステムの正式な名前を取得します
  • getSystemWebsiteUrl() - トランジットシステムの Web サイト URL を取得します
  • getCompanyOfficialName() - トランジットシステムの正式な会社名を取得します
  • getCompanyWebsiteUrl() - トランジットシステム会社の Web サイト URL を取得します
  • getCompanyRoutePlannerUrl() - 輸送システム会社のルートプランナー URL を取得します
  • getCompanyScheduleUrl() - トランジットシステム会社のスケジュール URL を取得します
  • getCompanyPhone() - トランジットシステム会社の電話番号を取得します
  • getBicycleHours() - トランジットシステムの駐輪場時間を取得します
  • getSystemLogo() - システムロゴを取得します ( ある場合 )
  • getCompanyLogo() - CompanyLogo を取得します ( 存在する場合 )

交通機関の情報を取得する例を以下に示します。 この例では、OnGetTransitInfoListenerTransitSystemInfoオブジェクトを受け取るように実装されています。 詳細については、「 TransitDatabase 」セクションを参照してください。

TransitDatabase.OnGetTransitInfoListener mOnGetTransitInfoListener =
  new TransitDatabase.OnGetTransitInfoListener() {
  ...
  @Override
  public void onTransitSystemInfo(TransitSystemInfo systemInfo) {
    String officialName = systemInfo.getSystemOfficialName();
  }
  ...
}

// transitLineInfo is a TransitLineInfo object
mTransitDatabase.getSystemInfo(transitLineInfo.getSystemId(),
  mOnGetTransitInfoListener);

TransitDatabase

TransitDatabaseクラスは、OnGetTransitInfoListener固有のIdentifierを使用してさまざまなタイプの中継情報をクエリーし、クエリー結果を監視し、完了時に適切なコールバックメソッドをトリガーする役割を果たします。 アプリケーションは TransitDatabase 、コンストラクタを呼び出してをアクティブ化 TransitDatabase し、トランジット情報を照会できます。

OnGetTransitInfoListener インターフェイスを使用 TransitDatabaseして、のクエリー結果を監視できます。 アプリケーション内で実装し、非同期クエリー要求の一部として送信する必要があります。


TransitDatabase.OnGetTransitInfoListener mOnGetTransitInfoListener
  = new TransitDatabase.OnGetTransitInfoListener() {

  @Override
  public void onTransitLineInfo(TransitLineInfo info) {
    //...
  }

  @Override
  public void onTransitStopInfo(TransitStopInfo info) {
    //...
  }

  @Override
  public void onTransitAccessInfo(TransitAccessInfo info) {
    //...
  }

  @Override
  public void onTransitSystemInfo(TransitSystemInfo info) {
    //...
  }

  @Override
  public void onEnd(TransitDatabase.Error error) {
    //...
  }
};

OnGetTransitInfoListener このクラスは、 5 つのコールバックを提供します

  • onTransitLineInfo TransitLineInfo オブジェクトを提供します。 (TransitLineInfo を参照 )
  • onTransitStopInfo TransitStopInfo オブジェクトを提供します。 (TransitStopInfo を参照 )
  • onTransitAccessInfo TransitAccessInfo オブジェクトを提供します。 (TransitAccessInfo を参照 )
  • onTransitSystemInfo TransitSystemInfo オブジェクトを提供します。 (TransitSystemInfo を参照 )
  • onEnd 非同期クエリー要求が完了したことを示すコールバックです。
    注意 :TransitDatabase 現在のリクエストが完了していない限り、以降のすべてのリクエストを拒否します。 TransitDatabase がビジーの場合 INVALID_OPERATION は、が返されます。

非同期要求が TransitDatabase とともにに送信 OnGetTransitInfoListenerされます。 TransitDatabase インスタンスは TransitDatabase コンストラクタを呼び出して作成されます。

次に、の主な使用例を示し TransitDatabaseます。

  • getLineInfo() - TransitLineObject.getLineId() ユーザーがを TransitLineObject タップして選択した場合にパスインします。 このメソッド Identifier は、選択した通過回線のを返します。
    // transitLineObject is a TransitLineObject object
    ......
    mTransitDatabase.getLineInfo(transitLineObject
              .getLineId(), mOnGetTransitInfoListener);
    
  • getLineInfo() - TransitStopObject.getTransitStopInfo().getLines() ユーザーがを TransitStopObject タップして選択した場合にパスインします。 このメソッド Identifierは、選択された中継地点に接続されている明細の一覧表を返します。
    // transitStopInfo is a TransitStopInfo object
    ......
    // Requesting transit line info of the first identifier on the list
    mTransitDatabase.getLineInfo(transitStopInfo
              .getLines().get(0), mOnGetTransitInfoListener);
    
  • getStopInfo() - TransitAccessInfo.getStopId() ユーザーがを TransitAccessObject タップして選択した場合にパスインします。 このメソッド Identifier は、トランジット アクセスが誘導する停止位置のを返します。
    // transitAccessInfo is a TransitAccessInfo object
    ......
    mTransitDatabase.getStopInfo(transitAccessInfo
             .getStopId(), mOnGetTransitInfoListener);
    

トランジット関連の列挙体

  • TransitType 列挙型 (enum) - BUS_PUBLICRAIL_METRO 、などのさまざまな輸送タイプを記述する値を表します TRAIN_REGIONAL
  • TransitDatabase.Error 列挙型 (enum) - NONE やなどのトランジットデータベースエラーを記述する値を表します INVALID_PARAMETERS