/**
* @class
* Create osrmAPI service instance
*/
class OSRMAPI{
/**
* @param {any} $http
* @param {any} $q
* https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md
*/
constructor($http, $q, options) {
this.url = options.url;
this.$http = $http;
this.$q = $q;
this.cache = true;
if (options.cache === false) {
this.cache = false;
}
}
/**
* internal get request to the remote API
* @param {string} service
* @param {string} version
* @param {string} profile
* @param {string|Object} coordinates
* the string format is
* {longitude},{latitude};{longitude},{latitude}[;{longitude},{latitude} ...]
* @param {Object} options
*/
get(service, version, profile, coordinates, options) {
var _coordinates = coordinates;
if (Array.isArray(coordinates)) {
_coordinates = coordinates.join(';');
}
var url = `${this.url}/${service}/${version}/${profile}/${_coordinates}`;
return this.$http.get(url, {params: options, cache: this.cache});
}
/**
* neareset service
* @param {string} profile
* @param {string|Object} coordinates
* @param {number} number integer >= 1 (default 1) Number of nearest segments that should be returned.
*/
nearest(profile, coordinates, number) {
var options;
if (number) {
options = {number: number};
}
return this.get('nearest', 'v1', profile, coordinates, options);
}
/**
* route service
* @param {string} profile
* @param {string|Object} coordinates
* @param {Object} options
* https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#service-route
*/
route(profile, coordinates, options) {
return this.get('route', 'v1', profile, coordinates, options);
}
/**
* table service
* @param {string} profile
* @param {string|Object} coordinates
* @param {Object} options
* https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#service-table
*/
table(profile, coordinates, options) {
return this.get('table', 'v1', profile, coordinates, options);
}
/**
* match service
* @param {string} profile
* @param {string|Object} coordinates
* @param {Object} options
* https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#service-match
*/
match(profile, coordinates, options) {
return this.get('match', 'v1', profile, coordinates, options);
}
/**
* trip service
* @param {string} profile
* @param {string|Object} coordinates
* @param {Object} options
* https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#service-trip
*/
trip(profile, coordinates, options) {
return this.get('trip', 'v1', profile, coordinates, options);
}
}
OSRMAPI.$inject = ['$http', '$q'];
export default OSRMAPI;