11 novembre 2011

API de Géolocalisation et applications web ArcGIS - 2/3


Dans mon premier article, j'ai décris l'API de Géolocalisation introduite par HTML5 et comment l'utiliser conjointement à l'API ArcGIS for JavaScript. Voyons aujourd'hui comment implémenter cette même fonctionnalité dans une application web ArcGIS avec Flex. En dehors du cas particulier du SDK 4.5 for Mobile Application, il n'existe pas directement dans Flex d'objets permettant la localisation géographique du poste de l'utilisateur. Il faut donc trouver une autre solution.

Vous pouvez par exemple développer vos propres fonctions d'accès aux nombreuses APIs et bases de données en ligne pour obtenir la localisation correspond à votre adresse IP. Cette solution n'est cependant pas idéale car elle nécessite un codage non négligeable et assez peu portable car lié au fournisseur d'information de géolocalisation.

Une solution plus efficace et plus standardisée consiste tout simplement à s'appuyer sur les fonctionnalités d'HTML5 évoquée dans mon précédent article. Il faudra pour cela être capable de faire communiquer votre application Flex avec du code HTML5 (JavaScript) ce qui n'est pas très compliqué. Il vous faudra tout d'abord, depuis votre application Flex, appeler une fonction JavaScript de votre page HTML pour réaliser la géolocalisation. Une fois exécutée, votre fonction JavaScript devra renvoyer les coordonnées latitude/longitude/altitude vers l'application.

Communication entre la page HTML et l'application Flex

Flex fournit une classe ExternalInterface bien pratique pour communiquer avec la page HTML qui contient votre application Flash. Cette classe permet d'appeler une fonction de la page HTML à l'aide de méthode call. Dans l'exemple ci-dessous, on appelle la fonction JavaScript GeolocalisationJS (sans passer d'argument car inutile dans notre exemple). Préalablement, on a utilisé la méthode addCallback pour déclarer la fonction Flex qui sera appelée en retour de l'appel JavaScript. Cette fonction nommée GeolocalisationFromJS (dans notre l'exemple) permettra de traiter la chaine de caractère contenant les coordonnées géographiques renvoyés par notre fonction JavaScript.

Code Flex: Appel de la fonction JavaScript



La fonction JavaScript doit pouvoir renvoyer le résultat à l'application flex. Pour cela, vous devez appeler la  fonction de Callback de l'application Flex (GeolocalisationFromJS) en faisant référence à l'objet correspondant à l'application Flash (ici son id dans la page HTML est Geolocalisation). L'appel à la fonction Flex se fait donc à l'aide de l'instruction JavaScript suivante:
 document.Geolocalisation.GeolocalisationFromJS(resultat).

Page HTML: Fonction JavaScript réalisant la géolocalisation



La fonction Flex de Callback récupère les arguments transmis par la fonction JavaScript et traite les coordonnées ainsi reçues pour centrer la carte sur la localisation géographique.

Code Flex: Fonction de Callback 


Un exemple d'application avec l'API ArcGIS for Flex

Une fois que l'on a compris ce mécanisme on peut donc facilement développer une fonction de géolocalisation dans une application Flex ArcGIS. J'ai développé cet exemple en guise d'illustration, vous trouverez le code source de l'application ici.



Dans un dernier article, je traiterai le cas d'application Silverlight.

2 commentaires:

Abdellah a dit…

Très bon article.
Je veux vous contacter mais je n'ai pas trouver de section "Contact" dans votre site ni les e-mails des propriétaires de ce blog. Comment faire ?

Gaëtan Lavenu a dit…

Bonjour,

Vous pouvez nous joindre à l'adresse email suivante:

arcorama2007@gmail.com