Intégration avec applications Web
Les applets Java sont exécutées dans l'environnement d'un navigateur web. De ce fait, elles peuvent interagir avec le code javascript présent dans la page web qui contient l'applet et ce, dans les 2 directions. Cette communication permet de réaliser des interfaces html pour contrôler la carte et des intégrations simples avec d'autres applications exécutées dans l'environnement du navigateur web. Cela ne s'applique pas aux applications JMap Pro déployées avec la méthode JavaWebStart (en dehors d'un navigateur web) car il n'y a pas de page web impliquée dans ces cas.
Javascript vers Java
L'exemple de page web suivante est une page normale de démarrage d'une application JMap Pro de type applet à laquelle on a ajouté des fonctions en javascript (pan et zoom) et des hyperliens pour appeler ces fonctions. Lorsqu'elles sont appelées, les fonctions font appel à l'API de JMap pour contrôler la carte.
L'application JMap Pro possède une méthode getApplicationContext() permettant d'accéder à l'ensemble des composantes de l'application.
|
Java vers Javascript
À partir d'une applet JMap Pro, il est possible d'appeler des fonctions javascript présentes dans la page web qui contient l'applet. Cela permet une interaction entre l'application JMap Pro et son environnement html. Par exemple, il serait possible de sélectionner un élément sur la carte et d'afficher dans la page html des informations sur l'élément en question.
Pour activer cette communication java-javascript, il est nécessaire de spécifier le paramètre mayscript: true dans les attributs servant à démarrer l'applet, tel que montré dans l'exemple suivant.
|
Pour appeler une fonction javascript à partir de votre code Java (possiblement de votre extension JMap), vous devez utiliser l'API de JSObject, tel que démontré dans l'exemple suivant.
JSObject w = JSObject.getWindow((Applet)appContext.getRootPaneContainer()); w.eval("show_form(" + id + ");");
|
Dans cet exemple, la méthode getWindow reçoit l'instance de l'applet en paramètre. La méthode getRootPaneContainer de la classe JMapApplicationContext retourne le container de plus haut niveau de l'application, ce dernier étant l'instance de Applet lorsque l'application est exécutée à l'intérieur du navigateur Web.
La méthode eval prend en paramètres la fonction javascript à appeler avec ses paramètres. Dans cet exemple, un identifiant est passé à la fonction javascript.