Hands On
100DaysOfCode

# Solutions: Day 56-60 #100DaysOfCode

By Shruti Kuber | 01 June 2020

### Try HERE Maps

Create a free API key to build location-aware apps and services.

We are in week 12 of #100DaysOfCode with HERE! With this week, we will deep dive into the Routing v7 API.
If you have no idea what I'm talking about, take a look at this blog post which will tell you everything about #100DaysOfCode. If you have missed the solutions for days 0-55, you can read them in the previous blogs posts or on our YouTube channel.
Let's begin!

### Day 56/100

Avoiding traffic jams is as easy as it gets! Just ask politely 😝. Well, almost. Just indicate the TrafficMode to enabled. You will see the returned routes have arranged themselves in such a way that the route avoiding traffic is the first route returned.


// Get an instance of the routing service version 7:
var router = platform.getRoutingService();

// Create the parameters for the routing request:
var routingParameters = {
waypoint0:"52.4569927,13.380545",
waypoint1:"52.4805740,13.4303771",
mode:"fastest;car;traffic:enabled",
alternatives:3,
representation: "display"
};


### Day 57/100

For whatever reasons, sometimes, you want to avoid certain areas while driving. With the routing API, it is possible in two simple steps. The first is to identify the area and draw a box around it. Drawing a rectangle is similar to drawing any map object that we learnt in week 3 of 100daysofcode. To draw this rectangle, we are going to use the method H.geo.Rect.fromPoints to draw the rectangle by stating the top-left and bottom-right points of the rectangle.



let rectangle = new H.map.Rect( H.geo.Rect.fromPoints({"lat":52.47196092299903,"lng":13.376929060418977},{"lat":52.46853475142611,"lng":13.386257162576658}),{
style:{
strokeColor:'red',
fillColor:'rgba(255,0,0,0.5)'
}
});



### Day 58/100

To avoid the area that we drew on day 57, the second step is to use the avoidAreas parameter. Within this parameter, we will pass the bounding box we drew on day 57. The format of passing this bounding box is top-left and bottom-right geo-coordinates of the box.


// Get an instance of the routing service version 7:
var router = platform.getRoutingService();

// Create the parameters for the routing request:
var routingParameters = {
waypoint0:"52.4569927,13.380545",
waypoint1:"52.4805740,13.4303771",
mode:"fastest;car;traffic:enabled",
avoidAreas:rectangle.getBoundingBox().getTopLeft().lat+','+
rectangle.getBoundingBox().getTopLeft().lng+';'+
rectangle.getBoundingBox().getBottomRight().lat+','+
rectangle.getBoundingBox().getBottomRight().lng,
representation: "display"
};


### Day 59/100

A route is divided into several legs and these route legs are further divided into links. We will use these link ids to identify the patched of roads we wish to avoid. To do this, we need to use the parameter legAttributes and pass the RouteLegAttributeType as links


// Get an instance of the routing service version 7:
var router = platform.getRoutingService();

// Create the parameters for the routing request:
var routingParameters = {
waypoint0:"52.4569927,13.380545",
waypoint1:"52.4805740,13.4303771",
mode:"fastest;car;traffic:enabled",
alternatives:3,
representation: "display",
};


### Day 60/100

We will now use the linkID obtained from day 59 to avoid that portion of the road. To do this, you need to pass the linkId in the parameter avoidLinks.


// Create the parameters for the routing request:
var routingParameters = {
waypoint0:"52.4569927,13.380545",
waypoint1:"52.4805740,13.4303771",
mode:"fastest;car;traffic:enabled",
alternatives:3,
representation: "display",