UNPKG

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
<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