This repository is for the TerraDrawRouteSnappingMode
module. TerraDrawRouteSnappingMode
is designed to help with the scenario where you want to be able to create a multi-stop route on a map, snapping the route against a predefined route network. This is achieved by client side routing on a FeatureCollection where the LineStrings have identical coordinates.
npm install terra-draw-route-snap-mode
You can find the API Docs here
We can import TerraDrawRouteSnapMode
in this way:
import { TerraDrawRouteSnapMode } from terra-draw-route-snap-mode
We can construct TerraDrawRouteSnapMode
like so:
new TerraDrawRouteSnapMode({
routing,
maxPoints: 5,
styles: {
lineStringColor: '#990000',
routePointColor: '#990000'
}
}),
Where routing
is a property of type:
export interface RoutingInterface {
getRoute: (startCoord: Position, endCoord: Position) => Feature<LineString> | null;
getClosestNetworkCoordinate: (coordinate: Position) => Position | null;
}
You could construct the routing
like so:
import { Routing } from "../../../src/terra-draw-route-snap-mode";
import { FeatureCollection, LineString } from "geojson";
import { TerraRoute } from 'terra-route';
// Initialise the TerraRoute instance with the default distance
const terraRoute = new TerraRoute()
// Construct the route network ready to call `getRoute` on terraRoute later in the TerraDrawRouteSnapMode instance
terraRoute.buildRouteGraph(network)
const terraRouting = new Routing({
network,
useCache: true,
routeFinder: terraRoute
})
If you want to see the faster CheapRuler implementation from the terra-route
package, please see the demo folder in the setup-routing.ts
file for an examples. CheapRuler is a reasonable distance metric to use for network graphs of less than 500km size that are not located on or near the poles.
MIT