Routing & Wayfinding — step-by-step navigation, indoors and out.
Multimodal routing engine, multi-floor guidance, dynamic recalculation and accessibility support. Native on iOS, Android, Flutter and JavaScript.
From query to guidance — in under a second.
Origin, destination, profile (pedestrian, accessibility, bike) and mode preferences.
Optimised Dijkstra on the indoor + outdoor topological graph. Result in < 1 second.
Text + directional arrow instructions, floor changes via lift or stairs, door and airlock handling.
Deviation detected? Immediate recalculation. Works offline — graph embedded in the app.
Six transport modes, one simplified integration.
From pedestrian to public transit, from accessibility guidance to audio — all modes exposed through the same unified API.
Pedestrian routing outdoor via OpenStreetMap, indoor via Wemap floor plan. Seamless transitions.
Cycling profile with multiple modes: fastest, safest, scenic.
GTFS integration — real-time schedules, connections, line-level accessibility data.
Floor-to-floor guidance: lift, escalator, stairs, ramp. Automatic selection per profile.
Full wheelchair profile: obstacle exclusion, minimum passage width, lift priority.
Voice instructions synchronised with guidance — native iOS and Android, web JS API.
Performance and platform coverage.
Available as a native SDK (iOS, Android, Flutter, JavaScript) or directly via the Data API — compute and render a route from your own backend, no SDK required.
Performance
| Calc time | < 1 second |
| Max indoor graph | 500,000 nodes |
| Offline capable | ✓ |
| GTFS support | ✓ |
| Supported profiles | 6 |
| Position accuracy | Depends on Positioning SDK |
Platforms & SDKs
| Platform | Status |
|---|---|
| iOS (Swift) | FULL FULL |
| Android (Kotlin) | FULL FULL |
| Flutter | FULL FULL |
| JavaScript (Web) | FULL FULL |
| React Native | BETA BETA |
Features: Turn-by-turn · Multi-floor · Offline graph · AR overlay · Audio guidance
Add navigation in 5 minutes.
// Via WemapMapSDK's navigationManager — computes and starts
// turn-by-turn guidance in one call
let origin = Coordinate(latitude: 43.610628, longitude: 3.876654)
let destination = Coordinate(latitude: 43.609011, longitude: 3.917091)
mapView.navigationManager
.startNavigation(
origin: origin, destination: destination,
travelMode: .walk,
options: navigationOptions, searchRules: searchRules,
itineraryOptions: itineraryOptions,
timeout: .seconds(10)
) fun getItinerariesForPreview() {
val origin = Coordinate(43.610628, 3.876654)
val destination = Coordinate(43.609011, 3.917091)
val searchRules = ItinerarySearchRules.WHEELCHAIR
lifecycleScope.launch {
runCatching {
mapView.itineraryManager
.getItineraries(
origin, destination,
TravelMode.Walk(),
searchRules
)
}.onSuccess {
mapView.itineraryManager.addItinerary(it.first())
}.onFailure {
println("Failed to start navigation")
}
}
} WemapMap(
options: MapOptions(
mapID: yourMapId,
token: yourToken,
environment: Environment.PROD,
),
itineraryWidgetEnabled: true,
onMapReady: (mapData, mapManager) async {
await mapManager.addItinerary(
origin: Coordinate(latitude: 48.877, longitude: 2.324, level: 0),
destination: Coordinate(latitude: 48.876, longitude: 2.323, level: 1),
searchRules: ItinerarySearchRules(ruleNames: ["wheelchair"]),
color: Colors.red,
);
},
onItineraryAdded: (itinerary) {
print('Added: ${itinerary.duration}s, ${itinerary.distance}m');
},
) import { core } from '@wemap/core';
import { Router, Coordinates } from '@wemap/routing';
await core.init({ emmid: 'YOUR_MAP_ID', token: 'YOUR_TOKEN' });
const router = new Router();
const origin = new Coordinates(43.6047, 1.4442);
const destination = new Coordinates(43.6051, 1.4448);
const itineraries = await router.directions(
origin,
destination,
'WALK',
{ isWheelchair: true }
);
const bestRoute = itineraries[0];
console.log('Distance:', bestRoute.distance, 'm');
console.log('Duration:', bestRoute.duration, 's'); Millions of guided journeys, every month.
"Wemap's dynamic recalculation was decisive for us. When equipments change in real time, the routing adapts — without the user noticing anything."— Innovation Team, SNCF Gares & Connexions
Built for regulated environments.
Transport standards, accessibility and GDPR compliance — all natively integrated in the routing engine.
Native GTFS and GTFS-RT integration for public transit schedules with real-time updates.
European standard for accessibility in built environments integrated in the routing engine.
Accessible guidance instructions: sufficient contrast, text alternatives, keyboard navigation.
Outdoor routing data built on OSM — contribute, update, stay sovereign.
Graph embedded in the app — navigation without connection, even in dead zones (stations, tunnels).
No position tracking. Route calculation runs locally on device — no data transmitted.
Ready to deploy navigation across your spaces?
Full documentation, sandbox, integration support.
Questions? Our technical team responds within the day. pro@getwemap.com