Change log
6.0.0
A - Nouveautés concernant les fonctionnalités de visualisation
Masquer une couche au niveau de l'arbre des couches
Un nouveau paramètre "hide" permet de masquer une couche au niveau de l'arbre des couches
var couche = {
title: "Ma couche",
definition: [...],
options: {
alwaysVisible: false,
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null,
hide: false
}
};
var layerCouche = new Descartes.Layer.GenericVector(couche.title, couche.definition, couche.options);
Spécifier des alias sur les attributs des couches
Une nouvelle propriété "attributesAlias" de l'option "attributes" a été ajouté au niveau de la couche pour permettre de spécifier des alais sur les atttributs
Ces alias seront automatiquement utilisés lors de l'affichage des résultats lors des interrogations, des infobulles et des requêtes attributaires.
var couche = {
title: "Ma couche",
definition: [...],
options: {
alwaysVisible: false,
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null,
hide: false,
attributes: {
attributesAlias: [
{fieldName: 'name', label: 'Alias Nom'}
],
}
}
};
var layerCouche = new Descartes.Layer.GenericVector(couche.title, couche.definition, couche.options);
Utiliser des ressources diverses (ex: WKT, GPX...) au travers d'une couche de type "generic"
Les couches de type "generic" disposent de nouvelles propriétés.
Les propriétés "loaderFunction" et "displayFeatures" permettent de renseigner une fonction qui sera appelée au chargement de la couche. De cette façon, il est possible d'y ajouter différents objets de différents types (WKT, GPX...)
Exemple chargement de WKT en utilisant le paramètre "loaderFunction":
var coucheGenericVector = {
title: "Ma couche GenericVector",
type: Descartes.Layer.TYPE_GenericVector,
definition: [
{
loaderFunction: function persoLoaderFct(extent, resolution, projection) {
var wkt1 = "POINT(1.317688888888891 45.55597046260131)";
var wkt2 = "POINT(0.3737481481481506 46.56841490704575)";
var wkt3 = "POLYGON((1.8546370370370404 47.26352601815686, 1.4919703703703728 46.296414907045744, 2.2475259259259293 46.17552601815686, 1.8546370370370404 47.26352601815686))";
var wkt4 = "LINESTRING(0.10779680049086071 45.24686233328316,0.8356841244345237 44.955707403705695,1.625961790430499 45.30925267533547,2.4162394564264753 45.16367521054674)";
var format = new ol.format.WKT();
this.addFeatures([format.readFeature(wkt1),format.readFeature(wkt2),format.readFeature(wkt3),format.readFeature(wkt4)]);
}
}
],
options: {
alwaysVisible: false,
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null,
hide: false
}
};
var layerCoucheGenericVector = new Descartes.Layer.GenericVector(coucheGenericVector.title, coucheGenericVector.definition, coucheGenericVector.options);
Exemple chargement de marker Openlayers en utilisant le paramètre "displayFeatures":
function getMyFeatures(){
var markerPoint = new ol.Feature({
geometry: new ol.geom.Point([1.317688888888891, 45.55597046260131]),
});
var markerPoint2 = new ol.Feature({
geometry: new ol.geom.Point([0.3737481481481506, 46.56841490704575]),
});
return [markerPoint,markerPoint2];
}
var coucheGenericVector = {
title: "Ma couche GenericVector",
type: Descartes.Layer.TYPE_GenericVector,
definition: [
{
displayFeatures: getMyFeatures()
}
],
options: {
alwaysVisible: false,
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null,
hide: false,
symbolizersFunction: function(feature) {
var style = new ol.style.Style({
image: new ol.style.Circle({
radius: 1,
fill: new ol.style.Fill({
color: 'black'
})
}),
text: new ol.style.Text({
text: '\uf041', // fa-map-marker
font: 'normal 18px FontAwesome',
fill: new ol.style.Fill({color: 'black'})
})
});
return style;
}
}
};
var layerCoucheGenericVector = new Descartes.Layer.GenericVector(coucheGenericVector.title, coucheGenericVector.definition, coucheGenericVector.options);
Utiliser des ressources OSM (fond de plan OpenStreetMap) au travers d'une couche "préconfigurée"
Un nouveau type de couche permet d'afficher un fond de plan OpenStreetMap (OSM). Il s'agit d'une couche "préconfigurée" pour laquelle il suffit de spécifier un titre.
var coucheOSM = new Descartes.Layer.OSM("Fond de plan OpenStreetMap");
Utiliser des ressources tuilées au format XYZ (beta)
Un nouveau type de couche permet d'afficher des tuiles au format XYZ
var coucheXYZ = {
title: "Ma couche XYZ",
type: Descartes.Layer.TYPE_XYZ,
definition: [
{
"serverUrl": "xxxx/{z}/{x}/{y}.jpeg"
}
],
options: {
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100
}
};
var layerCoucheXYZ = new Descartes.Layer.XYZ(coucheXYZ.title, coucheXYZ.definition, coucheXYZ.options);
Affichage du titre des couches au niveau de la légende
Il est possible d'afficher en plus de titre des couches :
carte.addInfo(
{
type : Descartes.Map.LEGEND_INFO,
div : 'Legend',
options : {
displayLayerTitle: true
}
}
);
Le résultat est alors le suivant dans le navigateur :
Affichage avancé de l'assistant de requetes attributaires
Il est possible d'afficher une vue avancée de cet assistant permettant de choisir l'emprise de recherche et d'afficher les requêtes attributaires sous la forme d'une liste:
var gestionnaireRequetes = carte.addRequestManager(
'Requetes',
{
withChooseExtent: true,
resultUiParams: {
withCsvExport: true,
withReturn: true
}
}
);
Le gazetteer pour l'emprise d'une entité administrative peut être paramétré pour définir l'entité de départ:
var gestionnaireRequetes = carte.addRequestManager(
'Requetes',
{
withChooseExtent: true,
chooseExtentGazetteerConfig: {
startLevel: 1,
initValue: "93"
},
resultUiParams: {
withCsvExport: true,
withReturn: true
}
}
);
Ajout de 6 nouveaux outils
Fonctionnalités | Aperçu |
sélection d’objets par dessin d’une ligne avec buffer sur la carte | |
sélection d’objets par dessin d’un polygone avec buffer sur la carte | |
affichage d'un arbre des couches simplifé | |
affichage de la position courante | |
affichage de la trace des positions courantes | |
génération d'un lien de partage de contexte de carte |
- sélection par construction d’une ligne avec buffer
Descartes.Map.LINE_BUFFER_HALO_SELECTION est le code DESCARTES pour cet outil.
Il suffit d'ajouter dans notre code client la ligne suivante :
carte.addToolInNamedToolBar(
{
type : Descartes.Map.LINE_BUFFER_HALO_SELECTION
}
);
Le résultat est alors le suivant dans le navigateur :
- sélection par construction d’un polygone avec buffer
Descartes.Map.POLYGON_BUFFER_HALO_SELECTION est le code DESCARTES pour cet outil.
Il suffit d'ajouter dans notre code client la ligne suivante :
carte.addToolInNamedToolBar(
{
type : Descartes.Map.POLYGON_BUFFER_HALO_SELECTION
}
);
Le résultat est alors le suivant dans le navigateur :
- affichage de la position courante
Descartes.Map.GEOLOCATION_SIMPLE est le code DESCARTES pour cet outil.
Il suffit d'ajouter dans notre code client la ligne suivante :
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_SIMPLE
}
);
Le résultat est alors le suivant dans le navigateur :
Il est possible de spécifier la projection d'affichage de la position (par défaut, la projection de la carte est utilisée)
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_SIMPLE,
args: {
displayProjections: ["EPSG:4326"]
}
}
);
Il est possible d'afficher une liste de choix de projection:
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_SIMPLE,
args: {
displayProjections: ["EPSG:3857","EPSG:4326","EPSG:2154"],
selectedDisplayProjectionIndex:2,
displayInfos: true
}
}
);
Il est possible de masquer la projection ainsi que certaines informations de géolocalisation de la boite de dialogue:
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_SIMPLE,
args: {
projection: false,
infos: {
accuracy: false,
altitude: false,
altitudeAccuracy: false,
heading: false,
speed: false
}
}
}
);
Il est aussi possible de désactiver l'affichage de la boîte de dialogue contenant les informations de géolocalisation:
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_SIMPLE,
args: {
displayInfos: false
}
}
);
- affichage de la trace des positions courantes
Descartes.Map.GEOLOCATION_TRACKING est le code DESCARTES pour cet outil.
Il suffit d'ajouter dans notre code client la ligne suivante :
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_TRACKING
}
);
Le résultat est alors le suivant dans le navigateur :
Il est possible d'activer l'affichage de la boîte de dialogue contenant les informations de géolocalisation:
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_TRACKING,
args: {
displayInfos: true
}
}
);
Il est possible de spécifier la projection d'affichage de la position (par défaut, la projection de la carte est utilisée)
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_TRACKING,
args: {
displayProjections: ["EPSG:4326"]
}
}
);
Il est possible d'afficher une liste de choix de projection:
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_TRACKING,
args: {
displayProjections: ["EPSG:3857","EPSG:4326","EPSG:2154"],
selectedDisplayProjectionIndex:2,
displayInfos: true
}
}
);
Il est possible de masquer la projection ainsi que certaines informations de géolocalisation de la boite de dialogue:
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.GEOLOCATION_TRACKING,
args: {
projection: false,
infos: {
accuracy: false,
altitude: false,
altitudeAccuracy: false,
heading: false,
speed: false
}
}
}
);
- affichage d'un arbre des couches simplifé
Descartes.Map.DISPLAY_LAYERSTREE_SIMPLE est le code DESCARTES pour cet outil.
Il suffit d'ajouter dans notre code client la ligne suivante :
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.DISPLAY_LAYERSTREE_SIMPLE
}
);
Le résultat est alors le suivant dans le navigateur :
- Ajouter un outil de génération de lien de partage de contextes de visualisation
Descartes.Map.SHARE_LINK_MAP est le code DESCARTES pour cet outil.
Il suffit d'ajouter dans notre code client la ligne suivante :
carte.addToolInNamedToolBar(toolsBar,
{
type : Descartes.Map.SHARE_LINK_MAP
}
);
Le résultat est alors le suivant dans le navigateur :
Affichage d'une vue avancée des résultats des recherches et export des buffers
Il est possible pour les outils d'interrogation:
-
d'exporter les buffers de construction des interrogations
-
d'afficher une vue avancée des résultats de recherche permettant l'export et filtrages des résultats, l'affichage de la liste des couches à la place de l'utilisation d'onglets
-
plusieurs actions sont possibles sur la sélection affichée sur la carte: affiher/masquer/faire clignoter le couche de résultat, créer une couche temporaire pour l'affichage dans l'arbre des couches
carte.addToolInToolBar({type : Descartes.Map.LINE_BUFFER_HALO_SELECTION,
args : {
infoBuffer: true,
exportBuffer: true,
persist:true,
waitingMsg: false,
resultUiParams:{
withReturn: true,
withUIExports: true,
withAvancedView: true,
withResultLayerExport: true,
withFilterColumns: true,
withListResultLayer: true
}
}
);
Le résultat est alors le suivant dans le navigateur :
avec les actions suivantes:
Affichage des infobulles par click sur la carte
Il est maintenant possible d'afficher les infobulles après un click sur la carte à la place du survol des objets:
carte.addToolTip(
'ToolTip',
[
{
layer: coucheParkings,
fields: ['Nom']
},
{
layer: coucheStations,
fields: ['Nom']
}
],
{displayOnClick: true}
);
Affichage des infobulles par click sur les objets d'une couche de type vector (WFS/KML/GeoJSON/GenericVector)
Il est maintenant possible d'afficher les infobulles (contenant certains attributs) après un click sur les objets d'une couche de type vector (WFS/KML/GeoJSON/GenericVector):
var selectToolTipLayers = [{layer: coucheGeneric, fields: ['Nom']}];
carte.addSelectToolTip(selectToolTipLayers);
Affichage de la légende à la demande par click sur le nom de la couche dans l'arbre des couches
Pour cela, il faut activer option « displayOnClickLayerName » :
var contenuCarte = new Descartes.MapContent({
editable:true,
fctDisplayLegend: true,
displayMoreInfos: true
});
carte.addContentManager(
'layersTree',
null,
{
uiOptions: {
moreInfosUiParams: {
fctDisplayLegend:true
displayOnClickLayerName: true
}
}
});
Le résultat est alors le suivant dans le navigateur :
Affichage à la demande l’opacité, l'icône de présence de métadonnées, l'icône d'activation des interrogations
Il est maintenant possible d’afficher le slider d'opacité, l'icône de présence de métadonnées, l'icône d'activation des interrogations à la demande dans l'arbre des couches.
Pour cela, il faut activer la nouvelle option « displayMoreInfos » et spécifier la fonctionnalité à ajouter dans le panneau d’ouverture à la demande via le nouveau paramètre « moreInfosUiParams » :
var contenuCarte = new Descartes.MapContent({
editable:true,
displayMoreInfos: true
});
carte.addContentManager(
'layersTree',
null,
{
uiOptions: {
moreInfosUiParams: {
fctOpacity:true,
fctQueryable: true,
fctMetadataLink: true,
fctDisplayLegend:true,
displayOnClickLayerName: true
}
}
});
Le résultat est alors le suivant dans le navigateur :
Possibilité de désactiver toutes les fonctionnalités dans l'arbre des couches
Il est possible de choisir finement les fonctionnalités à utiliser mais aussi de toutes les désactiver.
var contenuCarte = new Descartes.MapContent({
editable:true,
fctQueryable:false,
fctVisibility:false,
fctMetadataLink: false,
fctOpacity:false,
displayIconLoading:false
});
carte.addContentManager('layersTree'});
Le résultat est alors le suivant dans le navigateur :
Recentrage selon des coordonnées - Nouvelle option pour désactiver la vérification que les coordonnées saisies se trouvent bien dans l'emprise max de la carte
Lorsque l'emprise max de la carte est une emprise mondiale dans une projection de type mondiale (ex: EPSG:3857), la transformation dans une projection "locale" (ex: EPSG:2154 - RGF93/L93) provoque des incohérences de conversion au niveau des coordonnées de l'emprise.
Une nouvelle option est disponible pour désactiver la vérification que les coordonnées saisies se trouvent bien dans l'emprise max de la carte.
carte.addAction(
{
type : Descartes.Map.COORDS_INPUT_ACTION,
div : 'CoordinatesInput',
options : {
checkCoordinatesInMaxExtent: false
}
}
});
B - Nouveautés concernant les fonctionnalités de gestion des objets géographiques
Nouveau type de couche : la couche de type "generic"
Déclaration d'une couche d'édition "generic" vide:
var coucheGenericVector = {
title: "Ma couche",
type: Descartes.Layer.EditionLayer.TYPE_GenericVector,
definition: [{
loaderFunction: function persoLoaderFct(extent, resolution, projection) {
if (myFeatures === null) {
myFeatures = [];
}
this.addFeatures(myFeatures);
}
}],
options: {
alwaysVisible: false,
attributes: {
attributesEditable: [
{fieldName: 'Nom', label: 'Nom'}
]
},
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null
}
};
var layerCoucheGenericVector = new Descartes.Layer.EditionLayer.GenericVector(coucheGenericVector.title, coucheGenericVector.definition, coucheGenericVector.options);
Déclaration d'une couche d'édition "generic" initialisée avec les objets:
function initMyFeatures() {
var markerPoint = new ol.Feature({
geometry: new ol.geom.Point([1.317688888888891, 45.55597046260131]),
});
markerPoint.setId("marker1");
var markerPoint2 = new ol.Feature({
geometry: new ol.geom.Point([0.3737481481481506, 46.56841490704575]),
});
markerPoint2.setId("marker2");
var markerPolygon= new ol.Feature({
geometry: new ol.geom.Polygon([ [[1.8546370370370404,47.26352601815686],[1.4919703703703728,46.296414907045744],[2.2475259259259293,46.17552601815686],[1.8546370370370404,47.26352601815686]]]),
});
markerPolygon.setId("marker3");
var markerLigne= new ol.Feature({
geometry: new ol.geom.LineString([[0.10779680049086071,45.24686233328316], [0.8356841244345237,44.955707403705695], [1.625961790430499,45.30925267533547], [2.4162394564264753,45.16367521054674]])
});
markerLigne.setId("marker4");
myFeatures = [markerPoint,markerPoint2,markerPolygon,markerLigne];
}
var coucheGenericVector = {
title: "Ma couche",
type: Descartes.Layer.EditionLayer.TYPE_GenericVector,
definition: [{
loaderFunction: function persoLoaderFct(extent, resolution, projection) {
if (myFeatures === null) {
initMyFeatures();
}
this.addFeatures(myFeatures);
}
}],
options: {
alwaysVisible: false,
attributes: {
attributesEditable: [
{fieldName: 'Nom', label: 'Nom'}
]
},
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null
}
};
var layerCoucheGenericVector = new Descartes.Layer.EditionLayer.GenericVector(coucheGenericVector.title, coucheGenericVector.definition, coucheGenericVector.options);
Exemple chargement de marker Openlayers en utilisant le paramètre "displayFeatures":
function getMyFeatures(){
var markerPoint = new ol.Feature({
geometry: new ol.geom.Point([1.317688888888891, 45.55597046260131]),
});
var markerPoint2 = new ol.Feature({
geometry: new ol.geom.Point([0.3737481481481506, 46.56841490704575]),
});
return [markerPoint,markerPoint2];
}
var coucheGenericVector = {
title: "Ma couche GenericVector",
type: Descartes.Layer.EditionLayer.TYPE_GenericVector,
definition: [
{
displayFeatures: getMyFeatures()
}
],
options: {
alwaysVisible: false,
visible: true,
queryable: false,
activeToQuery: false,
sheetable: false,
opacity: 100,
opacityMax: 100,
legend: null,
metadataURL: null,
hide: false,
symbolizersFunction: function(feature) {
var style = new ol.style.Style({
image: new ol.style.Circle({
radius: 1,
fill: new ol.style.Fill({
color: 'black'
})
}),
text: new ol.style.Text({
text: '\uf041', // fa-map-marker
font: 'normal 18px FontAwesome',
fill: new ol.style.Fill({color: 'black'})
})
});
return style;
}
}
};
var layerCoucheGenericVector = new Descartes.Layer.EditionLayer.GenericVector(coucheGenericVector.title, coucheGenericVector.definition, coucheGenericVector.options);
C - Nouveauté - les fonctionnalités d'annotations
Nouveau type de couche : la couche d'annotation.
var couche1 = new Descartes.Layer.EditionLayer.Annotations("Annotations", Descartes.Layer.EditionLayer.TYPE_Annotations);
Les nouveaux outils d'annotations proposés utilisent cette couche pour y insérer des annotations de type points, lignes et polygones.
Remarque
Cette couche d'annotation et outils associés ne peuvent pas être utilisés conjointement avec les couches et outils d'édition.
Nouveaux outils d’annotations
Ces outils permettent de créer des annotations sur la carte.
Fonctionnalités | Aperçu |
création d'une annotation de type point | |
création d'une annotation de type ligne | |
création d'une annotation libre (à main levée) | |
création d'une annotation de type polygone | |
création d'une annotation de type retangle | |
création d'une annotation de type cercle | |
création d'une annotation de type flêche | |
création d'une annotation de type buffer | |
création d'une annotation texte | |
création d'une annotation relative à la position courante | |
création d'annotation avec la trace des positions courantes | |
ajout d'une texte à une annotation existante | |
modification globale (déplacement, rotation, redimensionnement) d’une annotation | |
modification d’une annotation par ajout, suppression de nœuds de construction | |
suppression d’une annotation | |
suppression de toutes les annotations | |
édition des attributs d'une annotation | |
modification du style d'une annotation | |
configuration de l'accroche des annotations | |
exporter les annotations | |
importer des annotations | |
affichage de l'aide à l'utilisation des outils d'annotations |
Pour plus de détail se référer à la documentation "Les annotations"
D - Nouveauté - les fonctionnalités d'impressions
Ajout d'un nouvel assistant d'impression
Fonctionnalités | Aperçu |
export avancé de la carte courante sous forme de fichier PDF[^4] |
Pour plus de détail se référer à la documentation "L'impression"
E - Nouveauté - les fonctionnalités utilisant les services de la Géoplateforme de l'IGN (bêta)
Ajout de 3 nouveaux outils
Fonctionnalités | Aperçu |
calcul d'itinéraire | |
calcul d'isochrone/isodistance | |
calcul de profil altimétrique |
Ajout de 3 nouveaux assistants
Fonctionnalités | Aperçu |
calcul d'itinétaire | |
calcul d'isochrone/isodistance | |
calcul de profil altimétrique |
Pour plus de détail se référer à la documentation "Les services de la Géoplateforme de l'IGN"
F - Changements "techniques"
Montée de version des librairies utilisées pour l'interface graphique des composants
Passage de Bootstrap 3.3.7 à 4.1.3
Passage de Jquery 1.12.4 à 3.3.1
Mise à disposition de 4 paquets NPM
La librairie Descartes est maintenant constituée de 4 modules :
-
module d-map (fonctionnalités de visualisation) : https://gitlab-forge.din.developpement-durable.gouv.fr/pub/geomatique/descartes/d-map
-
module d-editmap (fonctionnalité de la gestion des objets géographiques et d'annotation) : https://gitlab-forge.din.developpement-durable.gouv.fr/pub/geomatique/descartes/d-editmap
-
module d-inkmap (les fonctionnalités d'impression) : https://gitlab-forge.din.developpement-durable.gouv.fr/pub/geomatique/descartes/d-inkmap
-
(bêta) module d-geoplateforme (fonctionnalités utilisant des services de la Géoplateforme de l'IGN) : https://gitlab-forge.din.developpement-durable.gouv.fr/pub/geomatique/descartes/d-geoplatefofme
Ces modules sont disponibles sous la forme des paquets NPM. Les modules de la librairie sont sur :
-
l'entrepôt NPM du Gitlab Ministère :
@descartes:registry=https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/projects/17127/packages/npm
-
le gestionnaire des paquets du Gitlab Ministère (téléchargement manuel) :
https://gitlab-forge.din.developpement-durable.gouv.fr/pub/geomatique/repository-public/-/packages
-
l'entrepôt public NPM (https://registry.npmjs.org) pour les versions diffusées "grand public" à accès CDN :
https://cdn.jsdelivr.net/npm/@descartes/d-xxx@X.X.X/...
Mise à disposition de fichiers "required" regroupant l'ensemble des librairies tierces nécessaires au bon fonctionnement de la librairie principale
Dans chaque modules (d-map, d-editmap et d-inkmap), des fichiers ( xxx-required.js et xx-required.css) regroupant l'ensemble des librairies nécessaires au bon fonctionnement sont fournis dans les paquets NPM. Ils regroupent par exemple :
-
la bibliothèque OpenLayers dans sa version 4.6.5
-
la bibliothèque OL-ext dans sa version 1.1.3
-
la bibliothèque JSTS dans sa version 1.6.0
-
la bibliothèque Proj4 dans sa version 2.2.4
-
la bibliothèque GeoStyler dans sa version 0.17.44
-
pour l’interface graphique des composants:
-
la bibliothèque Bootstrap dans sa version 4.1.3 (fichiers bootstrap.min.js, bootstrap-table.min.js, bootstrap-slider.min.js et bootstrap.min.css, bootstrap-table.min.css, bootstrap-slider.min.css)
-
la bibliothèque jQuery dans sa version 3.3.1 (fichiers jquery.min.js, jquery-ui.min.js, jquery-ui.min.css)
-
la bibliothèque jsTree dans sa version 3.3.4 (fichiers jstree.min.js, style.min.css)
-
-
pour l'impression:
- la bibliothèque InkMap dans sa version 1.3.0
-
pour l'utilisation des services de la Géoplateforme de l'IGN (bêta)
-
la bibliothèque geoportal-access-lib dans sa version 3.4.2
-
la bibliothèque chart.js dans sa version 4.4.3
-
La déclaration de la librairie se fait maintenant de la façon suivante:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="d-map/dist/vendor/d-map-required.css">
<link rel="stylesheet" type="text/css" href="d-map/dist/d-map.css"/>
<link rel="stylesheet" type="text/css" href="d-inkmap/dist/vendor/d-inkmap-required.css">
<link rel="stylesheet" type="text/css" href="d-inkmap/dist/d-inkmap.css"/>
<link rel="stylesheet" type="text/css" href="d-editmap/dist/d-editmap.css"/>
<link rel="stylesheet" type="text/css" href="d-geoplateforme/dist/d-geoplateforme.css"/>
<script type="text/javascript" src="d-map/dist/vendor/d-map-required.js"></script>
<script type="text/javascript" src="d-map/dist/d-map.js"></script>
<script type="text/javascript" src="d-inkmap/dist/vendor/d-inkmap-required.js"></script>
<script type="text/javascript" src="d-inkmap/dist/d-inkmap.js"></script>
<script type="text/javascript" src="d-editmap/dist/d-editmap.js"></script>
<script type="text/javascript" src="d-geoplateforme/dist/vendor/d-geoplateforme-required.js"></script>
<script type="text/javascript" src="d-geoplateforme/dist/d-geoplateforme.js"></script>
</head>
</html>
Chargement automatique des définitions de Proj4
L'ajout des définitions se fait automatiquement au chargement des modules Descartes.
La déclaration de la définition de la projection n'est donc plus nécessaire :
Exemple
proj4.defs('EPSG:2154', "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs");
Mise à disposition des services centralisés sous la forme de services web
Jusqu'à présent, des services centralisés disponibles pour des serveurs d'applications (JAVA/PHP) étaient disponibles et devaient être intégrées dans les applications métiers.
Depuis cette version 6, ils sont accessibles directement par des Services Web centralisés (hébergement au centre serveur du MTE) et la librairie JavaScript est paramétrée pour automatiquement les utiliser.
[beta] Services Web - En cours de qualification
Ces services sont actuellement disponibles 24/24 7/7.
Accès au suivi de la supervision (intranet): http://psin.supervision.e2.rie.gouv.fr/portails/MonApplication.php?application=DESCARTES
Accès aux remontées d'alertes sur Tchap (sur invitation): #Descartes_Alertes_Supervision
Ils sont en cours de qualification dans l'infrastructure cloud eco du Ministère : tests de performance sur plusieurs noeuds avec un répartiteur de charge.
Ils peuvent être utilisés mais nous ne pouvons pour l'instant pas garantir la qualité de service (performance et disponibilité).
Si vous rencontrez des problèmes de performance, vous avez la possibilité de palier à ce problème en déployant vos propres composants côté serveur.
Pour plus d’information se référer à la documentation technique concernant les services web, section "Déployer ses propres services web".
Préconfiguration de certains paramètres
Certains paramètres sont maintenant préconfigurés dès le chargement des modules.
Il n'est plus nécessaire de renseigner les éléments suivants:
Descartes.GEOREF_SERVER = "xxxx";
Descartes.FEATUREINFO_SERVER = "xxxx";
Descartes.FEATURE_SERVER = "xxxx";
Descartes.EXPORT_PNG_SERVER = "xxxx";
Descartes.EXPORT_PDF_SERVER = "xxxx";
Descartes.EXPORT_CSV_SERVER = "xxxx";
Descartes.CONTEXT_MANAGER_SERVER = "xxxx";
Descartes.PROXY_SERVER = "xxxx";
Possibilité d'utiliser de la librairie OL-MAPBOX-STYLE pour ajouter des fonctionnalités de stylage des couches
La librairie "olms.js" propose des fonctionnalités supplémentaires (concernant les styles d'affichage) qui peuvent être utilisées conjointement avec la librairie Descartes.
Pour voir l’étendue des possibilités, se référer au manuel d’utilisation des librairies tierces.
Extension Openlayers de la Géoplateforme de l'IGN - Plus compatible
Attention
La migration du Géoportail vers la GéoPlateforme a été faite en mars 2024.
L'API de la Géoplateforme propose une extension d’OpenLayers "GpPluginOpenlayers" (compatible avec Openlayers 6 et supérieur) permettant de bénéficier des plusieurs fonctionnalités supplémentaires intégrées à Openlayers.
Descartes V6 étant basé sur Openlayers 4.6.5, cette extension ne peut donc plus être utilisée. (Analyse de la migration vers Openlayers v9 en cours...)
Alternative: un nouveau module "d-geoplateforme" a été créé (en version béta) pour proposer des fonctionnalités (outils, assistants totalement intégrées à Descartes) utilisant directement les services de la Géoplateforme.
5.1.3
1 - Présentation de la version 5
La version 5 est une version dite « technique ». Les principales évolutions sont:
-
le passage à OpenLayers 4
-
le passage à Bootstrap/jQuery au niveau de l’IHM pour s’intégrer dans la charte ACAI V3 du ministère
Les objectifs étant les suivants :
-
d’être isofonctionnel par rapport à la V4.2
-
de conserver au maximum les appels API dans le but de facilité la migration vers cette version des applications métiers
-
de garder les possibilités de paramétrage, de surcharge et d’extension de la librairie
La réalisation de cette version a été découpé en deux phases :
-
la première phase a consisté à migrer les fonctionnalités de visualisation et correspond à la version 5.0.0-RC
-
la deuxième phase a consisté à migrer les fonctionnalités d’édition et correspond à cette version 5.1.0
Les versions 5.1.0, 5.1.1, 5.1.2 et 5.1.3 ont ensuite été réalisées pour effectuer des corrections et apporter des améliorations supplémentaires.
1.1 - Version 5.1.0
La version 5.1.0 propose le même périmètre fonctionnelle que la V4.2 (fonctionnalités de visualisation et de gestion des objets géographiques)
Remarque
Une seule fonction n’avait pas pu être reprise : l’affichage des résultats sous la forme d’une couche pour le gestionnaire des requêtes attributaires. Cette fonction exploitait le standard OGC:SLD qui n’était plus implémenté dans OpenLayers 4.
Quelques améliorations ont été apportées dans la version 5.1.0:
-
affichage des couches en mode « cluster » (par regroupement)
-
utilisation de requête GET ou POST pour le chargement des couches vecteurs
-
modification de la librairie PHP pour compatibilité avec PHP 7
-
modification pour utiliser les services java/php sans « contexte » applicatif
-
nouvelles propriétés disponibles pour paramétrer les couches
-
localisation à l’adresse: utilisation des services ETALAB / ADDOK
-
nouvelles possibilités au niveau du stylage des couches vecteurs (pattern d’Ol-ext, stylage attributaires)
-
nouvelles possibilités pour étendre les fonctionnalités :
-
utilisation de librairie extension d’OpenLayers : API Géoportail, Ol-ext
-
possibilité de piloter deux cartes en même temps avec les outils simples de navigation (déplacer, zoom...)
-
1.2 - version 5.1.1
La version 5.1.1 est une version corrective de la version 5.1.0 avec la mise en place de quelques améliorations complémentaires.
Elle corrige les anomalies suivantes :
-
[Arbre des couches] Problème de performances au niveau du rafraîchissement des nœuds
-
[WMTS] impossibilité d’utiliser plusieurs urls de serveur dans une couche
-
[WFS 1.1.0 / GetFeature] paramètre SRSNAME manquant
-
[Sélection Surfacique] paramètre SRSNAME manquant dans le filter GML
-
[ConfirmDialog] Problème avec le bouton annuler pour certains boutons/assistants
-
[Panel] [Collapsed] Problème de réouverture automatique des panels
-
[snapping] mauvais paramètre utilisé pour les couches WMS avec WFS associé
-
[Edition] [Outil Selection_Attribut] Problème en mode piloté par les outils avec une sauvegarde manuelle
Quelques améliorations ont été apportées à cette version:
-
[Arbre des couches] Ajout d'un menu contextuel
-
[Arbre des couches] Affichage de la légende directement ou à la demande
-
[Arbre des couches] Affichage à la demande de l'opacité
-
[Arbre des couches] Modification du titre du nœud racine
-
[Gazetteer] Possibilité de filtrage des listes
-
Possibilité d'instancier une carte Descartes à partir d’un contexte de carte Descartes
1.3 - version 5.1.2
La version 5.1.2 est une version corrective de la version 5.1.1 avec la mise en place de quelques améliorations complémentaires.
Elle corrige les anomalies suivantes :
-
[Interrogations Surfaciques] correction pour la prise en compte des couches de type Géoserver (services Java/Php )
-
[Interrogations Ponctuelles et Infos Bulles] correction au niveau de l’envoi du pixel (utilisation de valeurs entières)
-
[Contexte de carte] correction pour la prise en compte des requêtes attributaires
-
[Requêtes Attributaires] correction pour l’utilisation de l’opérateur « IsLike » pour Géoserver
-
[Bouton Ajout d’une couche] correction pour la prise en compte des urls HTTPS
-
[Bouton Ajout d’une couche par découverte WMS] corrections pour l’affichage des liens, des styles dans la liste des couches et la prise en compte de l’url de légende
-
[Infos Bulles] correction lorsque la liste retournée est vide
-
[Couche WFS] correction pour la prise en compte du TYPENAMES pour le WFS/2.0.0
-
[Couche WFS] correction pour permettre l’envoi de la projection au niveau des emprises
-
[Interrogations Surfaciques de type Cercle] correction d’une anomalie lors de l’utilisation de l’option « persist »
Quelques améliorations ont été apportées à cette version:
-
[Requêtes Attributaires] mise en surbrillance des éléments de la liste des résultats
-
[Interrogations] possibilité de mise en surbrillance des éléments de la liste des résultats
-
[Requêtes et Interrogations] possibilité d’affichage d’un « marker » lors de la localisation sur un élément de la liste des résultats
-
[Interrogations Ponctuelles] possibilité de se localiser sur un élément de la liste des résultats (services Java/Php)
-
[Infos Bulles] changement du style d’affichage et de la cinématique d’utilisation
-
[Interrogations] modification du style d’affichage lors de l’affichage des résultats dans un réceptacle ou dans une popup
-
[Couches de visu de type Vecteur] possibilité d’utiliser des fonctions de style pour définir le style d’affichage
-
[Hostmapping] modification du principe de correspondance urls interne/externe
2 - Présentation de la version 5.1.3
Cette version 5.1.3 est une version corrective à laquelle des améliorations ont été apportées.
Elle corrige les anomalies suivantes :
-
[Infos Bulles] problème avec les noms d'attribut avec des caractères spéciaux
-
[Infos Bulles] limiter le nombre d'objets affichés
-
[Infos Bulles] rendre les liens cliquables
-
[Infos Bulles] champ non renvoyé par le serveur distant
-
[Tableaux de résultats] rendre les liens cliquables
Quelques améliorations ont été apportées à cette version:
-
[Création par dessin] magnétisme avec suivi topologique automatique
-
[LocalizedMousePosition] possibilité de choisir la projection d'affichage des coordonnées
-
[CoordinatesInput] affichage de la projection et possibilité de choisir la projection d'affichage des coordonnées
-
[Couche WFS] ajout d'une option pour limiter le nombre d’objets à afficher
2.1 - Anomalies corrigées
2.1.1 - [Infos Bulles] problème avec les noms d'attribut avec des caractères spéciaux
Lorsque les noms d'attribut affichés dans les infos bulles ont des caractères spéciaux"_", "-", ":", ".", les valeurs ne s'affichaient pas.
Cela a été corrigé dans cette version 5.1.3.
2.1.2 - [Infos Bulles] limiter le nombre d’objets affichés
Il n’y avait aucune limite concernant le nombre d’objets affichés dans les infos bulles. Et lorsque plusieurs objets étaient superposés, ils s’affichaient tous et cela était peu lisible.
La correction qui a été faite à consister à limiter à un objet par couche et à informer du nombre d’objets superposés sur cette couche au niveau de l’info-bulle.
2.1.3 - [Infos Bulles] champ non renvoyé par le serveur distant
Lorsqu'un champ, spécifié à l'initialisation de l'assistant Infobulle, n'est pas renvoyé par le serveur distant, l'infobulle ne s'affichait pas.
Cela a été corrigé.
2.1.4 - [Infos Bulles] rendre les liens cliquables
Dans les infos bulles, les attributs contenant les urls n’étaient pas cliquables.
Cela a été corrigé.
2.1.5 - [Tableaux de résultats] rendre les liens cliquables
Dans le tableau des résultats d’interrogations ou des requêtes attributaires, les attributs contenant les urls n’étaient pas cliquables.
Cela a été corrigé.
2.2 - Améliorations proposées
2.2.1 - [Création par dessin] magnétisme avec suivi topologique automatique
La librairie Descartes propose la possibilité de créer des géométries par magnétisme avec suivi topologique automatique (tracé automatique) des géométries déjà existantes.
Le principe est de permettre à l'utilisateur qui sélectionne 2 points d’une géométrie support (ligne / polygone) de créer une ligne intermédiaire constituée de N vertex s’accrochant sur les N vertex intermédiaires de la géométrie support au lieu de tirer droit.
2.2.1.1 - Affichage des informations concernant le tracé semi-automatique
Lorsque la fonctionnalité de tracé semi-automatique est activé pour une couche, un nouveau pictogramme
s’affiche au niveau de l’arbre des couches.
Ce pictogramme a plusieurs états :
-
tracé semi-automatique non disponible
-
tracé semi-automatique activé
-
tracé semi-automatique possible mais non actif
Ce pictogramme est « cliquable » : il permet aux utilisateurs d’activer/désactiver le tracé semi-automatique à la demande.
Ce pictogramme s’affiche dès l’initialisation de la carte en étant «grisé» à partir du moment où une couche est déclarée en tant que couche support au magnétisme et au tracé semi-automatique. Il est possible de masquer ce pictogramme et de le faire apparaître seulement lors de l’utilisation des outils d’éditions.
Pour cela, dans notre exemple, il faudrait surcharger la classe css suivante :
<style>
.DescartesLayersTreeLayerAutoTracingUnavailable{
display:none;
}
</style>
2.2.1.2 - Activation du tracé semi-automatique au niveau des outils d’édition
L’outil d’édition fonctionnant avec le tracé automatique est:
- l’outil de création par dessin : lors du dessin de la nouvelle géométrie
Une option est disponible au niveau de cet outil d’édition pour activer le tracé semi-automatique lors de l’utilisation de l’outil. Par défaut, ceci n’est pas activé.
Au niveau du code client:
il faut renseigner la propriété «autotracing» pour chaque outil.
carte.addEditionToolBar('editionToolBar', [
{
type: Descartes.Map.EDITION_XXX,
args: {
[...]
snapping: true,
autotracing : true
}
}
[...]
]);
2.2.1.3 - Définir le tracé semi-automatique d’une couche d’édition
Le tracé semi-automatique peut se faire à partir :
-
du magnétisme sur les objets de la couche d’édition elle-même
-
du magnétisme sur les objets d’autres couches
Remarques
Les deux possibilités peuvent bien sûr être combinées.
Tracé semi-automatique sur des objets de la couche elle-même
Si la fonctionnalité de tracé semi-automatique est activé, lorsqu’un outil d’édition (supportant le magnétisme et le tracé semi-automatique) est utilisé, le pictogramme de la couche est automatiquement activé.
Il est possible à la demande (en cliquent sur ce pictogramme) de désactiver momentanément le tracé semi-automatique pour l’outil d’édition en cours d’utilisation.
Pour chacun couche d’édition, il faut préciser si le tracé semi-automatique est possible ou pas sur ses propres objets.
Au niveau du code client:
il faut renseigner la propriété «autotracing» au niveau de la définition de la couche.
var coucheLignes = {
title: "Ma couche de lignes",
type: Descartes.Layer.EditionLayer.TYPE_WFS,
definition: [...],
options: {
snapping : {
tolerance: 10, //tolérance d’accroche (par défaut : 15px)
enable: true //accroche possible ou non sur la couche elle-même
autotracing : true
},
[...]
}
};
Le résultat est alors le suivant dans le navigateur :
Tracé semi-automatique sur des objets d’autres couches
Il est aussi possible d’activer cette fonction de tracé semi-automatique pour une couche d’édition afin que l’utilisateur puisse aussi raccrocher ses géométries à des objets d’autres couches.
Pour chaque couche d’édition, il faut préciser la liste des couches auxquelles l’utilisateur pourra se raccrocher lors de l’utilisation des outils d’édition et activer la fonction de tracé semi-automatique.
Dans l’arbre des couches, lorsqu’une couche est en cours d’édition, les pictogrammes «tracé semi-automatique» des couches spécifiées passent actif.
Il est possible à la demande (en cliquent sur ces pictogrammes) de désactiver momentanément le tracé semi-automatique pour l’outil d’édition en cours d’utilisation.
Au niveau du code client:
il faut renseigner les propriétés «snappingLayersIdentifier» et «autotracing» de «snapping» au niveau de la définition de la couche.
var couche2 = {
title: "Ma couche de lignes",
type: Descartes.Layer.EditionLayer.TYPE_WFS,
definition: [...],
options: {
id : "identifiantcouche2", //référence pour identifier la couche « support »
[...]
}
};
var couche3 = {
title: "Ma couche de polygones",
type: Descartes.Layer.EditionLayer.TYPE_WFS,
definition: [...],
options: {
snapping : {
snappingLayersIdentifier:["identifiantcouche2"], //liste des couches «supports»
autotracing : true
[...]
},
[...]
}
};
Le résultat est alors le suivant dans le navigateur :
Remarque
Le tracé semi-automatique peut aussi se faire sur des couches de visualisation référençant une ressource WFS (couche de visualisation de type WFS ou couche de visualisation WMS avec WFS associé ou couche), KML ou GeoJSON. Pour cela, il suffit de procéder de la même façon que précédemment : en renseignant la propriété «id» de cette couche de visualisation et en la déclarant en tant que couche «support» au magnétisme dans la propriété « snappingLayersIdentifier » de la couche d’édition.
Les couches supports au magnétisme avec tracé semi-automatique peuvent donc être soit :
-
la couche d’édition en elle-même (WFS, KML ou GEOJSON)
-
une autre couche d’édition (WFS, KML ou GEOJSON)
-
une couche de visualisation (de type WFS, WMS avec un WFS associé, KML ou GEOJSON)
Recommandations
Les couches doivent être utilisées dans leur projection native, car une re-projection des coordonnées peut provoquer une perte de précision de celles-ci.
2.2.1.4 - Modification du style des objets en cours de création avec tracé semi-automatique
Il est possible de modifier le style d’un objet en cours de création avec tracé semi-autiomatique notamment lors de l’utilisation de l’outil Descartes.Map.EDITION_DRAW_CREATION.
Au niveau du code client:
il faut renseigner la propriété « symbolizers » au niveau de la définition de la couche.
var coucheXXX = {
title: "Ma couche de XXX",
type: Descartes.Layer.EditionLayer.TYPE_WFS,
definition: [
{
serverUrl: "URL_SERVEUR",
layerName: "NOM_COUCHE",
featureNameSpace: "ESPACE_NOMMAGE",
featureGeometryName: "NOM_ATTRIBUT_GEOM",
serverVersion: "VERSION_SERVEUR",
...
}
],
options: {
symbolizers: {
"autotracing": { //style de l’objet en cours de creation
"XXX": {
...
}
}
},
[...]
}
};
Le résultat est alors le suivant dans le navigateur :
2.2.2 - [LocalizedMousePosition] possibilité de choisir la projection d'affichage des coordonnées
Des options supplémentaires ont été ajoutées à la zone d’informations permettant l’affichage des coordonnées du curseur de la souris.
Par défaut, les coordonnées sont affichées dans la projection de la carte.
Il est maintenant possible de les afficher dans une autre projection ou de permettre à l’utilisateur de sélectionner une projection dans une liste prédéfinie.
- Affichage dans une projection différente de celle de la carte
Il suffit de mettre un élément dans l’option « displayProjections »
carte.addInfo({
type : Descartes.Map.MOUSE_POSITION_INFO,
div : 'LocalizedMousePosition',
options : {
projection: true,
displayProjections:["EPSG:4326"]
}
});
- Affichage d’une liste de projections
Il suffit de renseigner les projections dans l’option « displayProjections »
carte.addInfo({
type : Descartes.Map.MOUSE_POSITION_INFO,
div : 'LocalizedMousePosition',
options : {
projection: true,
displayProjections:["EPSG:3857","EPSG:4326","EPSG:2154"]
}
});
Remarque
Il existe aussi une option «selectedDisplayProjectionIndex» qui permet de sélectionner une projection de la liste dès l’initialisation de la carte (par défaut, c’est le premier élément qui est sélectionné)
Il est aussi possible d’afficher sur une seule et même ligne les coordonnées et la projection.
Il suffit de renseigner l’option «inline»
carte.addInfo({
type : Descartes.Map.MOUSE_POSITION_INFO,
div : 'LocalizedMousePosition',
options : {
projection: true,
displayProjections:["EPSG:3857","EPSG:4326","EPSG:2154"],
inline : true
}
});
2.2.3 - [CoordinatesInput] affichage de la projection et possibilité de choisir la projection d'affichage des coordonnées
Des options supplémentaires ont été ajoutées à l’assistant et l’outil permettant le recentrer la carte à partir d’un couple des coordonnées.
Par défaut, les coordonnées sont à saisir dans la projection de la carte et cette projection n’est pas affichée.
Il est maintenant possible d’affiche cette projection, de la changer par une autre ou de permettre à l’utilisateur de sélectionner la projection de saisie dans une liste prédéfinie.
- Assistant : affichage de la projection de saisie des coordonnées
carte.addAction({
type : Descartes.Map.COORDS_INPUT_ACTION,
div : 'CoordinatesInput',
options : {
projection: true
}
});
- Assistant : saisie dans une projection différente de celle de la carte
Il suffit de mettre un élément dans l’option « displayProjections »
carte.addAction({
type : Descartes.Map.COORDS_INPUT_ACTION,
div : 'CoordinatesInput',
options : {
projection: true,
displayProjections: ["EPSG:4326"]
}
});
- Assistant : affichage d’une liste de projections
Il suffit de renseigner les projections dans l’option « displayProjections »
carte.addAction({
type : Descartes.Map.COORDS_INPUT_ACTION,
div : 'CoordinatesInput',
options : {
projection: true,
displayProjections: ["EPSG:3857","EPSG:4326","EPSG:2154"]
}
});
Remarque
Il existe aussi une option «selectedDisplayProjectionIndex» qui permet de sélectionner une projection de la liste dès l’initialisation de la carte (par défaut, c’est le premier élément qui est sélectionné)
- Outil: affichage de la projection de saisie des coordonnées
carte.addToolInNamedToolBar(toolsBar,{type : Descartes.Map.COORDS_CENTER,
args:{
projection: true
}
});
- Outil: saisie dans une projection différente de celle de la carte
Il suffit de mettre un élément dans l’option « displayProjections »
carte.addToolInNamedToolBar(toolsBar,{type : Descartes.Map.COORDS_CENTER,
args:{
projection: true,
displayProjections: ["EPSG:4326"]
}
});
- Outil: affichage d’une liste de projections
Il suffit de renseigner les projections dans l’option « displayProjections »
carte.addToolInNamedToolBar(toolsBar,{type : Descartes.Map.COORDS_CENTER,
args:{
projection: true,
displayProjections: ["EPSG:3857","EPSG:4326","EPSG:2154"]
}
});
Remarque
Il existe aussi une option «selectedDisplayProjectionIndex» qui permet de sélectionner une projection de la liste dès l’initialisation de la carte (par défaut, c’est le premier élément qui est sélectionné)
2.2.4 - [Couche WFS] ajout d'une option pour limiter le nombre d’objets à afficher
Il est maintenant possible de limiter le nombre d’objets d’une couche WFS à afficher.
Une nouvelle option « displayMaxFeatures » est disponible au niveau de la définition des ressources d’une couche.
var couche = new Descartes.Layer.WFS(
"Titre de la couche",
[
{
serverUrl: urlserveur,
layerName: "nomcouche",
displayMaxFeatures: 200
}
],
{
[...]
}
);