Routing Guide
The routing package provides route calculation and navigation capabilities. It uses under the hood our Routing API
Features
- Route Calculation: Calculate routes between two points using various travel modes
- Multiple Itineraries: Get multiple route options sorted by preference
- Travel Modes: Support for walking, driving, transit, and more
- Wheelchair Support: Options to avoid stairs and escalators for accessibility
Getting Started
import { Router, Coordinates } from '@wemap/routing';
import { core } from '@wemap/core';
// Initialize core SDK first
await core.init({ emmid: '...', token: '...' });
// Create router and calculate route
const router = new Router();
const origin = new Coordinates(48.8566, 2.3522);
const destination = new Coordinates(48.8606, 2.3376);
const itineraries = await router.directions(
origin,
destination,
'WALK',
{ isWheelchair: true }
);
// Use the first (usually best) itinerary
const bestRoute = itineraries[0];
console.log(`Distance: ${bestRoute.distance}m`);
console.log(`Duration: ${bestRoute.duration}s`);
Travel Modes
WALK: Pedestrian routesBIKE: Vehicle routesCAR: Vehicle routesTRANSIT: Public transportation routes
Route Options
isWheelchair: Avoid stairs and escalators (Person with Reduced Mobility)departureDate: Specify departure time for transit routes
Integration with Positioning
You can integrate the routing package with the positioning package to create a navigation including map matching and navigation informations like next steps, distance to destination, etc.
Learn more about the Positioning package →
import { Router, Coordinates } from '@wemap/routing';
import { GnssWifiLocationSource, UserPosition, MapMatching } from '@wemap/positioning';
const router = new Router();
const locationSource = new GnssWifiLocationSource();
await locationSource.start();
let userPosition: UserPosition | null = null;
locationSource.onUpdate((pose: Pose) => {
userPosition = pose.position;
});
/*
* Later in your code, when you have a user position
* Calculate route from user position to destination
*/
const itineraries = await router.directions(userPosition, destination, 'WALK');
const itinerary = itineraries[0];
MapMatching.setItinerary(itinerary);
const itineraryInfoManager = new ItineraryInfoManager();
// Set itinerary for ItineraryInfoManager
itineraryInfoManager.itinerary = itinerary;
const navigationInfo = itineraryInfoManager.getInfo(userPosition);
// ^? ItineraryInfo<U extends Coordinates = Coordinates> = {
// nextStep: Step | null;
// previousStep: Step | null;
// projection: GraphProjection<U>;
// leg: Leg;
// traveledDistance: number;
// remainingDistance: number;
// traveledPercentage: number;
// remainingPercentage: number;
// };