geoportal-access-lib
Version:
French Geoportal resources access library
221 lines (192 loc) • 5.13 kB
JavaScript
import Logger from "../../../../Utils/LoggerByDefault";
/**
* @classdesc
* Classe de gestion des param. des requêtes du service altimetrique.
*
* @constructor
* @alias Gp.Services.Alti.Request.AltiRequest
* @param {Object} options - options
* @param {Object} options.positions - tableau de coordonnées lon/lat
* @param {String} options.delimiter - "|"
* @param {Boolean} options.indent - false|true
* @param {String} options.crs - "CRS:84"
* @param {String} options.format - "JSON|XML"
*
* @private
*/
function AltiRequest (options) {
if (!(this instanceof AltiRequest)) {
throw new TypeError("AltiRequest constructor cannot be called as a function.");
}
this.logger = Logger.getLogger();
this.logger.trace("[Constructeur AltiRequest ()]");
/**
* Options en paramêtres du constructeur.
*/
this.options = options || {};
/**
* Liste des coordonnées.
* @example
* var c = [{lon : "", lat : ""}, {lon : "", lat : ""}];
*/
this.positions = this.options.positions || [];
/**
* Caractère de séparation.
* Par defaut, "|".
*/
this.delimiter = this.options.delimiter || "|";
/**
* Indentation.
* true|false
*/
this.indent = this.options.indent || false;
/**
* Projection.
* Par defaut, CRS:84.
*/
this.crs = this.options.crs || "CRS:84";
/**
* format de sortie.
* Par defaut, "json".
*/
this.format = this.options.format || "json";
/*
* Ressource utilisée
*/
this.resource = this.options.resource;
/**
* Réponse détaillée (source & accuracy)
* true|false
*/
this.measures = this.options.measures || false;
}
/**
* CLASSNAME
*/
AltiRequest.CLASSNAME = "AltiRequest";
AltiRequest.prototype = {
/**
* @lends module:AltiRequest#
*/
/**
* Constructeur (alias)
*/
constructor : AltiRequest,
/**
* Ajout d"une liste de coordonnées.
*
* @param {Object[]} lstPosition - liste de positions
* @example
* obj.setPositions ([{lon : "0.15", lat : "0.15"}, {lon : "1.15", lat : "1.15"}]);
*/
setPositions : function (lstPosition) {
var positions = [];
for (var i = 0; i < lstPosition.length; i++) {
var o = lstPosition[i];
if (o.lon && o.lat) {
positions.push(o);
}
}
this.positions = positions;
},
/**
* Liste des coordonnées.
*
* @param {Int} pos - position
* @returns {positions}
* @example
* obj.getPositions (); // [{lon : "", lat : ""}, {lon : "", lat : ""}]
* obj.getPositions (0); // [{lon : "", lat : ""}]
*/
getPositions : function (pos) {
// FIXME test if not a number !?
if (!pos) {
return this.positions;
}
var index = this.positions.length - 1;
if (pos > index || pos < index) {
this.logger.warn("index out of range !");
return this.positions;
}
return this.positions[pos];
},
/**
* Ajout d"une liste de coordonnées.
*
* @param {Object[]} lstPosition - liste de positions
* @example
* obj.addPositions ([{lon : "0.15", lat : "0.15"}, {lon : "1.15", lat : "1.15"}]);
*/
addPositions : function (lstPosition) {
for (var i = 0; i < lstPosition.length; i++) {
var o = lstPosition[i];
if (o.lon && o.lat) {
this.positions.push(lstPosition[i]);
}
}
},
/**
* Retourne la liste des longitudes avec un caractère de séparation.
*
* @returns {String} - une liste de longitudes
* @example
* // out : 0.2367|2.1570|43.789|...
*/
getLon : function () {
var lstLon = [];
for (var i = 0; i < this.positions.length; i++) {
lstLon.push(this.positions[i].lon);
}
this.logger.trace(lstLon);
return lstLon.join(this.delimiter);
},
/**
* Retourne la liste des lattitudes avec un caractère de séparation.
*
* @returns {String} - une liste de lattitudes
* @example
* // out : 0.2367|2.1570|43.789|...
*/
getLat : function () {
var lstLat = [];
for (var i = 0; i < this.positions.length; i++) {
lstLat.push(this.positions[i].lat);
}
this.logger.trace(lstLat);
return lstLat.join(this.delimiter);
}
};
/**
* Tableau de clefs/valeurs pour param.
*
* @returns {Object[]}
*/
AltiRequest.prototype.getData = function () {
var map = [];
map.push({
k : "lon",
v : this.getLon()
});
map.push({
k : "lat",
v : this.getLat()
});
map.push({
k : "delimiter",
v : this.delimiter
});
map.push({
k : "indent",
v : this.indent
});
map.push({
k : "crs",
v : this.crs
});
map.push({
k : "format",
v : this.format
});
return map;
};
export default AltiRequest;