mapnests-node-sdk
Version:
TypeScript Node Supported SDK for Mapnests API integration (Distance Matrix, Distance Matrix Details, Geocode, Reverse Geocode)
413 lines (332 loc) ⢠8.62 kB
Markdown
<a name="readme-top"></a>
##### Readme Top
<br />
<div align="center">
<a href="#">
<img src="//cdn.pixabay.com/photo/2015/06/23/11/13/globe-818583_1280.png" alt="Mapnests Logo" width="100">
</a>
<h1 align="center">Mapnests TypeScript SDK</h1>
<p align="center">
Map Nests
</p>
</div>
A secure and efficient TS SDK for the **Mapnests Platform**, enabling powerful geospatial capabilities such as **Search (Geocoding)**, **Reverse (Reverse Geocoding)**, and **Distance Matrix**.
---
## š Table of Contents
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Core Features](#core-features)
- [Distance Matrix](#distance-matrix)
- [Distance Matrix Details](#distance-matrix-details)
- [Pairwise Route Summary](#pairwise-route-summary)
- [Multi Source Route Summary](#multi-source-route-summary)
- [Search (Geocoding)](#search-geocoding)
- [Reverse Geocoding](#reverse-geocoding)
- [License](#license)
- [Contact](#contact)
<p align="right">(<a href="#readme-top">back to top</a>)</p>
---
## Installation
```bash
npm install mapnests-node-sdk
```
Import into your project:
```ts
import { Client, Mode } from "mapnests-node-sdk";
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>
---
## Quick Start
```ts
import { Client, Mode } from "mapnests-node-sdk";
(async function () {
const client = new Client("YOUR_API_KEY", "your.package.name");
const result = await client.search({ Query: "Dhaka" });
console.log("Search result:", result);
})();
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>
---
## Core Features
### Distance Matrix
> Calculates the distance and estimated time of arrival (ETA) between origin and destination points.
**Example Input:**
```ts
const res = await client.distanceMatrix({
OriginLat: 23.8103,
OriginLon: 90.4125,
DestLat: 23.75,
DestLon: 90.42,
Mode: Mode.Walking,
});
console.log(res);
```
**Example Output:**
```json
{
"data": {
"distanceInMetres": 8900,
"etaInSeconds": 1300
}
}
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>
### Pairwise Route Summary
> Computes distances, ETAs and geometries for multiple source-destination pairs in a single request. This is ideal for optimizing batch operations and comparing route statistics efficiently.
**Example Input:**
```ts
const summary = await client.pairwiseRouteSummary({
pairs: [
{
id: 1,
src: { lat: 23.8103, lon: 90.4125 },
dest: { lat: 23.7500, lon: 90.4200 },
mode: Mode.Walking,
},
{
id: 2,
src: { lat: 23.7806, lon: 90.3984 },
dest: { lat: 23.7740, lon: 90.3681 },
mode: Mode.Car,
},
]
});
console.log(summary);
```
**Example Output:**
```json
{
"status": true,
"message": "success",
"data": [
{
"id": 1,
"distanceInMeters": 8900,
"etaInSeconds": 1300,
"geometry": "encoded_polyline_string"
},
{
"id": 2,
"distanceInMeters": 4800,
"etaInSeconds": 700,
"geometry": "another_encoded_polyline"
}
]
}
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>
### Distance Matrix Details
> Returns step-by-step routing metadata, including geometry, waypoints, and navigation instructions.
**Example Input:**
```ts
const details = await client.distanceMatrixDetails({
OriginLat: 23.7806,
OriginLon: 90.3984,
DestLat: 23.774,
DestLon: 90.3681,
Mode: Mode.Car,
});
console.log(details);
```
**Example Output (simplified):**
```json
{
"status": true,
"message": "success",
"data": {
"routeResponse": {
"routes": [
{
"distance": 4800,
"duration": 700,
"geometry": "encoded_polyline",
"legs": [ ... ]
}
]
}
}
}
```
š **For detailed documentation on all response fields (e.g., `routes`, `legs`, `steps`, `maneuver`, etc.), check the [Distance Matrix Response Reference](docs/distance_matrix_details.md).**
### Pairwise Route Summary
> Computes distances, ETAs and geometries for multiple source-destination pairs in a single request. This is ideal for optimizing batch operations and comparing route statistics efficiently.
**Example Input:**
```ts
const summary = await client.pairwiseRouteSummary({
pairs: [
{
id: 1,
src: { lat: 23.8103, lon: 90.4125 },
dest: { lat: 23.75, lon: 90.42 },
mode: Mode.Walking,
},
{
id: 2,
src: { lat: 23.7806, lon: 90.3984 },
dest: { lat: 23.774, lon: 90.3681 },
mode: Mode.Car,
},
],
});
```
**Example Output:**
```json
{
"status": true,
"message": "success",
"data": [
{
"id": 1,
"distanceInMeters": 8900,
"etaInSeconds": 1300,
"geometry": "encoded_polyline_string"
},
{
"id": 2,
"distanceInMeters": 4800,
"etaInSeconds": 700,
"geometry": "another_encoded_polyline"
}
]
}
```
### Multi Source Route Summary
> Computes distances, ETAs and geometries for multiple source-destination pairs in a single request. This is ideal for optimizing batch operations and comparing route statistics efficiently.
**Example Input:**
```ts
const summary = await client.multiSourceRouteSummary({
sources: [
{
id: 1,
lat: 23.7805733,
lon: 90.2792399,
mode: "car",
},
{
id: 2,
lat: 23.75,
lon: 90.36,
mode: "car",
},
{
id: 3,
lat: 23.7,
lon: 90.42,
mode: "car",
},
{
id: 4,
lat: 23.7654321,
lon: 90.3456789,
mode: "car",
},
{
id: 5,
lat: 23.7123456,
lon: 90.3765432,
mode: "car",
},
],
destination: {
lat: 23.810332,
lon: 90.412518,
},
});
```
**Example Output:**
```json
{
"data": {
"routeSummaries": [
{
"id": 1,
"distanceInMeters": 23782.9,
"etaInSeconds": 1720,
"geometry": "encoded_polyline_string"
},
{
"id": 2,
"distanceInMeters": 13421.9,
"etaInSeconds": 1084.9,
"geometry": "encoded_polyline_string"
},
{
"id": 3,
"distanceInMeters": 15212.3,
"etaInSeconds": 1285.3,
"geometry": "encoded_polyline_string"
},
{
"id": 4,
"distanceInMeters": 14120.2,
"etaInSeconds": 1129.3,
"geometry": "encoded_polyline_string"
},
{
"id": 5,
"distanceInMeters": 16555.4,
"etaInSeconds": 1388,
"geometry": "encoded_polyline_string"
}
]
},
"message": "Success",
"status": true
}
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>
### Search (Geocoding)
> Finds places, streets, and landmarks by text query.
**Example Input:**
```ts
const searchRes = await client.search({
Query: "Bashundhara Residential Area, Dhaka",
});
console.log(searchRes);
```
**Example Output:**
```json
{
"data": [
{
"place_id": "123456",
"lat": "23.8156",
"lon": "90.4287",
"display_name": "Bashundhara Residential Area, Dhaka, Bangladesh"
}
],
"status": true,
"message": "success"
}
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>
### Reverse Geocoding
> Converts GPS coordinates into a readable address.
**Example Input:**
```ts
const revRes = await client.reverse({ Lat: 23.7806, Lon: 90.3984 });
console.log(revRes);
```
**Example Output:**
```json
{
"data": {
"displayName": "Farmgate, Tejgaon, Dhaka, Bangladesh",
"address": {
"country": "Bangladesh",
"state": "Dhaka Division",
"city": "Dhaka"
}
},
"status": true,
"message": "success"
}
```
---
## License
This project is licensed under the [MIT License](LICENSE).
<p align="right">(<a href="#readme-top">back to top</a>)</p>
---
## Contact
š§ [support@example.com](mailto:support@example.com)
Explain