/**
* BeNomad BeMap JavaScript API - RoadFeature
*/
/**
* @classdesc
* Base class for road features.
* @public
* @constructor
* @abstract
* @param {object} options see below the available values.
* @param {String} options.DirectionFlaw The direction of traffic flow per transportation modes. For each mode, possible values are: - CLOSE: closed in both directions.
- OPEN_POS: open in positive direction.
- OPEN_NEG: open in negative direction.
- OPEN: open in both directions.
* @param {Boolean} options.Urban Urban / not urban flag.
* @param {Boolean} options.Tunnel A flag that indicates if road is part of a tunnel or not.
* @param {Boolean} options.Bridge A flag that indicates if road is part of a bridge or not.
* @param {Boolean} options.MaxSpeedVerified Max speed verified flag(true: verified, false: calculated).
* @param {Boolean} options.CarPool : A flag that indicates if road is reserved to carpooling.
* @param {Boolean} options.MainCategory A flag that enables discrimination within road 's of a same FCC type (depends of map provider).
* @param {Int} options.DualCarriageway A flag that indicates if road is part of a dual carriageway(e.g.with physical separation between opposite traffic sides) .0: no or unknown, 1: yes.
* @param {Int} options.NoThroughTr No through traffic restriction(0: no restriction, 1: restriction, 2: restriction for trucks only).
* @param {Int} options.Toll Toll information: 0 no toll, 1 toll in positive direction, 2 toll in negative direction, 3 toll in both directions.
* @param {Int} options.Tax This fields indicates if road is submitted to a government tax(like German MAUT, etc) .0 means no tax, 1 - 3 defines the tax category(country dependent).
* @param {String} options.MatchDir The matching direction: - CLOSE: Undefined matched direction and closed in both directions.
- OPEN_POS: Matched in positive direction.
- OPEN_NEG: Matched in negative direction.
- OPEN: Undefined matched direction and open in both directions.
* @param {Int} options.NbLanePos The number of lanes in positive direction(0 if traffic closed in positive direction or if lane information is not available).
* @param {Int} options.NbLaneNeg The number of lanes in negative direction(0 if traffic closed in negative direction or if lane information is not available).
* @param {String} options.PedestrianInfrastructureType The pedestrian infrastructure type: -UNDEFINED = 0 Undefined.
- ZONE = 1: Pedestrian Zone.
- HIKING = 2 - Hiking.
- UNPAVED_ROAD = 3 - Unpaved Road.
- ROUGH_ROAD = 4 - Rough Road.
- POOR_CONDITION_ROAD = 5 - Poor Condition Road.
- STAIRS = 6 - Stairs.
- TUNNEL = 7 - Tunnel.
- ELEVATOR = 8 - Elevator.
- ESCALATOR = 9 - Escalator.
- FOOTBRIDGE = 10 - Footbridge.
* @param {Int} options.MaxSpeed The speed limit in kph(0 if not available).
* @param {Array.<bemap.CondMaxSpeed>} options.CondMaxSpeed A conditional speed limit.
* @param {Int} options.AverageSpeed The average speed in kph.
* @param {Int} options.Lenght The length in meters.
*/
bemap.RoadFeature = function(options) {
var opts = options || {};
/**
* @type {String}
* @protected
*/
this.DirectionFlow = opts.DirectionFlow ? opts.DirectionFlow : null;
/**
* @type {Boolean}
* @protected
*/
this.Urban = opts.Urban !== undefined ? opts.Urban : null;
/**
* @type {Boolean}
* @protected
*/
this.Tunnel = opts.Tunnel !== undefined ? opts.Tunnel : null;
/**
* @type {Boolean}
* @protected
*/
this.Bridge = opts.Bridge !== undefined ? opts.Bridge : null;
/**
* @type {Boolean}
* @protected
*/
this.MaxSpeedVerified = opts.MaxSpeedVerified !== undefined ? opts.MaxSpeedVerified : null;
/**
* @type {Boolean}
* @protected
*/
this.CarPool = opts.CarPool !== undefined ? opts.CarPool : null;
/**
* @type {Boolean}
* @protected
*/
this.MainCategory = opts.MainCategory !== undefined ? opts.MainCategory : null;
/**
* @type {Int}
* @protected
*/
this.DualCarriageway = opts.hasOwnProperty("DualCarriageway") ? opts.DualCarriageway : null;
/**
* @type {Int}
* @protected
*/
this.NoThroughTr = opts.hasOwnProperty("NoThroughTr") ? opts.NoThroughTr : null;
/**
* @type {Int}
* @protected
*/
this.Toll = opts.hasOwnProperty("Toll") ? opts.Toll : null;
/**
* @type {Int}
* @protected
*/
this.Tax = opts.hasOwnProperty("Tax") ? opts.Tax : null;
/**
* @type {String}
* @protected
*/
this.MatchDir = opts.MatchDir ? opts.MatchDir : null;
/**
* @type {Int}
* @protected
*/
this.NbLanePos = opts.hasOwnProperty("NbLanePos") ? opts.NbLanePos : null;
/**
* @type {Int}
* @protected
*/
this.NbLaneNeg = opts.hasOwnProperty("NbLaneNeg") ? opts.NbLaneNeg : null;
/**
* @type {String}
* @protected
*/
this.PedestrianInfrastructureType = opts.PedestrianInfrastructureType ? opts.PedestrianInfrastructureType : null;
/**
* @type {Int}
* @protected
*/
this.MaxSpeed = opts.hasOwnProperty("MaxSpeed") ? opts.MaxSpeed : null;
/**
* @type {Int}
* @protected
*/
this.AverageSpeed = opts.hasOwnProperty("AverageSpeed") ? opts.AverageSpeed : null;
/**
* @type {Array.<bemap.CondMaxSpeed>}
* @protected
*/
this.CondMaxSpeed = opts.CondMaxSpeed ? opts.CondMaxSpeed : [];
/**
* @type {Int}
* @protected
*/
this.Length = opts.hasOwnProperty("Length") ? opts.Length : null;
};
/**
* Get the direction of traffic flow per transportation modes.
* @return {String}
*/
bemap.RoadFeature.prototype.getDirectionFlow = function() {
return this.DirectionFlow;
};
/**
* Get the urban / not urban flag.
* @return {Boolean}
*/
bemap.RoadFeature.prototype.getUrban = function() {
return this.Urban;
};
/**
* Get the flag that indicates if road is part of a tunnel or not.
* @return {Boolean}
*/
bemap.RoadFeature.prototype.getTunnel = function() {
return this.Tunnel;
};
/**
* Get the flag that indicates if road is part of a bridge or not.
* @return {Boolean}
*/
bemap.RoadFeature.prototype.getBridge = function() {
return this.Bridge;
};
/**
* Get max speed verified flag.
* @return {Boolean}
*/
bemap.RoadFeature.prototype.getMaxSpeedVerified = function() {
return this.MaxSpeedVerified;
};
/**
* Get the flag that indicates if road is reserved to carpooling.
* @return {Boolean}
*/
bemap.RoadFeature.prototype.getCarPool = function() {
return this.CarPool;
};
/**
* Get the flag that enables discrimination within road 's of a same FCC type.
* @return {Boolean}
*/
bemap.RoadFeature.prototype.getMainCategory = function() {
return this.MainCategory;
};
/**
* Get the flag that indicates if road is part of a dual carriageway(e.g.with physical separation between opposite traffic sides).
* @return {Int}
*/
bemap.RoadFeature.prototype.getDualCarriageway = function() {
return this.DualCarriageway;
};
/**
* Get
* @return {Int}
*/
bemap.RoadFeature.prototype.getNoThroughTr = function() {
return this.NoThroughTr;
};
/**
* Get toll information.
* @return {Int}
*/
bemap.RoadFeature.prototype.getToll = function() {
return this.Toll;
};
/**
* Get the fields that indicates if road is submitted to a government tax(like German MAUT, etc).
* @return {Int}
*/
bemap.RoadFeature.prototype.getTax = function() {
return this.Tax;
};
/**
* Get the matching direction.
* @return {String}
*/
bemap.RoadFeature.prototype.getMatchDir = function() {
return this.MatchDir;
};
/**
* Get The number of lanes in positive direction.
* @return {Int}
*/
bemap.RoadFeature.prototype.getNbLanePos = function() {
return this.NbLanePos;
};
/**
* Get The number of lanes in negative direction.
* @return {Int}
*/
bemap.RoadFeature.prototype.getNbLaneNeg = function() {
return this.NbLaneNeg;
};
/**
* Get the pedestrian infrastructure type
* @return {String}
*/
bemap.RoadFeature.prototype.getPedestrianInfrastructureType = function() {
return this.PedestrianInfrastructureType;
};
/**
* Get the speed limit in kph
* @return {Int}
*/
bemap.RoadFeature.prototype.getMaxSpeed = function() {
return this.MaxSpeed;
};
/**
* Get the average speed in kph.
* @return {}
*/
bemap.RoadFeature.prototype.getAverageSpeed = function() {
return this.AverageSpeed;
};
/**
* Get the conditional max speed.
* @return {Array.<bemap.CondMaxSpeed>}
*/
bemap.RoadFeature.prototype.getCondMaxSpeed = function() {
return this.CondMaxSpeed;
};
/**
* Get the length in meters.
* @return {Int}
*/
bemap.RoadFeature.prototype.getLength = function() {
return this.Length;
};