L’API Microsoft Bing Maps ne fournit pas de contrôle full-WPF permettant d’intégrer très simplement les possibilités de cartographie au sein de vos applications lourdes WPF ou WinForm mais il est toutefois possible de les intégrer.

UPDATE : Voici une version de l’article raffraichit et plus détaillée intégrant les problématique d’intégration applicative et le cas spécifique de la table Surface :
http://blogs.developpeur.org/nicoboo/archive/2011/08/15/bing-maps-for-enterprise-integration-dans-une-application-wpf-et-pour-la-table-microsoft-surface.aspx

Microsoft Bing Maps API développement

A travers cet article, nous allons analyser les différentes techniques envisageables pour intégrer cette technologie dans des applications lourdes WPF et WinForm.

Les considérations importantes à avoir dans le développement de vos applications lourdes seront également présentées afin de cerner très simplement les avantages/inconvénients et risques d’une solution exposée.flag_us

UPDATE : Dear english friends, you can get an english version through this link :-)

http://www.boonaert.net/documents/VE/Bing%20Maps%20for%20Enterprise%20-%20WPF%20and%20Winform%20Integration.pdf

 

Présentation générale et intérêts

Afin de fournir une vue interactive cartographique, il peut être demandé de visualiser un contrôle Bing Maps dans une application lourde.

Seul problème, il n’existe pas de contrôle dédié à cet usage tant en WPF qu’en WinForm, ce qui peut s’expliquer par l’intérêt limité en termes de portabilité de la solution qui serait alors développée.

Interoperability Bing Maps Control WPF Winform

Pour proposer une alternative à cette solution, il devient tout à fait possible d’utiliser les contrôles existants (AJAX/JavaScript, Silverlight ou plugin 3d) dans les scénarios qui sont expliqués dans la suite de ce billet.

Chaque technique présentée ici, n’est pas forcément officiellement supportée par Microsoft et ce point devra être considéré au moment du développement, surtout dans le cadre d’applications mises en production.

 

Solution 1 : Intégration du contrôle AJAX/JavaScript via WebBrowser

Microsoft AJAX Javascript Bing Maps

Cette solution, en apparence, peut être celle la plus simple à mettre en œuvre et surtout la plus pérenne et moins couteuse au final.

Elle consiste à réaliser le développement de l’application de visualisation de la carte en code HTML utilisant le contrôle AJAX/JavaScript. Cette page HTML sera alors ensuite affiché à travers un contrôle de type WebBrowser.

Avantages :

  • Solution simple à développer
  • Technologie maîtrisée et support de Microsoft pour la partie HTML
  • Possibilités du contrôle AJAX

Inconvénients :

  • Couche d’interopérabilité moyennement complexe
  • Limitations du contrôle AJAX
  • Pas de possibilités Multitouch
  • Pas de transformation WPF (rotation, etc…)
  • Affiché par dessus tout (héritage du composant WebBrowser Win32)

Liens et informations utiles :

Tout d’abord réalisé dans le cadre d’un Proof of Concept par Marc Schweigert de Microsoft, un projet codeplex a été créée par Burcu Dogan et est disponible à cette adresse :
http://vewpf.codeplex.com/

Attention : cette solution ne fonctionne pas parfaitement sur un poste non configuré en langue En-US (problème de séparateurs utilisés pour les points transportés entre l’application et la page)

 

Solution 2 : Intégration du plugin 3D de Bing Maps

Bing Maps 3d Control

La solution d’intégration utilisant le plugin 3d de Bing Maps permet d’afficher le contrôle tel que celui affiché dans l’AJAX Bing Maps Control lors de l’utilisation en mode 3D.

On retrouve alors les fonctionnalités telles que les bâtiments 3d, les végétations, les reliefs ainsi que l’ensemble des possibilités de disposition et positionnement de la vue.

Avantages :

  • Solution utilisant la 3D et intégrable en WPF
  • Possibilité de l’API 3D
  • Possibilité d’affiché des éléments par dessus le contrôle
  • Support des transformations (Rotation…)
  • Support du Multitouch

