react-geo-router
v1.0.2
Published
A simple React package to fetch and visualize routes
Maintainers
Readme
✨ Features
- Uses Open Source Routing Machine (OSRM)
- Returns route geometry as GeoJSON
- Works seamlessly with Leaflet, Mapbox, Cesium, etc.
- Includes a
useRouteReact Hook withloading&errorstate - Allows custom routing server URLs
- Tree-shakable, ESM-ready, minimal footprint
- Only
axiosas peer dependency
📦 Installation
npm install react-geo-routeror
yarn add react-geo-routeror
pnpm add react-geo-router🚀 Quick Example
Using useRoute Hook (React + Leaflet)
import { useRoute } from 'react-geo-router';
import { MapContainer, TileLayer, GeoJSON } from 'react-leaflet';
import 'leaflet/dist/leaflet.css';
function RouteMap() {
const start = "77.2090,28.6139"; // New Delhi
const end = "72.5714,23.0225"; // Ahmedabad
const { route, loading, error } = useRoute(start, end);
return (
<div style={{ height: '500px' }}>
<MapContainer center={[28.6139, 77.2090]} zoom={5} style={{ height: '100%' }}>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
attribution='© OpenStreetMap contributors'
/>
{loading && <p>Loading route...</p>}
{error && <p>Error: {error}</p>}
{route && <GeoJSON data={route.geometry} />}
</MapContainer>
{route && (
<div style={{ marginTop: 10 }}>
<strong>Distance:</strong> {(route.distance / 1000).toFixed(1)} km
|
<strong>Time:</strong> {(route.duration / 60).toFixed(0)} mins
</div>
)}
</div>
);
}
export default RouteMap;🧱 Using fetchRoute (No React)
import { fetchRoute } from 'react-geo-router';
async function main() {
const route = await fetchRoute("77.2090,28.6139", "72.5714,23.0225");
console.log("Distance:", (route.distance / 1000).toFixed(1), "km");
console.log("Duration:", (route.duration / 60).toFixed(0), "minutes");
console.log("GeoJSON geometry:", route.geometry);
}
main();📝 Author
Nihar Ranjan Mohanta
GitHub: https://github.com/niharrm1
📄 License
MIT License © 2025 Nihar Ranjan Mohanta
