Search in sources :

Example 1 with RoadElement

use of com.here.android.mpa.common.RoadElement in project here-android-sdk-examples by heremaps.

the class MapFragmentView method createRoute.

private void createRoute(final List<RoutingZone> excludedRoutingZones) {
    /* Initialize a CoreRouter */
    CoreRouter coreRouter = new CoreRouter();
    /* Initialize a RoutePlan */
    RoutePlan routePlan = new RoutePlan();
    /*
         * Initialize a RouteOption. HERE Mobile SDK allow users to define their own parameters for the
         * route calculation,including transport modes,route types and route restrictions etc.Please
         * refer to API doc for full list of APIs
         */
    RouteOptions routeOptions = new RouteOptions();
    /* Other transport modes are also available e.g Pedestrian */
    routeOptions.setTransportMode(RouteOptions.TransportMode.CAR);
    /* Disable highway in this route. */
    routeOptions.setHighwaysAllowed(false);
    /* Calculate the shortest route available. */
    routeOptions.setRouteType(RouteOptions.Type.SHORTEST);
    /* Calculate 1 route. */
    routeOptions.setRouteCount(1);
    /* Exclude routing zones. */
    if (!excludedRoutingZones.isEmpty()) {
        routeOptions.excludeRoutingZones(toStringIds(excludedRoutingZones));
    }
    if (m_addAvoidedAreas) {
        DynamicPenalty dynamicPenalty = new DynamicPenalty();
        // There are two option to avoid certain areas during routing
        // 1. Add banned area using addBannedArea API
        GeoPolygon geoPolygon = new GeoPolygon();
        geoPolygon.add(Arrays.asList(new GeoCoordinate(52.631692, 13.437591), new GeoCoordinate(52.631905, 13.437787), new GeoCoordinate(52.632577, 13.438357)));
        // Note, the maximum supported number of banned areas is 20.
        dynamicPenalty.addBannedArea(geoPolygon);
        // 1. Add banned road link using addRoadPenalty API
        // Note, map data needs to be present to get RoadElement by the GeoCoordinate.
        RoadElement roadElement = RoadElement.getRoadElement(new GeoCoordinate(52.406611, 13.194916), "MAC");
        if (roadElement != null) {
            dynamicPenalty.addRoadPenalty(roadElement, DrivingDirection.DIR_BOTH, 0);
        }
        coreRouter.setDynamicPenalty(dynamicPenalty);
    }
    /* Finally set the route option */
    routePlan.setRouteOptions(routeOptions);
    /* Define waypoints for the route */
    /* START: South of Berlin */
    RouteWaypoint startPoint = new RouteWaypoint(new GeoCoordinate(52.406425, 13.193975));
    /* END: North of Berlin */
    RouteWaypoint destination = new RouteWaypoint(new GeoCoordinate(52.638623, 13.441998));
    /* Add both waypoints to the route plan */
    routePlan.addWaypoint(startPoint);
    routePlan.addWaypoint(destination);
    /* Trigger the route calculation,results will be called back via the listener */
    coreRouter.calculateRoute(routePlan, new Router.Listener<List<RouteResult>, RoutingError>() {

        @Override
        public void onProgress(int i) {
        /* The calculation progress can be retrieved in this callback. */
        }

        @Override
        public void onCalculateRouteFinished(List<RouteResult> routeResults, RoutingError routingError) {
            /* Calculation is done. Let's handle the result */
            if (routingError == RoutingError.NONE) {
                Route route = routeResults.get(0).getRoute();
                if (m_isExcludeRoutingZones && excludedRoutingZones.isEmpty()) {
                    // Here we exclude all available routing zones in the route.
                    // Also RoutingZoneRestrictionsChecker can be used to get
                    // available routing zones for specific RoadElement.
                    createRoute(route.getRoutingZones());
                } else {
                    /* Create a MapRoute so that it can be placed on the map */
                    m_mapRoute = new MapRoute(route);
                    /* Show the maneuver number on top of the route */
                    m_mapRoute.setManeuverNumberVisible(true);
                    /* Add the MapRoute to the map */
                    m_map.addMapObject(m_mapRoute);
                    /*
                                 * We may also want to make sure the map view is orientated properly
                                 * so the entire route can be easily seen.
                                 */
                    m_map.zoomTo(route.getBoundingBox(), Map.Animation.NONE, Map.MOVE_PRESERVE_ORIENTATION);
                }
            } else {
                Toast.makeText(m_activity, "Error:route calculation returned error code: " + routingError, Toast.LENGTH_LONG).show();
            }
        }
    });
}
Also used : MapRoute(com.here.android.mpa.mapping.MapRoute) RoadElement(com.here.android.mpa.common.RoadElement) CoreRouter(com.here.android.mpa.routing.CoreRouter) Router(com.here.android.mpa.routing.Router) CoreRouter(com.here.android.mpa.routing.CoreRouter) GeoCoordinate(com.here.android.mpa.common.GeoCoordinate) RouteOptions(com.here.android.mpa.routing.RouteOptions) RouteWaypoint(com.here.android.mpa.routing.RouteWaypoint) DynamicPenalty(com.here.android.mpa.routing.DynamicPenalty) GeoPolygon(com.here.android.mpa.common.GeoPolygon) RouteWaypoint(com.here.android.mpa.routing.RouteWaypoint) RoutingError(com.here.android.mpa.routing.RoutingError) RouteResult(com.here.android.mpa.routing.RouteResult) ArrayList(java.util.ArrayList) List(java.util.List) RoutePlan(com.here.android.mpa.routing.RoutePlan) Route(com.here.android.mpa.routing.Route) MapRoute(com.here.android.mpa.mapping.MapRoute)

Aggregations

GeoCoordinate (com.here.android.mpa.common.GeoCoordinate)1 GeoPolygon (com.here.android.mpa.common.GeoPolygon)1 RoadElement (com.here.android.mpa.common.RoadElement)1 MapRoute (com.here.android.mpa.mapping.MapRoute)1 CoreRouter (com.here.android.mpa.routing.CoreRouter)1 DynamicPenalty (com.here.android.mpa.routing.DynamicPenalty)1 Route (com.here.android.mpa.routing.Route)1 RouteOptions (com.here.android.mpa.routing.RouteOptions)1 RoutePlan (com.here.android.mpa.routing.RoutePlan)1 RouteResult (com.here.android.mpa.routing.RouteResult)1 RouteWaypoint (com.here.android.mpa.routing.RouteWaypoint)1 Router (com.here.android.mpa.routing.Router)1 RoutingError (com.here.android.mpa.routing.RoutingError)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1