Scripts dans les infobulles JMap

Les infobulles dans JMap sont une façon simple et rapide d’obtenir de l’information sur un objet de la carte. Simplement cliquer ou toucher un objet fait apparaître l’infobulle avec un contenu différent pour chaque couche du projet JMap. Comme administrateur JMap, vous décidez du contenu de l’infobulle. Vous pouvez inclure du texte, des valeurs d’attributs des objets, des hyperliens, des images, entre autres. Vous avez accès à toute la syntaxe des infobulles de JMap pour arriver au résultat souhaité.

Mais saviez-vous que vous pouvez aussi inclure des petits programmes JavaScript dans les infobulles ?

 

Les scripts dans les infobulles peuvent servir à toute sorte de choses comme faire des calculs mathématiques, manipuler des chaînes de caractères ou implémenter une logique avec conditions. Ils ouvrent la porte à un grand nombre de possibilités.

En plus des infobulles, notez que les scripts JavaScript peuvent aussi être utilisés dans la configuration des étiquettes.

Voici quelques exemples concrets :

 

Condition if else


ev(NAME)
<script>
if (ev(TYPE) == "") {
   print("Type: N/A");
} else {
   print("Type: " + ev(TYPE));
}
</script>

Ce script vérifie si l’attribut TYPE est vide et si c’est le cas, affiche N/A, si non, affiche la valeur de l’attribut. Remarquez la fonction print() qui affiche du contenu dans l’infobulle.

Le résultat est le suivant.

1

2

 

 

 

 

 

Condition if else if


<b>ev(NAME)</b>
<script>
if (ev(TYPE) == "") {
   print("Type: N/A");
}  else if (ev(TYPE) == "roof") {
print("*** Roof ***");
}  else {
   print("Type: " + ev(TYPE));
}
</script>

Ce script montre l’utilisation de else if pour tester plusieurs conditions. Si la valeur de l’attribut TYPE n’est pas vide et qu’elle est égale à roof, alors le script affiche le texte *** Roof ***.

Le résultat est le suivant.

3

 

 

 

 

 

Calcul sur attribut - conversion


<b>ev(NAME)</b>
<script>
areaSqFt = ev(AREAM2) * 10.7639;
print(areaSqFt + " sq. feet");
</script>

Ce script démontre un calcul mathématique qui convertit une superficie en mètres carrés vers une superficie en pieds carrés.

Le résultat est le suivant. Remarquez que le résultat aurait besoin d’être formaté pour limiter le nombre de chiffres décimaux.

4

 

 

 

 


<b>ev(NAME)</b>
<script>
areaSqFt = ev(AREAM2) * 10.7639;
print(areaSqFt.toFixed(2) + " sq. feet");
</script>

Ce script est presque identique au précédent, mais il ajoute un appel à la fonction JavaScript toFixed() pour déterminer le nombre de chiffres décimaux.

Le résultat est le suivant.

5

 

 

 

 

 

Calcul entre plusieurs attributs


<b>ev(NAME)</b>
<script>
valuePerSqMtr = ev(VALUATION) / ev(AREAM2);
print("Value per sq. meter : " + valuePerSqMtr.toFixed(2) + "$");
</script>

Ce script effectue un calcul mathématique avec 2 attributs en calculant le ration coût / surface.

Le résultat est le suivant.

6

 

 

 

 

 

Manipulation de texte


<b>ev(NAME)</b>
<script>
var text = ev(NAME);
if (text.startsWith("Hotel")) {
  text = text.substring(6);
}
print(text);
</script>

Dans ce script, on vérifie si la valeur de l’attribut NAME débute par Hotel et si c’est le cas, la fonction substring() est appelée pour soustraire Hotel de la chaine de caractères.

Le résultat est le suivant.

7

 

 

 

 

 

Limitations

Comme dans les exemples montrés plus haut, vos scripts doivent se limiter à manipuler des variables locales et les attributs des objets de la carte. Par exemple, vous ne pouvez pas :

    • Faire référence au DOM
    • Manipuler les styles (CSS)
    • Appeler la fonction alert()

 

Pour plus d’information sur les infobulles dans JMap, vous pouvez consulter le manuel de JMap Admin et cet article qui donne d’autres exemples de scripts.

 

Jean-Robert Desbiens-Haddad
Vice-Président Technologies