Highway Mode
ハイウェイモードはFig.1のように高速道路の施設までの所要時間や施設が持つサービス一覧を提供する機能です。
この章ではハイウェイモードのデータを取り扱う方法を紹介します。
ハイウェイモード データ型の概要
ハイウェイモード データ型はHighwayInfo
で表現されます。
このclassは大類すると以下2つのデータを持っています。
- 出口までのルート上の施設情報(
HighwayInfo.FacilityInfo
)のリスト - 出口の情報(
HighwayInfo.ExitInfo
)
FacilityInfo
はその施設がインターチェンジなのか、休憩施設なのか、ジャンクションなのか、といった施設種別や
現在地からの所要時間、施設名称が格納されます。
また、その施設に至るまでにある交通状況のアイコンも格納されます。(例: )
休憩施設の場合、その施設が提供するサービス(店舗情報、お手洗い、ハイウェイ情報ターミナルなど)が格納されます。
(例: )
ExitInfo
はFacilityInfo
から交通規制アイコン、渋滞状況、駐車場混雑状況を削除したデータ型です。
HighwayInfo
で提供するアイコンはResourceID
による提供となります。
ImageViewなどのResourceIDを指定して描画できるViewでご利用ください。
ハイウェイモード データ取得方法
使用可能になるタイミングや更新タイミングはHighwayModeChangedListener
にて通知されますので、Navi.setHighwayModeChangedListener()
でリスナを設定してください。
Navi.getInstance().setHighwayModeChangedListener(new HighwayModeChangedListener() {
@Override
public void onModeChanged(boolean isHighwayMode) {
if (isHighwayMode) {
// trueならハイウェイモードのデータが利用可能です。
}
else {
// falseならハイウェイモードのデータが利用不能になります。
}
}
@Override
public void onUpdate() {
// onUpdate()はデータ内容が更新されたことだけしか通知されませんので、これをトリガにNaviから取得します。
HighwayInfo highwayInfo = Navi.getInstance().getHighwayInfo();
if (highwayInfo != null) {
// FacilityInfoは距離が近い順に格納されています
for (HighwayInfo.FacilityInfo facilityInfo : highwayInfo.getFacilities()) {
// 施設までの距離
if (facilityInfo.getDistance() > 0) {
}
// 施設までの所要時間
if (facilityInfo.getTime() > 0) {
}
// 施設名と施設種別
if (facilityInfo.getInfos() != null) {
}
// 施設までの混雑状況
switch (facilityInfo.getJam()) {
case JAM:
break;
case RUSH:
break;
case SMOOTH:
break;
default:
break;
}
// サービスのアイコン
if (facilityInfo.getServices() != null) {
for (HighwayInfo.FacilityInfo.Service service : facilityInfo.getServices())) {
}
}
// インシデントのアイコン
if (facilityInfo.getIncidentList() != null) {
for (HighwayInfo.FacilityInfo.Incident incident : facilityInfo.getIncidentList()) {
}
}
// 駐車場の混雑状況
if (facilityInfo.getParkingInfo() != null) {
HighwayInfo.FacilityInfo.Parking parking = facilityInfo.getParkingInfo();
}
}
// 出口情報
HighwayInfo.ExitInfo exitInfo = highwayInfo.getExitInfo();
if (exitInfo != null) {
// 施設までの距離
if (exitInfo.getDistance() > 0) {
}
// 施設までの所要時間
if (exitInfo.getTime() > 0) {
}
// 施設名と施設種別
if (exitInfo.getInfos() != null) {
}
}
}
}
});
高速道路上に目的地が設定されている場合、出口情報は取得できません。(null
になります。)
FacilityInfo
は施設への分岐開始地点までの距離が格納され、
その施設を通過し終わるまでは距離が0以下の値になり、FacilityInfo Listに残ります。
このような状態の施設の残距離を表示する場合は特別に "施設付近"
のような表現を使うとよいでしょう。