terra-draw-route-snap-mode
v0.3.4
Published
A mode for Terra Draw to provide snapping to a route network
Readme
Terra Draw Route Snapping Mode
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.
Install
npm install terra-draw-route-snap-modeDocs
You can find the API Docs here
Basic Usage
We can import TerraDrawRouteSnapMode in this way:
import { TerraDrawRouteSnapMode } from terra-draw-route-snap-modeWe 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;
setRouteFinder: (routeFinder: RouteFinder) => void;
setNetwork: (network: FeatureCollection<LineString>) => void
}You could construct the routing like so:
import { Routing } from "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.
License
MIT
