@gegeweb/leaflet-routing-machine-openroute

0.1.10 • Public • Published

Leaflet Routing Machine - OpenRoute Service

Extends Leaflet Routing Machine with support for OpenRoute Service.

This plugin is used (it was developed for this) in the SCASB - Calcul itinéraires vélo map (works stil in progress…).

How to use / Install

Required prerequisites

  1. Get an OpenRoute Service api key
  2. Install Leaflet Routing Machine in your project
  3. Download or clone this repository and copy the files leaflet-routing-machine-openroute/dist/* in your project.

Node.js

Install

npm install @gegeweb/leaflet-routing-machine-openroute

Build

npm run-script build

Browser

1. include javascript

<head>
…
<!-- Leaflet -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@latest/dist/leaflet.css" />
<link rel="stylesheet" href="https://unpkg.com/leaflet-routing-machine@latest/dist/leaflet-routing-machine.css" />
<script src="https://unpkg.com/leaflet@latest/dist/leaflet.js"></script>
<!-- Leaflet Routing Machine -->
<script src="https://unpkg.com/leaflet-routing-machine@latest/dist/leaflet-routing-machine.min.js"></script>
<!-- Leaflet Routing Machine - OpenRoute Service -->
<script src="https://unpkg.com/@gegeweb/leaflet-routing-machine-openroute@latest/dist/leaflet-routing-openroute.min.js"></script>
…
</head>

2. initialise the router

// ROUTING
// the plugin allow to setting the requesting format
// but at this time, gpx doesn't works.
const osrRouter = L.Routing.openrouteservice(apikey, {
        "timeout": 30 * 1000, // 30",
        "format": "json",                           // default, gpx not yet supported
        "host": "https://api.openrouteservice.org", // default if not setting
        "service": "directions",                    // default (for routing) 
        "api_version": "v2",                        // default
        "profile": "cycling-road",                  // default
        "routingQueryParams": {
            "attributes": [
                "avgspeed",
                "percentage"
            ],
            "language": "fr-fr",
            "maneuvers": "true",
            "preference": "recommended",
        }
});

For the routingQueryParams options please refer to the API Playground or documentation.

Be careful! The example refer to the v1 API, for the v2 API you must use array instead of strings of arguments separed by '|'.

for profil: cycling-*:

"routingQueryParams": {
    "avoid_features": [
        "hills",
        "unpavedroads",
    ],
    "profile_params": {
        "weightings": {
            "steepness_difficulty": {
                "level": 3
            },
        "restrictions": {
            "gradient": 15
        }
    }
},

3. declare the router in the L.Routing.Control

See the official API documentation for further details.

L.Routing.control({
    …
    router: osrRouter,
    formatter: L.routing.formatterORS({
        …
        language: 'fr',     // language of instructions & control ui
        steptotext: true,   // force using internal formatter instead of ORS instructions
    }),
    …
}).addTo(map);

Dependancies

Acknowledgements

Special thanks to @Sp3r4z. ;)

And of course, a big thank you to the OpenRoute Service team (developers, system administrators...) for providing this service for free and for the development.

And also to Per Liedman for the Leaflet Routing Machine plugin.

Package Sidebar

Install

npm i @gegeweb/leaflet-routing-machine-openroute

Weekly Downloads

46

Version

0.1.10

License

AGPL-3.0

Unpacked Size

147 kB

Total Files

10

Last publish

Collaborators

  • gegeweb