Source: bemap-services/bemap-evserouting.js

/**
 * BeNomad BeMap JavaScript API - Routing, EVSE Routing.
 */


/**
* @classdesc
* Base class for EVSE Routing calculation.
* @public
* @constructor
* @abstract
* @param {bemap.Context} context BeMap-JS-API Context. Mandatory.
* @param {object} options see below the available values.
*/
bemap.EvseRouting = function(context, options) {
  bemap.Routing.call(this, context, options);

  /**
   * ID of geometry.
   * @type {String}
   * @protected
   */
  this.geometryId = 'evseRouting';
};
bemap.inherits(bemap.EvseRouting, bemap.Routing);

/**
 * Execute the EVSE Routing calculation.
 * @public
 * @param {object} options See below the available values.
 * @param {object} options.geoserver Geoserver name will be used for this computation.
 * @return {bemap.Isochrone} this
 */
bemap.EvseRouting.prototype.compute = function(options) {
  this.reset();

  if (this.destinations && this.destinations.length < 2) {
    console.error("Minimum of 2 destionations are required!");
    return;
  }

  var opts = options || {};
  var i = 0;
  var first = true;
  var url = this.ctx.getBaseUrl() + 'bnd';
  var data = 'version=1.0.0&action=routing&mode=MODE_VIAS&format=json&transportType=CAR&speedType=ETA';

  data += '&options=OPTIMIZED_ROUTE_FOR_CHARGING_STATION,EVENT,EVT_DUPLICATE_FILTER,EVT_CHARGING_STATION,EVT_POLYLINE';
  data += '&cf=5,80';
  data += '&cfCnnTypeIdFilters=8,9,10,11,12';
  //data += '&evf=0.75,0.012,0.693,22,1468,100,300,2.1,-2,20,22,31';

  if (this.ctx.isAuthInPost()) {
    data += '&' + this.ctx.getAuthUrlParams();
  } else {
    url += '?' + this.ctx.getAuthUrlParams();
  }

  data += this.buildRequest(opts);

  return this.execute(url, data, opts);
};