Inconvénients :

  • Couche d’interop complexe
  • Prérequis matériel à considérer (le pluging 3d : carte graphique…)
  • Méthode non officiellement supportée par Microsoft

Liens et informations utiles :

La société InfoStrat a décidé de partager un projet codeplex simplifiant l’intégration du plugin 3d au sein de vos applications WPF.

InfoStrat.VE bing maps for WPF Le projet est disponible à l’adresse suivante :
 http://bingmapswpf.codeplex.com/

Je tiens réellement à remercier l’équipe d’InfoStrat car ils ont partagé toute la couche d’interopérabilité pour WPF et Surface et ils ont économisé du temps à nombre de développeurs, moi y compris sur ce coup là !

 

Solution 3 : Intégration du contrôle Bing Maps Silverlight via WebBrowser

Silverlight Bing Maps control

L’utilisation du contrôle Silverlight et l’interaction que l’on peut avoir avec ce dernier depuis l’application ne m’avait pas encore interpelé et c’est suite avec une discussion téléphonique que l’idée m’est venue.

J’ai donc voulu testé la faisabilité de cette solution et surtout m’assurer que technique c’était réalisable.

L’idée reste proche de celle utilisant le contrôle AJAX, mais elle utilise les possibilités d’interopérabilité entre JavaScript et Silverlight en intermédiaire.

L’exploitation du contrôle devient alors possible avec l’ensemble des fonctionnalités que l’on connait de Silverlight (Multitouch…).

Avantages :

  • Fluidité et possibilités du contrôle Bing Maps Silverlight
  • Gestion du Multitouch dans Silverlight
  • Intégration de contenu et expérience riche

Inconvénients :

  • Limitation du contrôle Silverlight
  • Couche d’interopérabilité moyennement complexe
  • Mauvaise intégration WPF (pas de rotation, affiché devant tout…)

Liens et informations utiles :

Je publierai donc un billet dédié à cette solution d’interopérabilité où très justement j’expliquerai comment mettre celle-ci en œuvre.

 

Solution 4 : Développement personnalisé d’un contrôle Full WPF

Microsoft .Net 4 Bing Maps

La dernière solution, de loin la plus complexe et la plus couteuse consiste à réaliser, ni plus ni moins, un contrôle spécifique WPF qui utilisera nativement les éléments disponibles du Framework pour afficher une carte.

Un contrôle Full-WPF permet en théorie de s’affranchir de toute limite des solutions précédentes mais puisqu’il n’existe pas un tel contrôle, cela devient particulièrement complexe à développer.

Ajouté à ce fait, la technologie utilisé pour le contrôle Silverlight, à savoir DeepZoom, n’est pas disponible pour WPF dans l’état actuel, ce qui obligera le développeur à redoubler d’effort pour fournir une application visuellement attractive.

Avantages :

  • Possibilités WPF non limités (Multitouch, richesse…)
  • Interaction complète

Inconvénients :

  • Difficulté de développement, difficulté de faisabilité
  • Coût et temps
  • Fiabilité et difficulté de mise en production

Liens et informations utiles :

J’avais commencé le développement d’une telle solution dans le cadre d’un développement pour la table Microsoft Surface.

Ce n’est pas impossible à réaliser, mais par contre c’est extrêmement chronophage et couteux. A considérer qu’en ultime solution.

 

Conclusions

Ce tour d’horizon des possibilités d’intégration de Bing Maps au sein d’applications lourdes WPF ou WinForm permet de cerner les points critiques de chaque solution et de choisir de manière pragmatique celle qui correspond le plus au besoin.

N’hésitez pas à laisser un message ou me contacter pour plus d’information et pour vous faire accompagner ou faire réaliser ce genre d’analyse pour vos applications.

Dans un billet qui arrivera plus tard, je présenterai la solution d’intégration et interopérabilité entre le contrôle Bing Maps Silverlight et l’application WPF.