339 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			339 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| <!-- Generated by documentation.js. Update this documentation by updating the source code. -->
 | |
| 
 | |
| ## OSRM
 | |
| 
 | |
| The `OSRM` method is the main constructor for creating an OSRM instance.
 | |
| An OSRM instance requires a `.osrm` dataset, which is prepared by the OSRM toolchain.
 | |
| You can create such a `.osrm` file by running the OSRM binaries we ship in `node_modules/osrm/lib/binding/` and default
 | |
| profiles (e.g. for setting speeds and determining road types to route on) in `node_modules/osrm/profiles/`:
 | |
| 
 | |
|     node_modules/osrm/lib/binding/osrm-extract data.osm.pbf -p node_modules/osrm/profiles/car.lua
 | |
|     node_modules/osrm/lib/binding/osrm-contract data.osrm
 | |
| 
 | |
| Consult the [osrm-backend](https://github.com/Project-OSRM/osrm-backend) documentation for further details.
 | |
| 
 | |
| Once you have a complete `network.osrm` file, you can calculate routes in javascript with this object.
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM('network.osrm');
 | |
| ```
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `options` **([Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) \| [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String))** Options for creating an OSRM object or string to the `.osrm` file. (optional, default `{shared_memory:true}`)
 | |
|     -   `options.algorithm` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)?** The algorithm to use for routing. Can be 'CH', 'CoreCH' or 'MLD'. Default is 'CH'.
 | |
|                Make sure you prepared the dataset with the correct toolchain.
 | |
|     -   `options.shared_memory` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** Connects to the persistent shared memory datastore.
 | |
|                This requires you to run `osrm-datastore` prior to creating an `OSRM` object.
 | |
|     -   `options.path` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)?** The path to the `.osrm` files. This is mutually exclusive with setting {options.shared_memory} to true.
 | |
| 
 | |
| ### route
 | |
| 
 | |
| Returns the fastest route between two or more coordinates while visiting the waypoints in order.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** Object literal containing parameters for the route query.
 | |
|     -   `options.coordinates` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** The coordinates this request will use, coordinates as `[{lon},{lat}]` values, in decimal degrees.
 | |
|     -   `options.bearings` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the search to segments with given bearing in degrees towards true north in clockwise direction.
 | |
|                                           Can be `null` or an array of `[{value},{range}]` with `integer 0 .. 360,integer 0 .. 180`.
 | |
|     -   `options.radiuses` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the coordinate snapping to streets in the given radius in meters. Can be `null` (unlimited, default) or `double >= 0`.
 | |
|     -   `options.hints` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Hints for the coordinate snapping. Array of base64 encoded strings.
 | |
|     -   `options.alternatives` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Search for alternative routes and return as well.
 | |
|         _Please note that even if an alternative route is requested, a result cannot be guaranteed._ (optional, default `false`)
 | |
|     -   `options.steps` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Returned route steps for each route leg. (optional, default `false`)
 | |
|     -   `options.annotations` **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean))** An array with strings of `duration`, `nodes`, `distance`, `weight`, `datasources`, `speed` or boolean for enabling/disabling all. (optional, default `false`)
 | |
|     -   `options.geometries` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returned route geometry format (influences overview and per step). Can also be `geojson`. (optional, default `polyline`)
 | |
|     -   `options.overview` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Add overview geometry either `full`, `simplified` according to highest zoom level it could be display on, or not at all (`false`). (optional, default `simplified`)
 | |
|     -   `options.continue_straight` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** Forces the route to keep going straight at waypoints and don't do a uturn even if it would be faster. Default value depends on the profile.
 | |
|                          `null`/`true`/`false`
 | |
|     -   `options.approaches` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Keep waypoints on curb side. Can be `null` (unrestricted, default) or `curb`.
 | |
| -   `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** 
 | |
| 
 | |
| **Examples**
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM("berlin-latest.osrm");
 | |
| osrm.route({coordinates: [[52.519930,13.438640], [52.513191,13.415852]]}, function(err, result) {
 | |
|   if(err) throw err;
 | |
|   console.log(result.waypoints); // array of Waypoint objects representing all waypoints in order
 | |
|   console.log(result.routes); // array of Route objects ordered by descending recommendation rank
 | |
| });
 | |
| ```
 | |
| 
 | |
| Returns **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** An array of [Waypoint](#waypoint) objects representing all waypoints in order AND an array of [`Route`](#route) objects ordered by descending recommendation rank.
 | |
| 
 | |
| ### nearest
 | |
| 
 | |
| Snaps a coordinate to the street network and returns the nearest n matches.
 | |
| 
 | |
| Note: `coordinates` in the general options only supports a single `{longitude},{latitude}` entry.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** Object literal containing parameters for the nearest query.
 | |
|     -   `options.coordinates` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** The coordinates this request will use, coordinates as `[{lon},{lat}]` values, in decimal degrees.
 | |
|     -   `options.bearings` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the search to segments with given bearing in degrees towards true north in clockwise direction.
 | |
|                                           Can be `null` or an array of `[{value},{range}]` with `integer 0 .. 360,integer 0 .. 180`.
 | |
|     -   `options.radiuses` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the coordinate snapping to streets in the given radius in meters. Can be `null` (unlimited, default) or `double >= 0`.
 | |
|     -   `options.hints` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Hints for the coordinate snapping. Array of base64 encoded strings.
 | |
|     -   `options.number` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** Number of nearest segments that should be returned.
 | |
|         Must be an integer greater than or equal to `1`. (optional, default `1`)
 | |
|     -   `options.approaches` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Keep waypoints on curb side. Can be `null` (unrestricted, default) or `curb`.
 | |
| -   `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** 
 | |
| 
 | |
| **Examples**
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM('network.osrm');
 | |
| var options = {
 | |
|   coordinates: [[13.388860,52.517037]],
 | |
|   number: 3,
 | |
|   bearings: [[0,20]]
 | |
| };
 | |
| osrm.nearest(options, function(err, response) {
 | |
|   console.log(response.waypoints); // array of Waypoint objects
 | |
| });
 | |
| ```
 | |
| 
 | |
| Returns **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** containing `waypoints`.
 | |
| **`waypoints`**: array of [`Ẁaypoint`](#waypoint) objects sorted by distance to the input coordinate.
 | |
|                  Each object has an additional `distance` property, which is the distance in meters to the supplied input coordinate.
 | |
| 
 | |
| ### table
 | |
| 
 | |
| Computes duration tables for the given locations. Allows for both symmetric and asymmetric
 | |
| tables.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** Object literal containing parameters for the table query.
 | |
|     -   `options.coordinates` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** The coordinates this request will use, coordinates as `[{lon},{lat}]` values, in decimal degrees.
 | |
|     -   `options.bearings` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the search to segments with given bearing in degrees towards true north in clockwise direction.
 | |
|                                           Can be `null` or an array of `[{value},{range}]` with `integer 0 .. 360,integer 0 .. 180`.
 | |
|     -   `options.radiuses` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the coordinate snapping to streets in the given radius in meters. Can be `null` (unlimited, default) or `double >= 0`.
 | |
|     -   `options.hints` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Hints for the coordinate snapping. Array of base64 encoded strings.
 | |
|     -   `options.sources` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** An array of `index` elements (`0 <= integer < #coordinates`) to
 | |
|         use
 | |
|         location with given index as source. Default is to use all.
 | |
|     -   `options.destinations` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** An array of `index` elements (`0 <= integer <
 | |
|         #coordinates`) to use location with given index as destination. Default is to use all.
 | |
|     -   `options.approaches` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Keep waypoints on curb side. Can be `null` (unrestricted, default) or `curb`.
 | |
| -   `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** 
 | |
| 
 | |
| **Examples**
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM('network.osrm');
 | |
| var options = {
 | |
|   coordinates: [
 | |
|     [13.388860,52.517037],
 | |
|     [13.397634,52.529407],
 | |
|     [13.428555,52.523219]
 | |
|   ]
 | |
| };
 | |
| osrm.table(options, function(err, response) {
 | |
|   console.log(response.durations); // array of arrays, matrix in row-major order
 | |
|   console.log(response.sources); // array of Waypoint objects
 | |
|   console.log(response.destinations); // array of Waypoint objects
 | |
| });
 | |
| ```
 | |
| 
 | |
| Returns **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** containing `durations`, `sources`, and `destinations`.
 | |
| **`durations`**: array of arrays that stores the matrix in row-major order. `durations[i][j]` gives the travel time from the i-th waypoint to the j-th waypoint.
 | |
|                  Values are given in seconds.
 | |
| **`sources`**: array of [`Ẁaypoint`](#waypoint) objects describing all sources in order.
 | |
| **`destinations`**: array of [`Ẁaypoint`](#waypoint) objects describing all destinations in order.
 | |
| 
 | |
| ### tile
 | |
| 
 | |
| This generates [Mapbox Vector Tiles](https://mapbox.com/vector-tiles) that can be viewed with a
 | |
| vector-tile capable slippy-map viewer. The tiles contain road geometries and metadata that can
 | |
| be used to examine the routing graph. The tiles are generated directly from the data in-memory,
 | |
| so are in sync with actual routing results, and let you examine which roads are actually
 | |
| routable,
 | |
| and what weights they have applied.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `ZXY` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** an array consisting of `x`, `y`, and `z` values representing tile coordinates like
 | |
|            [wiki.openstreetmap.org/wiki/Slippy_map_tilenames](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames)
 | |
|            and are supported by vector tile viewers like [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/api/).
 | |
| -   `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** 
 | |
| 
 | |
| **Examples**
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM('network.osrm');
 | |
| osrm.tile([0, 0, 0], function(err, response) {
 | |
|   if (err) throw err;
 | |
|   fs.writeFileSync('./tile.vector.pbf', response); // write the buffer to a file
 | |
| });
 | |
| ```
 | |
| 
 | |
| Returns **[Buffer](https://nodejs.org/api/buffer.html)** contains a Protocol Buffer encoded vector tile.
 | |
| 
 | |
| ### match
 | |
| 
 | |
| Map matching matches given GPS points to the road network in the most plausible way.
 | |
| Please note the request might result multiple sub-traces. Large jumps in the timestamps
 | |
| (>60s) or improbable transitions lead to trace splits if a complete matching could
 | |
| not be found. The algorithm might not be able to match all points. Outliers are removed
 | |
| if they can not be matched successfully.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** Object literal containing parameters for the match query.
 | |
|     -   `options.coordinates` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** The coordinates this request will use, coordinates as `[{lon},{lat}]` values, in decimal degrees.
 | |
|     -   `options.bearings` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the search to segments with given bearing in degrees towards true north in clockwise direction.
 | |
|                                           Can be `null` or an array of `[{value},{range}]` with `integer 0 .. 360,integer 0 .. 180`.
 | |
|     -   `options.hints` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Hints for the coordinate snapping. Array of base64 encoded strings.
 | |
|     -   `options.steps` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Returned route steps for each route. (optional, default `false`)
 | |
|     -   `options.annotations` **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean))** An array with strings of `duration`, `nodes`, `distance`, `weight`, `datasources`, `speed` or boolean for enabling/disabling all. (optional, default `false`)
 | |
|     -   `options.geometries` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returned route geometry format (influences overview and per step). Can also be `geojson`. (optional, default `polyline`)
 | |
|     -   `options.overview` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Add overview geometry either `full`, `simplified` according to highest zoom level it could be display on, or not at all (`false`). (optional, default `simplified`)
 | |
|     -   `options.timestamps` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)>?** Timestamp of the input location (integers, UNIX-like timestamp).
 | |
|     -   `options.radiuses` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Standard deviation of GPS precision used for map matching. If applicable use GPS accuracy. Can be `null` for default value `5` meters or `double >= 0`.
 | |
|     -   `options.gaps` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Allows the input track splitting based on huge timestamp gaps between points. Either `split` or `ignore`. (optional, default `split`)
 | |
|     -   `options.tidy` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Allows the input track modification to obtain better matching quality for noisy tracks. (optional, default `false`)
 | |
| -   `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** 
 | |
| 
 | |
| **Examples**
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM('network.osrm');
 | |
| var options = {
 | |
|     coordinates: [[13.393252,52.542648],[13.39478,52.543079],[13.397389,52.542107]],
 | |
|     timestamps: [1424684612, 1424684616, 1424684620]
 | |
| };
 | |
| osrm.match(options, function(err, response) {
 | |
|     if (err) throw err;
 | |
|     console.log(response.tracepoints); // array of Waypoint objects
 | |
|     console.log(response.matchings); // array of Route objects
 | |
| });
 | |
| ```
 | |
| 
 | |
| Returns **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** containing `tracepoints` and `matchings`.
 | |
| **`tracepoints`** Array of [`Ẁaypoint`](#waypoint) objects representing all points of the trace in order.
 | |
|                   If the trace point was ommited by map matching because it is an outlier, the entry will be null.
 | |
|                   Each `Waypoint` object includes two additional properties, 1) `matchings_index`: Index to the
 | |
|                   [`Route`](#route) object in matchings the sub-trace was matched to, 2) `waypoint_index`: Index of
 | |
|                   the waypoint inside the matched route.
 | |
| **`matchings`** is an array of [`Route`](#route) objects that assemble the trace. Each `Route` object has an additional `confidence` property,
 | |
|                 which is the confidence of the matching. float value between `0` and `1`. `1` is very confident that the matching is correct.
 | |
| 
 | |
| ### trip
 | |
| 
 | |
| The trip plugin solves the Traveling Salesman Problem using a greedy heuristic
 | |
| (farthest-insertion algorithm) for 10 or _ more waypoints and uses brute force for less than 10
 | |
| waypoints. The returned path does not have to be the shortest path, _ as TSP is NP-hard it is
 | |
| only an approximation.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** Object literal containing parameters for the trip query.
 | |
|     -   `options.coordinates` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** The coordinates this request will use, coordinates as `[{lon},{lat}]` values, in decimal degrees.
 | |
|     -   `options.bearings` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the search to segments with given bearing in degrees towards true north in clockwise direction.
 | |
|                                           Can be `null` or an array of `[{value},{range}]` with `integer 0 .. 360,integer 0 .. 180`.
 | |
|     -   `options.radiuses` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Limits the coordinate snapping to streets in the given radius in meters. Can be `double >= 0` or `null` (unlimited, default).
 | |
|     -   `options.hints` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Hints for the coordinate snapping. Array of base64 encoded strings.
 | |
|     -   `options.steps` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Returned route steps for each route. (optional, default `false`)
 | |
|     -   `options.annotations` **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean))** An array with strings of `duration`, `nodes`, `distance`, `weight`, `datasources`, `speed` or boolean for enabling/disabling all. (optional, default `false`)
 | |
|     -   `options.geometries` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returned route geometry format (influences overview and per step). Can also be `geojson`. (optional, default `polyline`)
 | |
|     -   `options.overview` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Add overview geometry either `full`, `simplified` (optional, default `simplified`)
 | |
|     -   `options.roundtrip` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Returned route is a roundtrip (route returns to first location). (optional, default `true`)
 | |
|     -   `options.source` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returned route starts at `any` or `first` coordinate. (optional, default `any`)
 | |
|     -   `options.destination` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returned route ends at `any` or `last` coordinate. (optional, default `any`)
 | |
|     -   `options.approaches` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** Keep waypoints on curb side. Can be `null` (unrestricted, default) or `curb`.
 | |
| -   `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** 
 | |
| 
 | |
| A requirement for computing trips is that all input coordinates are connected.
 | |
| Currently, not all combinations of `roundtrip`, `source` and `destination` are supported.
 | |
| Right now, the following combinations are possible:
 | |
| 
 | |
| | roundtrip | source | destination | supported |
 | |
| | :-------- | :----- | :---------- | :-------- |
 | |
| | true      | first  | last        | **yes**   |
 | |
| | true      | first  | any         | **yes**   |
 | |
| | true      | any    | last        | **yes**   |
 | |
| | true      | any    | any         | **yes**   |
 | |
| | false     | first  | last        | **yes**   |
 | |
| | false     | first  | any         | no        |
 | |
| | false     | any    | last        | no        |
 | |
| | false     | any    | any         | no        |
 | |
| 
 | |
| **Examples**
 | |
| 
 | |
| ```javascript
 | |
| var osrm = new OSRM('network.osrm');
 | |
| var options = {
 | |
|   coordinates: [
 | |
|     [13.36761474609375, 52.51663871100423],
 | |
|     [13.374481201171875, 52.506191342034576]
 | |
|   ],
 | |
|   source: "first",
 | |
|   destination: "last",
 | |
|   roundtrip: false
 | |
| }
 | |
| osrm.trip(options, function(err, response) {
 | |
|   if (err) throw err;
 | |
|   console.log(response.waypoints); // array of Waypoint objects
 | |
|   console.log(response.trips); // array of Route objects
 | |
| });
 | |
| ```
 | |
| 
 | |
| Returns **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** containing `waypoints` and `trips`.
 | |
| **`waypoints`**: an array of [`Waypoint`](#waypoint) objects representing all waypoints in input order.
 | |
|                  Each Waypoint object has the following additional properties,
 | |
|                  1) `trips_index`: index to trips of the sub-trip the point was matched to, and
 | |
|                  2) `waypoint_index`: index of the point in the trip.
 | |
| **`trips`**: an array of [`Route`](#route) objects that assemble the trace.
 | |
| 
 | |
| ## Responses
 | |
| 
 | |
| Responses
 | |
| 
 | |
| ### Route
 | |
| 
 | |
| Represents a route through (potentially multiple) waypoints.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `exteral` **documentation** in
 | |
|     [`osrm-backend`](../http.md#route)
 | |
| 
 | |
| ### RouteLeg
 | |
| 
 | |
| Represents a route between two waypoints.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `exteral` **documentation** in
 | |
|     [`osrm-backend`](../http.md#routeleg)
 | |
| 
 | |
| ### RouteStep
 | |
| 
 | |
| A step consists of a maneuver such as a turn or merge, followed by a distance of travel along a
 | |
| single way to the subsequent step.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `exteral` **documentation** in
 | |
|     [`osrm-backend`](https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#routestep)
 | |
| 
 | |
| ### StepManeuver
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `exteral` **documentation** in
 | |
|     [`osrm-backend`](https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#stepmaneuver)
 | |
| 
 | |
| ### Waypoint
 | |
| 
 | |
| Object used to describe waypoint on a route.
 | |
| 
 | |
| **Parameters**
 | |
| 
 | |
| -   `exteral` **documentation** in
 | |
|     [`osrm-backend`](https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#waypoint)
 |