Skip to content

Latest commit

 

History

History
executable file
·
75 lines (54 loc) · 2.21 KB

File metadata and controls

executable file
·
75 lines (54 loc) · 2.21 KB

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-mode

Docs

You can find the API Docs here

Basic Usage

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;
    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