cedarmaps / cedarmaps-php-sdk
A PHP Wrapper for CedarMaps API
Requires
- php: >=5.6.0
- guzzlehttp/guzzle: ^6.3
- monolog/monolog: 1.*
Requires (Dev)
- phpdocumentor/phpdocumentor: 2.*
- phpunit/phpunit: 4.*
- sebastian/phpcpd: 2.*
This package is auto-updated.
Last update: 2024-12-26 05:06:05 UTC
README
A mapping service and highly detailed and spatially accurate GIS vector data application that covers the whole country of Iran.
Install
$ composer require cedarmaps/cedarmaps-php-sdk
Getting Started
Getting Access Token
You should have a client_id
and client_secret
in order to get an access_token.
POST "https://api.cedarmaps.com/v1/token" with client_id=<client_id> client_secret=<client_secret>
$apiKey = 'YOUR_API_KEY' $cedarMaps = new \CedarMaps\CedarMaps($apiKey);
API
#getForwardGeocoding(query, index, filters)
input
query: string
, URL-encoded text [REQUIRED]
index: Pick from CedarMaps::Constants['INDEXES'] for example CedarMaps::Constants['INDEXES']['STREET_INDEX']
filters:
Sample Response:
[ [ "address" => "اراضی عباس آباد,مهران,سید خندان,...", "components" => [ "city" => "تهران", "country" => "ایران", "districts" => [ "منطقه 4", "منطقه 3" ], "localities" => [ "اراضی عباس آباد", "مهران", "سید خندان", "پاسداران" ], "province" => "تهران" ], "id" => 429874, "location" => [ "bb" => [ "ne" => "35.756689799999997,51.464761500000002", "sw" => "35.7491463,51.423702800000001" ], "center" => "35.749155599171999,51.428327751596903" ], "name" => "همت", "type" => "expressway" ], [ "address" => "المهدی", "components" => [ "city" => "تهران", "country" => "ایران", "districts" => [ "منطقه 5" ], "localities" => [ "المهدی" ], "province" => "تهران" ], "id" => 338756, "location" => [ "bb" => [ "ne" => "35.770861600000003,51.323841700000003", "sw" => "35.770540400000002,51.323066400000002" ], "center" => "35.770585227006897,51.323426168064202" ], "name" => "همت", "type" => "street" ] ]
#getReverseGeocoding(lat, lon, index)
It gives you an address based on a provided LatLng pair.
input
lat: number
, Latitude [REQUIRED]
long: number
, Longitude [REQUIRED]
index: Pick from CedarMaps::Constants['INDEXES'] for example CedarMaps::Constants['INDEXES']['STREET_INDEX']
Sample Response:
[ "address" => "بن بست سروش - زرتشت", "city" => "تهران", "components" => [ [ "long_name" => "بن بست سروش", "short_name" => "بن بست سروش", "type" => "residential" ], [ "long_name" => "زرتشت", "short_name" => "زرتشت", "type" => "primary" ], [ "long_name" => "بهجت آباد", "short_name" => "بهجت آباد", "type" => "locality" ], [ "long_name" => "منطقه 6", "short_name" => "منطقه 6", "type" => "district" ], [ "long_name" => "تهران", "short_name" => "تهران", "type" => "city" ] ], "locality" => "بهجت آباد", "district" => "منطقه 6", "traffic_zone" => [ "in_central" => true, "in_evenodd" => true, "name" => "محدوده طرح ترافیک" ] ]
#getDistance(points)
This method calculates the distance between points in meters. It can be called with up to 100 different points in a single request.
input
points: array
, Array of point Arrays ['lat' => <SOME_LATITUDE>,'lon' => SOME_LONGITUDE]
[REQUIRED]
Response Elements:
Sample Response:
[ "routes" => [ [ "bbox" => [ 51.368587, 35.74982, 51.41652, 35.762383 ], "distance" => 7516.338, "time" => 500912 ] ] ]
#getDirection(points, options)
This method calculates the optimal driving routes between two or more points.
input
points: Array
, Array: ['lat' => <SOME_LATITUDE>,'lon' => SOME_LONGITUDE]
[REQUIRED]
options: Array of options like ['instructions' => true]
Currently the only option is instructions
that is boolean
Example
[ 'instructions' => true ]
Response Elements:
Sample Response:
[ "routes" => [ [ "bbox" => [ 51.36444, 35.76323, 51.365623, 35.76432 ], "distance" => 244.929, "geometry" => [ "coordinates" => [ [ 51.365623, 35.76432 ], [ 51.365257, 35.764303 ], [ 51.364963, 35.764235 ], [ 51.364673, 35.764141 ], [ 51.364442, 35.764025 ], [ 51.364884, 35.763525 ], [ 51.364888, 35.763482 ], [ 51.365049, 35.763228 ], [ 51.36532, 35.76332 ] ], "type" => "LineString" ], "time" => 22602 ] ] ]
Turn-by-turn Navigation
In order to get turn-by-turn instructions you should include {instructions:true} as option.
Response elements when instructions option provided:
Sample Response when instructions option provided:
[ "routes" => [ [ "bbox" => [ 51.43418, 35.738007, 51.43793, 35.738693 ], "distance" => 570.586, "geometry" => [ "coordinates" => [ [ 51.437536, 35.738675 ], [ 51.437901, 35.738695 ], [ 51.43793, 35.738142 ], [ 51.435609, 35.738006 ], [ 51.435563, 35.738689 ], [ 51.434183, 35.738635 ], [ 51.434204, 35.738048 ] ], "type" => "LineString" ], "instructions" => [ [ "distance" => 32.977, "heading" => 86.21, "interval" => [ 0, 1 ], "sign" => 0, "street_name" => "دهم", "text" => "تا دهم ادامه دهید", "time" => 4748 ], [ "distance" => 61.447, "interval" => [ 1, 2 ], "sign" => 2, "street_name" => "سیبویه", "text" => " به راست بپیچید به سیبویه", "time" => 4915 ], [ "distance" => 210.041, "interval" => [ 2, 3 ], "sign" => 2, "street_name" => "هشتم", "text" => " به راست بپیچید به هشتم", "time" => 30245 ], [ "distance" => 76.09, "interval" => [ 3, 4 ], "sign" => 2, "street_name" => "عربعلی", "text" => " به راست بپیچید به عربعلی", "time" => 6085 ], [ "distance" => 124.698, "interval" => [ 4, 5 ], "sign" => -2, "street_name" => "نهم", "text" => " به چپ بپیچید به نهم", "time" => 17956 ], [ "distance" => 65.334, "interval" => [ 5, 6 ], "sign" => -2, "street_name" => "رهبر", "text" => " به چپ بپیچید به رهبر", "time" => 9408 ], [ "distance" => 0.0, "interval" => [ 6, 6 ], "last_heading" => 178.3159250006148, "sign" => 4, "street_name" => "", "text" => "پایان!", "time" => 0 ] ], "time" => 73357 ] ] ]
#getTileJson(mapId)
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.
input
mapId: string
, Cedar map ID [REQUIRED]
Sample Response:
[ "bounds" => [ 44, 24.6, 63.4, 39.8 ], "description" => "CedarMaps covering the whole country of Iran", "maxzoom" => 17, "minzoom" => 6, "name" => "CedarMaps Streets", "tilejson" => "2.3.0", "tiles" => [ "https =>//api.cedarmaps.com/v1/tiles/cedarmaps.streets/[z]/[x]/[y].png?access_token=<your access token>" ], "version" => "2.0" ]
Constants
[ 'INDEXES' => [ 'STREET_INDEX' => 'cedarmaps.streets', ], 'FORWARD_GEOCODE' => [ 'TYPE' => [ 'LOCALITY' => 'locality', 'ROUNDABOUT' => 'roundabout', 'STREET' => 'street', 'FREEWAY' => 'freeway', 'EXPRESSWAY' => 'expressway', 'BOULEVARD' => 'boulevard', ] ], ];
License
MIT © Cedar Maps