npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cedarstudios/cedarmaps

v1.0.2

Published

A node.js and browser JavaScript client to CedarMaps services.

Downloads

84

Readme

Cedarmaps

A node.js and browser JavaScript client to CedarMaps services.

Table of contents

Installation

$ npm i @cedarstudios/cedarmaps

In order to use CedarMaps' API, you MUST have an access token. Get one from CedarMaps website (Menu link: "درخواست اکانت رایگان"). It may take a couple of hours until your request is processed and your credentials are emailed to you.

const cedarMaps = require('@cedarstudios/cedarmaps');
const client = cedarMaps('<YOUR ACCESS TOKEN>'); // Get your token from cedarmaps.com

API

Forward Geocoder

Signature: client.forwardGeocoding(queryString, searchIndex, filters, callback)

| Options | Value | Description | |--------------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | queryString (required) | String | a query, expressed as a string, like 'ونک'. This string MUST be URI encoded. Use encodeURIComponent('ونک') for example. | | searchIndex (required) | String | Available profiles: cedarmaps.streets Only searches through map features - 1 API Call cedarmaps.places Only searches through places (Source: kikojas.com) - 2 API Calls cedarmaps.mix Searches through both profiles above - 3 API Calls | | filters | Object | Example: { distance: 0.5, limit: 5 }. Available filters: limit integer - Number of returned results. Default is 10, Max is 30.distance float - Unit is km, 0.1 means 100 meters.location lat,lng - For searching near a location. should be used only with distance param.type enum - Types of map features to filter the results. Possible values: street, poi, village, roundabout, expressway, locality, town, city, junction, freeway, boulevard, region, state (You can mix types by separating them with commas).ne lat,lng - Specifies north east of the bounding box - should be used with sw param.sw lat,lng - Specifies south west of the bounding box - should be used with ne param. | | callback (required) | Function | A callback with passed params: (error, result). |

Sample usage:

client.forwardGeocoding(encodeURIComponent('ونک'), 'cedarmaps.streets', {type: 'roundabout'}, (err, res) => {console.log(res);});

Reverse Geocoder

Signature: client.reverseGeocoding(location, options, callback)

Queries the reverse geocoder with a location and returns the address in desired format.

| Options | Value | Description | |-----------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | location (required) | Mixed | A point can be formatted in one of the forms below:[lon, lat] // an array of lon, lat{ lat: 0, lon: 0 } // a lon, lat object{ lat: 0, lng: 0 } | | options | Object | format - Address format with a number of place holders. Example: {province}{sep}{city}{sep}{locality}{sep}{district}{sep}{address}{sep}{place} Prefix - Possible values: short, longSeparator - Character for {sep} placeholder. Example: "، "Verbosity - Either true or false | | callback (required) | Function | A callback with passed params: (error, result). |

Sample usage:

client.reverseGeocoding([35.76312468, 51.40292645], {verbosity: true}, (err, res) => { console.log(res) });

Trip Calculator

Signature: client.distance(points, callback)

Travel-time and distance between up to 100 pairs of origin and destination, in one single request.

| Options | Value | Description | |-----------------------|----------|---------------------------------------------------| | points (required) | Array | An Array of {lat,lon} pairs. Example: [{ lat: 35.76312468, lon: 51.40292645 }, { lat: 35.76288091, lon: 51.37305737}] | | callback (required) | Function | A callback with passed params: (error, result). |

Reponse object description:

| Key | Description | | ---- | ---- | | distance | The total distance of the route, in Meters. | | time | The total time of the route, in Milliseconds. | | bbox | The bounding box of the route, format: minLon, minLat, maxLon, maxLat. |

Sample usage:

client.distance([{ lat: 35.76312468, lon: 51.40292645 }, { lat: 35.76288091, lon: 51.37305737}], (err, res) => {console.log(res)});

Turn by Turn Navigation

Signature: client.direction(points, options, callback)

Calculates the optimal driving routes between two or more points. (Shortest path)

Note: The number of provided points must be even.

| Options | Value | Description | |-----------------------|----------|-------------------------------------------------------------------------------------------------------------------------| | points (required) | Array | An Array of {lat,lon} pairs. Example: [{ lat: 35.76312468, lon: 51.40292645 }, { lat: 35.76288091, lon: 51.37305737}] | | options | Object | The only available option for now is instructions (Boolean) which adds driving instructions object to the response. | | callback (required) | Function | A callback with passed params: (error, result). |

Sample usage:

client.direction([{ lat: 35.76312468, lon: 51.40292645 }, { lat: 35.76288091, lon: 51.37305737 }], {instructions: true}, (err, res) => { console.log(err, res) })

Reponse object description:

| Key | Description | | ---- | ---- | | distance | The total distance of the route, in Meters. | | time | The total time of the route, in Milliseconds. | | bbox | The bounding box of the route, format: minLon, minLat, maxLon, maxLat. | | geometry | The geometry of the route as a GeoJSON LineString. |

Here's the intructions object description:

Note: The last item in instructions array is the stop item with distance and time values of 0.

| Key | Description | |-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | text | Descriptive text of the instruction. | | street_name | The name of the street to turn onto in order to follow the route. | | distance | The distance for this instruction, in Meters. | | time | The duration for this instruction, in Milliseconds. | | interval | An array containing the first and the last index (relative to geometry.coordinates) of the points for this instruction. This is useful to know for which part of the route the instructions are valid. | | sign | A number representing actions that should be taken to follow the instructions. You may use this number for determining the action icon in your interface, or voice instructions, etc.: Keep Left=-7 Turn Sharp Left = -3 Turn Left = -2 Turn Slight Left = -1 Continue = 0 Turn Slight Right = 1 Turn Right = 2 Turn Sharp Right = 3 Reached via = 5 Roundabout = 6 Finish = 4 |

TileJSON

Signature: client.tile(profile)

TileJSON is a format that manages the complexities of custom maps. It organizes zoom levels, center points, legend contents, and more, into a format that makes it easy to display a map.

In order to get CedarMaps tiles you need to have their specification and then pass these info to your favorite map libarary (Leaflet, OpenLayers, etc.).

For instance, in our cedarmaps-web-sdk-raster you use this TileJSON url for displaying map tiles.

| Options | Value | Description | |----------------------|--------|-------------------------------------------------------| | profile (required) | String | Only available option is cedarmaps.streets for now. |

Sample Response:

{
  "tilejson": "2.2.0",
  "name": "cedarmaps.streets",
  "version": "3.0",
  "description": "CedarMaps covers the whole world in general and Iran in details",
  "tiles": [
    "https://api.cedarmaps.com/v1/tiles/cedarmaps.streets/{z}/{x}/{y}.png?access_token=<your access token>"
  ],
  "attribution": "<a href=\"https://www.cedarmaps.com\">CedarMaps</a>",
  "minzoom": 0,
  "maxzoom": 17,
  "bounds": [-180, -90, 180, 90]
}

Sample usage:

client.tile('cedarmaps.streets', (err, res) => { console.log(err, res)});

Issues

If you have any questions while implementing Cedar Maps Web SDK, please feel free to open a new issue.