Les actions par défaut de JMap Web
Le modèle d'application JMap Web offre plusieurs actions par défaut afin de faciliter les interactions avec JMap Serveur. Cette section va en présenter quelques-unes et va démontrer comment vous pouvez les utiliser.
Note: La majorité des actions nécessitent des paramètres décrivant l'état de la carte. Pour la plus grande partie, ces informations peuvent être obtenues en utilisant l'API d'OpenLayers. |
Tous les exemples de cette section font référence à un déploiement basé sur le projet The World. Le déploiement couvre la totalité de l'étendue du projet et contient les couches "Base" et "Cities". Référez-vous aux captures d'écran suivantes afin de créer un déploiement similaire.
Couches configurées
Propriétés géographiques, partie 1.
Propriétés géographiques, partie 2.
Configuration de la couche Base
Configuration de la couche Cities
Action 'extractelements'
L'action extractelements retourne une liste d'éléments d'une couche JMap.
Le type de requête 'geometry'
La requête geometry fait une extraction des éléments qui intersectent ou sont contenus dans une géométrie fournie.
Paramètres
Le tableau suivant indique la liste des paramètres qui peuvent être acheminés à l'action extractelements.
Paramètres de extractelements |
Description |
request |
{String} "geometry" requis Cette chaîne identifie le type de requête qui est acheminée à l'action. D'autres types de requêtes seront possiblement supportés par cette action dans le futur. |
geometry |
{String} required Une géométrie WKT qui définie la région pour laquelle le processus d'extraction d'éléments sera exécuté. |
res |
{Number} requis La résolution actuelle de la carte. |
bbox |
{String} requis L'étendue pour la quelle vous voulez faire l'extraction d'éléments dans un format bounding box (exemple: "-100,-50,100,50"). |
drill |
{Boolean} défaut: false Indique si vous voulez continuer l'analyse de la pile de couches après qu'un premier élément correspondant soit trouvé. |
layers |
{String} requis Spécifie pour quelle(s) couche(s) vous voulez faire l'extraction d'éléments. Plusieurs couches peuvent être demandées à la fois. Dans ce cas, vous devez séparer les éléments de la liste en utilisant des virgules. Utilisez le paramètre drill de manière à obtenir les éléments pour plusieurs couches. |
Exemple
Cet exemple fait une requête d'extraction d'éléments pour la couche «Cities» autour de l'écosse.
$.ajax(JMap.app.ajaxDispatcher, {data: { |
Réponse
L'identifiant, la géométrie (sous la forme d'une chaîne WKT), les valeurs d'attributs, l'étendue et le point centré pour chacun des éléments sont retournés. Les attributs liés ainsi que leur type SQL sont également inclus. L'index des valeurs d'attributs de l'élément correspond à l'index des attributs configurés sur la couche dans JMap Admin. Si des éléments de plusieurs couches correspondent aux critères de la requête, un tableau de ces objets sera retourné.
{ |
Action 'layerinfo'
L'action layerinfo offre des détails au sujet des couche du projet associé au déploiement courant.
Le type de requête 'geteditablelayers'
Le type de requête geteditablelayers offre des détails au sujet des couches sur lesquelles l'utilisateur courant peut faire des tâches d'édition.
Paramètres
Cette action ne nécessite aucun paramètre. À la place, elle utilise l'information de la session courante afin d'effectuer cette opération.
Example
$.ajax(JMap.app.ajaxDispatcher, {data: { |
Réponse
La réponse du serveur comprend un tableau d'objets (editableLayers). Chacun des objets du tableau contient les clefs de propriétés suivantes:
Clefs de propriétés d'une réponse geteditablelayers |
Description |
fields |
{Array} Tableau d'objets qui exposent le nom des attributs liés ainsi que leur type de donnée SQL. |
forms |
{Array} Les formulaires configurés de la couche. |
id |
{Number} L'identifiant de la couche. |
idFieldName |
{String} Le nom de l'attribut de la couche qui sert d'identifiant. |
offset |
{Object} Un objet qui contient le décalage actuel de la couche. |
permissions |
{Number} Un entier entre 0 et 15 (inclusif) qui décris les permissions envers la couche de l'utilisateur courant. Les masques de bits suivant signifient différentes permissions. •0x0000: Aucune. •0x0001: Peut ajouter des éléments à la couche. •0x0010: Peut modifier les éléments de la couche. •0x0100: Peut détruire les éléments de la couche. •0x1000: Peut modifier les valeurs d'attributs des éléments de la couche. |
Les formulaires sont retournés sous la forme d'un tableau d'objets. Ils ont la structure suivante:
Clefs de propriétés des formulaires de la réponse |
Description |
id |
{Number} L'identifiant unique du formulaire. |
json |
{String} Une représentation JSON d'une configuration de formulaire. |
name |
{String} Le nom du formulaire tel que défini dans JMap Admin. |
permissions |
{Number} Un entier entre 0 et 7 (inclusif) qui décris les permissions envers le formulaire de l'utilisateur courant. Les permissions d'un formulaire ne concerne que les formulaires externes. Les permissions d'un formulaire d'attributs de couche sont définis dans les permissions de la couche. •0x000: Aucune. •0x001: Peut ajouter des données dans un formulaire externe. •0x010: Peut modifier des données dans un formulaire externe. •0x100: Peut supprimer des données dans un formulaire externe. |
type |
{String} Identifie le type de formulaire. Un parmi les suivants: •LAYER_ATTRIBUTES_FORM •LAYER_ATTRIBUTES_SUB_FORM •EXTERNAL_ATTRIBUTES_FORM •EXTERNAL_ATTRIBUTES_SUB_FORM |
uidAttributeName |
{String} Ne concerne que les formulaires externes. Correspond au nom de l'attribut de la couche qui sera utilisé comme clef étrangère afin d'établir le lien parent-enfant. |
Exemple
Ceci est un exemple d'une réponse geteditablelayers. Il est possible que vous ayez des résultats différents. Dans tous les cas, la réponse devrait refléter vos permissions envers les couches et les formulaires.
{ |
Action 'loadformdata'
L'action loadformdata offre les données des formulaires externes pour un élément d'une couche demandée.
Paramètres
loadformdata attends les paramètres suivants:
Paramètres de loadformdata |
Description |
data |
{String} requis Chaîne JSON qui représente un littéral objet JavaScript composé des propriétés suivantes: •elementId: {Number} L'identifiant unique de l'élément pour lequel on fait la demande de données. •formId: {Number} L'identifiant du formulaire externe. •layerId: {Number} L'identifiant de la couche sur laquelle l'élément existe/le formulaire est configuré. •listFields: {Array[Strings]} Une liste de noms de champs du formulaire pour lesquels vous voulez des valeurs. Un tableau vide va retourner les données pour tous les champs du formulaire. •mapValues: Littéral objet JavaScript qui contient les valeurs des champs du formulaire d'attributs de la couche. |
Exemple
Exemple de requête loadformdata. Cet exemple fait référence à un autre projet JMap sur lequel des formulaires externes sont configurés.
var data = { |
Réponse
Le serveur répond à l'aide d'un tableau à deux dimensions de littéraux objets JavaScript représentant les valeurs des champs du formulaire. Chaque item dans le tableau rows correspond à une rangée de données. Plusieurs rangées seront retournées lorsque l'on demande des données pour un formulaire de type EXTERNAL_ATTRIBUTES_SUB_FORM.
Le nom du champs du formulaire, sa valeur et le type SQL de la donnée seront retournés.
{ |