Charging Station Search
この章では充電施設を検索するための方法を紹介します。
充電施設検索方法
SDKは充電施設を検索する手段を3通り用意しています。
方式 | Type | 特徴 |
---|---|---|
周辺検索 | AROUND | 自車位置を中心に検索します。 |
ルート沿い検索 | ROUTE_VICINITY | ルート沿いにある施設に限定して検索します。 |
ポリゴン内検索 | POLYGON | Cruising Areaの範囲内にある施設に限定して検索します。 |
おおまかな処理の流れ
SearchJP.ChargingStationSearchRequest
のインスタンスを生成し、rangeType
に検索方法を指定します。- 検索方法に沿ったパラメータを設定します。
- パラメータ設定済みのオブジェクトを引数に
SearchJP.search()
を呼び出し、検索を実行します。 - 検索が完了すると、
SearchJP.SearchResultListener
にて検索結果が通知されます。これで検索完了です。
周辺検索
周辺検索では、指定座標を中心とした半径radius
メートル内にある充電施設を検索します。
SearchJP.ChargingStationSearchRequest request = new SearchJP.ChargingStationSearchRequest();
request.setPosition(Navi.getInstance().getRunInfo().getOwnCarInfo().getGeoCoordinate());
request.setRangeType(SearchJP.ChargingStationSearchRequest.RangeType.AROUND);
SearchJP.ChargingStationSearchRequest.Around around = new SearchJP.ChargingStationSearchRequest.Around();
around.setRadius(1000); // 検索半径[m]
request.setAround(around);
SearchJP.getInstance().search(request, new SearchJP.SearchResultListener() {
@Override
public void onCompleted(SearchJP.ErrorCode errorCode, SearchJP.SearchResult searchResult) {
// 見つかった全ての地点にアイコンを貼り付ける
for (SearchJP.Place place : searchResult.getPlaceList()) {
MapIcon icon = new MapIcon();
icon.setImageResource(R.drawable.pin);
icon.setIconAnchor(MapIcon.Icon_Anchor.ICON_ANCHOR_BOTTOM);
icon.setID("Search Result");
icon.setPosition(place.getPosition());
m_map.addUserIcon(icon);
}
}
});
ルート沿い検索
ルート沿い検索では、案内中ルートや案内候補ルートの周辺pathWidth
メートル以内の施設に限定して検索します。
SearchJP.ChargingStationSearchRequest request = new SearchJP.ChargingStationSearchRequest();
request.setPosition(Navi.getInstance().getRunInfo().getOwnCarInfo().getGeoCoordinate());
// RouteVicinity
request.setRangeType(SearchJP.ChargingStationSearchRequest.RangeType.ROUTE_VICINITY);
SearchJP.ChargingStationSearchRequest.RouteVicinity routeVicinity = new SearchJP.ChargingStationSearchRequest.RouteVicinity();
RouteResult routeResult = Navi.getInstance().getRouteResult();
routeVicinity.setPathPointList(Common.convertRouteResultToPathPointList(routeResult));
routeVicinity.setPathWidth(200); // ルートに対して左右それぞれ200メートルまで検索範囲とする
request.setRouteVicinity(routeVicinity);
SearchJP.getInstance().search(request, new SearchJP.SearchResultListener() {
@Override
public void onCompleted(SearchJP.ErrorCode errorCode, SearchJP.SearchResult searchResult) {
for (SearchJP.Place place : searchResult.getPlaceList()) {
MapIcon icon = new MapIcon();
icon.setImageResource(R.drawable.pin);
icon.setIconAnchor(MapIcon.Icon_Anchor.ICON_ANCHOR_BOTTOM);
icon.setID("Search Result");
icon.setPosition(place.getPosition());
m_map.addUserIcon(icon);
}
}
});
ポリゴン内検索
ポリゴン内検索では、Cruising Areaの範囲内にある施設に限定して検索します。
SearchJP.ChargingStationSearchRequest request = new SearchJP.ChargingStationSearchRequest();
request.setPosition(Navi.getInstance().getRunInfo().getOwnCarInfo().getGeoCoordinate());
request.setRangeType(SearchJP.ChargingStationSearchRequest.RangeType.POLYGON);
SearchJP.ChargingStationSearchRequest.Polygon polygon = new SearchJP.ChargingStationSearchRequest.Polygon();
polygon.setOuterRing(Navi.getInstance().getCruisingAreaResult().getOuterRingList().get(0));
request.setPolygon(polygon);
SearchJP.getInstance().search(request, new SearchJP.SearchResultListener() {
@Override
public void onCompleted(SearchJP.ErrorCode errorCode, SearchJP.SearchResult searchResult) {
for (SearchJP.Place place : searchResult.getPlaceList()) {
MapIcon icon = new MapIcon();
icon.setImageResource(R.drawable.pin);
icon.setIconAnchor(MapIcon.Icon_Anchor.ICON_ANCHOR_BOTTOM);
icon.setID("Search Result");
icon.setPosition(place.getPosition());
m_map.addUserIcon(icon);
}
}
});
高度な検索設定
SearchJP.ChargingStationSearchRequest.Extensions.ChargingSpotFilter
を設定することで検索条件を変更できます。
method | 用途 |
---|---|
setTollRoadType(TollRoadType tollRoadType) | 充電施設にアクセス可能な道路を指定 |
setPower(Integer power) | 出力電力の下限値[kWh] |
setChargingTypeList(List<ChargingType> chargingTypeList) | 充電方法 |
setConnectorTypeList(List<ConnectorType> connectorTypeList) | コネクタ種別 |
setMembershipList(List<Membership> membershipList) | 会員情報 |
setFreeSpotFlag(Boolean freeSpotFlag) | 無料利用可否 |
setAllHoursFlag(Boolean allHoursFlag) | 終日利用可否 |
setBusinessHoursList(List<String> businessHoursList) | 営業時間[YYYYMMDDTHHMM] |
Note:
複数propertyが設定された場合はAND検索となります。
例えば急速充電が可能で終日営業している施設に限定して検索したい場合のサンプルは以下の通りです。
SearchJP.ChargingStationSearchRequest.Extensions extensions = new SearchJP.ChargingStationSearchRequest.Extensions();
SearchJP.ChargingStationSearchRequest.Extensions.ChargingSpotFilter filter = new SearchJP.ChargingStationSearchRequest.Extensions.ChargingSpotFilter();
filter.setChargingTypeList(Arrays.asList(SearchJP.ChargingType.RAPID));
filter.setAllHoursFlag(true);
extensions.setChargingSpotFilter(filter);