-
Notifications
You must be signed in to change notification settings - Fork 0
Version Intégrable
- Aperçu
- Configurations de la version intégrable
- Simple Filters
- Simple Feature List
- Interfaces pertinentes
- Configurations additionnelles
- Informations additionnelles
La version intégrable permet de combiner la carte d'IGO2 avec des filtres et une liste pour afficher les résultats. La version standard présente toutes les fonctionnalités de IGO2-Québec. Si la version intégrable est activée, elle remplace la version standard et permet à l'utilisateur de filtrer les entités dans la carte, voir les entités filtrées dans une liste, etc. Les mises en pages supportées dans le fichier config.json
sont les suivantes:
Carte seulement | Liste seulement | Carte et filtres | Carte et liste | Filtres et liste | Carte, filtres et liste | |
---|---|---|---|---|---|---|
showMap |
true | false | true | true | false | true |
simpleFilters |
non | non | oui | non | oui | oui |
simpleFeatureList |
non | oui | non | oui | oui | oui |
- Filtrer les entités dans la carte et dans la liste en fonction des filtres appliqués.
- Effacer les filtres pour réinitialiser les entités.
- Interagir avec la carte pour visualiser les résultats de recherche.
- Cliquer sur des entités dans la carte pour les voir dans la liste: cliquer sur une entité invalidera tous les filtres appliqués jusqu'à ce que les filtres soient effacés, un nouveau tri soit sélectionné, ou le nombre de résultats par page soit modifié (et un alerte apparaitra pour avertir l'usager).
- Voir les attributs désirés pour les résultats de recherche.
- Enlever des filtres.
- Cadrer sur des éléments dans la carte en cliquant sur les titres des entités dans la liste. À noter: la carte se décalera vers le haut lors du cadrage. C'est un problème connu.
- Trier les résultats en fonction de certains types.
- Modifier le nombre de résultats par page.
Les types sont utilisés pour créer des filtres (pour filtrer en fonction de ce type), afficher des informations (afficher la valeur correspondante au type pour chaque résultat de recherche), et pour trier les résultats de recherche. Voici comment ils sont employés.
- Types
properties
: Toute information par rapport aux résultats possibles de recherche sont storés sous forme d'objetsFeature
. Ces informations existent dans la couche choisie (voir _default.json). LesFeature
sont générés par leworkspace
et chaqueFeature
contient un champproperties
, qui possède des types (ex. "region", "adressebur") et les valeurs associées ("Bas-Saint-Laurent", "70 Rue Saint-Germain Est, Rimouski G5L7J9" respectivement). Les types disponibles dans chaque élément deproperties
dépendent de la couche utilisée. - Types
terrAPI
(documentation): D'autres types sont permis dans cette application et ils proviennent de terrAPI (voir la liste de types acceptées de terrAPI). Parmi ces types, seulement les types qui sont tracés avec une géométriePolygon
ouMultipolygon
sont acceptés. Un dernier cas existe: certains types de terrAPI qui respectent les critères de géométrie sont seulement disponibles dans certains endroits au Québec (ex.arrondissements
). Dans ce cas, le type est accepté dans l'application et les résultats qui n'ont pas d'arrondissements associés auront unN/D
associé.
Note pour types de terrAPI: Pour tout type de terrAPI, des étapes supplémentaires sont nécessaires à l'initialisation. Donc, pour les grandes couches, l'application pourrait prendre quelque temps à s'initialiser. En raison des limitations de l'API de terrAPI, il se peut que les types de terrAPI soient impossibles à initialiser. Dans ce cas, un message apparaitra et aucun type de terrAPI ne sera utilisé dans l'application.
Configuration | Type | Description |
---|---|---|
layerId |
string | Identifiant unique pour la couche (définie dans _default.json ) |
showMap |
boolean | Permet de contrôler la visibilité de la carte. Par défaut: false |
simpleFilters |
Object | Permet de définir les filtres qui seront possibles pour filtrer les entités, ce qui sera reflété dans la carte et la liste s'ils sont visibles. Sans la configuration simpleFilters , les filtres ne sont pas visibles |
simpleFeatureList |
Object | Permet de configurer la liste, les attributs qui seront présents pour chaque entité ainsi que la configuration pour le nombre de résultats par page et le tri des résultats. Sans la configuration simpleFeatureList , la liste n'est pas visible |
"useEmbeddedVersion": {
"layerId": "dq2",
"showMap": true,
"simpleFilters": {
"filters": [
{"type": "region", "description": "Région"},
{"type": "mrc", "description": "MRC"},
{"type": "responsable", "description": "Responsable"},
{"type": "arrondissements", "description": "Arrondissement"}
],
"uniqueType": "adressebur"
},
"simpleFeatureList": {
"attributeOrder": [
{"type": "adressebur", "header": "small"},
{"personalizedFormatting": "[label] à [municipalites]", "header": "title"},
{"type": "region", "description": "Région", "header": "standard"},
{"type": "mrc", "description": "MRC", "header": "standard"},
{"type": "responsable", "description": "Responsable"},
{"type": "telephonebur", "description": "Téléphone"},
{"type": "telecopieurbur", "description": "Télécopieur"},
{"type": "courriel"},
{"type": "arrondissements", "description": "Arrondissement"}
],
"sortBy": {
"defaultType": "region",
"sortOptions": [
{"type": "region", "description": "Région"},
{"type": "responsable", "description": "Responsable"},
{"type": "municipalites", "description": "Municipalité"}
]
},
"formatURL": true,
"formatEmail": true,
"paginator": {
"pageSizeOptions": [1,5,10,20,50],
"pageSize": 10,
"showFirstLastPageButtons": true,
"showPreviousNextPageButtons": true
}
}
}
Configuration | Type | Description |
---|---|---|
filters |
SimpleFilter[] | Liste de filtres qui seront affichés |
uniqueType |
string | La propriété unique de chaque Feature dans la couche (Feature.properties ). Ce type permet l'utilisation des types de terrAPI dans les filtres. Sans cette configuration, aucun filtre qui utilise un type de terrAPI ne peut être affiché et utilisé (voir filtres avec types de terrAPI
|
Configuration | Type | Description |
---|---|---|
attributeOrder |
AttributeOrder[] | Configuration des informations qui seront visibles dans la liste pour chaque entité |
sortBy |
SortBy | Configuration des attributs qui utilisés pour le tri des résultats |
formatURL |
boolean | Si appliqué, un format spécial sera appliqué pour tout URL affiché dans la liste (un lien cliquable "Site Web" apparaitra). Par défaut: false |
formatEmail |
boolean | Si appliqué, un format spécial sera appliqué pour tout courriel affiché dans la liste (un lien cliquable "Courriel" apparaitra). Par défaut: false |
paginator |
Paginator | Configurations pour le paginateur |
À noter: les informations sous forme de numéro de téléphone ou de code postal sont automatiquement formattés.
Champ | Type | Description |
---|---|---|
type |
string | Doivent provenir du champ properties de chaque Feature ou des types de terrAPI (voir types acceptés). À noter: seulement les types de terrAPI en polygon/multipolygon peuvent être utilisés et les autres types seront rejetés |
description |
string | Description qui peut être choisi par l'utilisateur. La description sera affichée dans l'application |
interface SimpleFilter {
type: string; //the type that will be found from terrAPI or the entitiy properties
description: string; //the description that will be displayed in the application
}
Le terme attribut
est utilisé pour désigner une ligne d'information que chaque élément contiendra dans la liste.
Champ | Type | Description |
---|---|---|
type |
string | Champ qui définit le type (comme dans SimpleFilter). Champ optionnel si personalizedFormatting existe |
personalizedFormatting |
string | Champ qui permet de combiner du texte avec des types (soit de terrAPI ou des propriétés). Les variables pour les types doivent être inclus entre crochets (ex. [adressebur] ). Si le champ personalizedFormatting existe, type n'est plus nécessaire, car les types seront recherchés dans les crochets du personalizedFormatting
|
description |
string | Description qui sera visible (comme dans SimpleFilter) |
header |
string | Permet une configuration du style pour les attributs. 3 styles définis existent déjà: title (bleu, gras, charactères larges), standard (noir, charactères moyens), small (noir, charactères petits). Pour tout attribut désigné avec un title , cet attribut devient cliquable dans la liste. Une fois qu'elle est cliquée, la carte (si elle est visible) se centrera sur sa localisation |
interface AttributeOrder {
type: string; // name of the type in the data source
personalizedFormatting?: string; // string used to merge multiple types
description?: string; // description to put in front of the value of the attribute
header?: string; // HTML header to use (ex. "small")
}
Exemple de attributeOrder
:
"attributeOrder": [
{"type": "adressebur", "header": "small"},
{"personalizedFormatting": "[label] à [municipalites]", "header": "title"},
{"type": "region", "description": "Région", "header": "standard"},
{"type": "mrc", "description": "MRC", "header": "standard"},
{"type": "responsable", "description": "Responsable"},
{"type": "telephonebur", "description": "Téléphone"},
{"type": "telecopieurbur", "description": "Télécopieur"},
{"type": "courriel"},
{"type": "arrondissements", "description": "Arrondissement"}
]
Champ | Type | Description |
---|---|---|
defaultType |
string | Le type qui sera utilisé pour trier les entités dans la liste par défaut. À noter: encore une fois, le type doit être un type qui provient des properties de chaque entité ou un type valide de terrAPI (parmi la liste acceptable et qui retourne des types multipolygon ou polygon) |
sortOptions |
SimpleFilter[] | Définit les types qui sont possibles d'utiliser pour faire le tri des résultats dans la liste |
interface SortBy {
defaultType: string; // the default type used for the sort
sortOptions: SimpleFilter[]; //the options of types that will be available to sort the entities
}
Champ | Type | Description |
---|---|---|
pageSizeOptions |
number[] | Configuration optionelle pour indiquer les options pour le nombre de résultats affichés par page dans la liste. Sans cette configuration, les valeurs de défaut seront appliquées ([5, 10, 25] ) |
pageSize |
number | Configuration optionelle pour indiquer le nombre de résultats affichés quand l'application est initialisée. Si pageSize n'est pas fourni ou que la valeur ne correspond pas à une valeur dans la liste pageSizeOptions , la valeur de défaut sera appliquée (le premier nombre dans la liste pageSizeOptions ) |
showFirstLastPageButtons |
boolean | Indique si les boutons pour sauter à la première/dernière page sont visibles. Par défaut: true |
showPreviousNextPageButtons |
boolean | Indique si les boutons pour sauter à la prochaine/dernière page sont visibles. Par défaut: true |
interface Paginator {
pageSizeOptions?: number[] //the selectable options for the number of entries per page
pageSize?: number; // the number of entities per page - the page size will be overridden if it is not an element of pageSizeOptions
showFirstLastPageButtons?: boolean; // show the "Go to First Page" and "Go to Last Page" buttons
showPreviousNextPageButtons?: boolean; // show the "Go to Previous Page" and "Go to Next Page" buttons
}
Pour le moment, la fonctionnalité de la carte est telle que seulement les entités qui sont visibles dans la carte sont actualisés dans l'application, donc il faut mettre un numéro de map.view.zoom
assez petit pour pouvoir voir toutes les entités dans la carte à l'initialisation pour avoir accès à toutes les entités dès le lancement de l'application. À noter: la valeur idéale peut être différente pour chaque couche utilisée selon l'emplacement des entités dans la carte.
Configuration complète utilisée (pour cet apreçu):
{
"map": {
"view": {
"projection": "EPSG:3857",
"center": [-71.938087, 48.446975],
"zoom": 4,
"maxZoom": 19,
"maxZoomOnExtent": 17,
"geolocate": false,
"alwaysTracking": false,
"enableHighAccuracy": false
},
"controls" : {
"scaleLine": {
"target": "scaleLine"
}
}
},
"layers": [
{
"id": "carte_gouv_qc",
"title": "Plan",
"visible": true,
"baseLayer": true,
"sourceOptions": {
"url": "https://geoegl.msp.gouv.qc.ca/apis/carto/tms/1.0.0/carte_gouv_qc_ro@EPSG_3857/{z}/{x}/{-y}.png",
"attributions": "© <a href='http://www.droitauteur.gouv.qc.ca/copyright.php' target='_blank'><img src='https://geoegl.msp.gouv.qc.ca/gouvouvert/public/images/quebec/gouv_qc_logo.png' width='64' height='14'>Gouvernement du Québec</a> / <a href='https://www.igouverte.org/' target='_blank'>IGO2</a>",
"type": "xyz",
"maxZoom": 19,
"crossOrigin": "anonymous"
}
},
{
"title": "Imagerie",
"baseLayer": true,
"visible": false,
"sourceOptions": {
"url": "https://geoegl.msp.gouv.qc.ca/apis/carto/tms/1.0.0/orthos@EPSG_3857/{z}/{x}/{-y}.jpeg",
"attributions": "© <a href='http://www.droitauteur.gouv.qc.ca/copyright.php' target='_blank'><img src='https://geoegl.msp.gouv.qc.ca/gouvouvert/public/images/quebec/gouv_qc_logo.png' width='64' height='14'>Gouvernement du Québec</a> / <a href='https://www.igouverte.org/' target='_blank'>IGO2</a>",
"type": "xyz",
"maxZoom": 19,
"crossOrigin": "anonymous"
}
}
],
"toolbar": [
"searchResults"
],
"tools": [
{
"name": "searchResults"
}
]
}
Pour avoir accès à la version intégrable, il est important d'avoir layers.workspace.enabled
à true
. Si la version non-intégrable est utilisée, la config workspace
n'est pas nécessaire.
Configuration complète utilisée (pour cet aperçu):
{
"uri": "_default",
"base": "_base",
"layers": [
{
"title": "WFS",
"id": "dq2",
"sourceOptions": {
"type": "wms",
"url": "https://geoegl.msp.gouv.qc.ca/apis/wss/complet.fcgi",
"params": {
"layers": "MSP_DIRECTION_REG_COG_P_V"
},
"urlWFS": "https://geoegl.msp.gouv.qc.ca/apis/wss/complet.fcgi",
"paramsWFS": {
"featureTypes": "MSP_DIRECTION_REG_COG_P_V",
"fieldNameGeometry": "geometry",
"outputFormat": "geojson"
},
"queryable": true,
"queryLayerFeatures": true
},
"workspace": {
"enabled": true
}
}
]
}
Afin de filtrer les entités dans la carte, les APIs de MapServer sont utilisés.
- Le filtrage des entités dans la carte est seulement supportée pour les types qui sont des
properties
des entités. Donc, pour tout type de terrAPI, il faut convertir le résultat obtenu par terrAPI en une desproperties
de l'entité - d'où la nécessité duuniqueType
. Sans ce, aucun filtre qui utilise des données de terrAPI ne peut être utilisé. - MapServer ne permet pas des requêtes de plus d'une certaine longueur (environ 4000 charactères). Il est important que les données contenues dans
uniqueType
soient de la plus petite longueur possible pour être capable d'appliquer le plus de filtres de terrAPI possible. Si l'erreur se produit, un message d'erreur apparaitra ("La couche est indisponible pour le moment ou vous n'avez pas les permissions requises.") et le dernier filtre appliqué ne sera pas reflété dans la carte.