Routing API v7 Developer's Guide

WaypointParameterType

Specify route waypoints in one of the following manners:

  • a rough position: GeoWaypointParameterType
  • a reference to a street: NavigationWaypointParameter with StreetPositions
  • an exact reference to a link: NavigationWaypointParameter with LinkPositions

GeoWaypointParameterType

The GeoWaypointParameterType defines a waypoint by latitude and longitude coordinates, as well as optional radius, user label and heading, and has the following parameter structure:

waypoint=[geo!][Type[,StopOverDuration]!]Position[;TransitRadius[;UserLabel[;Heading]]]
Parameter Component Structure Description

geo

geo!

Indicates that the parameter contains a geographical position.

[Type]

Enum[stopOver! | passThrough!]

180 degree turns are allowed for stopOver but not for passThrough. Waypoints defined through a drag-n-drop action should be marked as pass-through. PassThrough waypoints will not appear in the list of maneuvers.

[,StopOverDuration]

common:DurationType

Stopover delay in seconds. Impacts time-aware calculations. Ignored for passThrough.

Position

Latitude, Longitude, [Altitude];

37.7914050,-122.3987030,25;

Latitude WGS-84 degrees between -90 and 90. Longitude WGS-84 degrees between -180 and 180. Altitude in meters.

[TransitRadius]

TransitRadius

200

Matching Links are selected within the specified TransitRadius, in meters. For example to drive past a city without necessarily going into the city center you can specify the coordinates of the center and a TransitRadius of 5000m.

[UserLabel]

String

;My Home

Custom label identifying this waypoint.

[Heading]

Floating-point value in range [0, 360]

Heading (at the startpoint), in degrees starting at true north and continuing clockwise around the compass. North is 0 degrees, East is 90 degrees, South is 180 degrees, and West is 270 degrees.

Examples of GeoWaypointParameterType

// using a coordinate without a radius:
&waypoint0=geo!37.7914050,-122.3987030

// using a coordinate:
&waypoint0=geo!37.7914050,-122.3987030

// using a coordinate omitting the "geo!" prefix ("geo" is the default mode):
&waypoint0=37.7914050,-122.3987030

// using a coordinate for a pass-through waypoint:
&waypoint0=passThrough!37.7914050,-122.3987030

// using a coordinate plus transit radius:
&waypoint0=geo!37.7914050,-122.3987030;500

// using a coordinate plus transit radius and user label:
&waypoint0=geo!37.7914050,-122.3987030;500;My Home

// using a coordinate with user label only (transit radius is mandatory and specified as 
// empty):
&waypoint0=geo!37.7914050,-122.3987030;;My Home

// using a coordinate with heading South (TransitRadius and UserLabel are mandatory and specified as 
// empty):
&waypoint0=geo!37.7914050,-122.3987030;;;180

// specifying stopover delay as 30s
&waypont0=geo!stopOver,30!37.3914050,-122.3987939

NavigationWaypointParameterType with StreetPositions

The NavigationWaypointParameter defines a waypoint by street position and name. The street name helps select the right road in complex intersection scenarios such as a bridge crossing another road or in case of off-road locations near highways. A common use case for this scenario is when the user specifies a waypoint by selecting a place or a location after a search. To avoid the waypoint being matched to a highway in an off-road scenario, it is sufficient to specify an off-road location as a street position without an optional street name. For more details, see the structure of StreetPosition.

The optional display position of the waypoint defines where the location is displayed on a map. It denotes the center of the location and is not navigable, it is not located on a link in the routing network in contrast to the navigation positions of a location. The display position allows the routing engine to decide whether the waypoint is located on the left or on the right-hand side of the route.

The parameter structure is as follows:

waypoint0=street![Type[,StopOverDuration]!][DisplayPosition[;UserLabel[;StreetSideMatchMode]]]!StreetPosition[!Heading[!TransitRadius]]
URL Component Structure Description

street

street!

Indicates that parameters contains a street position.

[Type]

Enum[stopOver | passThrough]

180 degree turns are allowed for stopOver but not for passThrough. Waypoints defined through a drag-n-drop action should be marked as pass-through. PassThrough waypoints will not appear in the list of maneuvers.

[,StopOverDuration]

common:DurationType

Stopover delay in seconds. Impacts time-aware calculations. Ignored for passThrough.

[DisplayPosition]

Latitude, Longitude, [Altitude]

37.3456,56.778,567

Latitude WGS-84 degrees between -90 and 90. Longitude WGS-84 degrees between -180 and 180. Altitude in meters.

[UserLabel]

;String

;My Home

Custom label identifying this waypoint.

[StreetSideMatchMode]

Enum[matchAlways | matchOnlyIfDivided]

matchOnlyIfDivided

Intended mode for street side matching of this location. Defaults to matchOnlyIfDivided if omitted.

StreetPosition

Latitude,Longitude[,Altitude][;StreetName]

WGS-84 degrees between -90 and 90. Altitude in meters.

[Heading]

Floating-point value in range [0, 360]

Heading in degrees starting at true north and continuing clockwise around the compass. North is 0 degrees, East is 90 degrees, South is 180 degrees, and West is 270 degrees.

[TransitRadius]

TransitRadius

20

Matching Links are selected within the specified TransitRadius, in meters. For example to select a link by name without knowing exactly where the link is, you can specify the coordinates of the approximate position and a TransitRadius of 20m. Note that specifying a TransitRadius of more than 100m does not have any effect (as opposed to using TransitRadius in a GeoWaypointParameterType).

Examples of NavigationWaypointParameterType with StreetPosition

// using street position
&waypoint0=street!37.7914050,-122.3987030!37.7914055,-122.3987033;ABC Street

// using street position with additional stopover delay 45s
&waypoint0=street!stopOver,45!37.7914050,-122.3987030!37.7914055,-122.3987033;ABC Street

// the display position is optional:
&waypoint1=street!!37.7914055,-122.3987033;ABC Street

// using display position plus user label:
&waypoint1=street!37.79156,-122.39825;My Home!37.7914055,-122.3987033;ABC Street

// using display position plus user label and forcing side of street matching:
&waypoint1=street!37.79156,-122.39825;My Home;matchAlways!37.7914055,-122.3987033;ABC Street

// using display position forcing side of street matching (label is mandatory and specified empty):
&location=street!37.79156,-122.39825;;matchAlways!37.7914055,-122.3987033;ABC Street

// user label only (display position is mandatory and specified as 
// empty):
&waypoint1=street!;My Home!37.7914055,-122.3987033;ABC Street

// using display position plus user label and forcing side of street matching:
&location=street!37.79156,-122.39825;Favorite place;matchAlways!37.7914055,-122.3987033;ABC Street

// user label only (display position cannot be omitted when using user label so it is empty):
&location=street!;Favorite place!37.7914055,-122.3987033;ABC Street

// force side of street only (display position and user label cannot be omitted so are left empty):
&location=street!;;matchAlways!37.7914055,-122.3987033;ABC Street

// using a transit radius of 20m and heading of 90° to select correct side of a highway:
&waypoint1=street!stopOver!!49.177664,9.902077;A6!90!20