Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

A travers des événements de partage de connaissance que l’on réalise au sein de Wygwam, j’ai choisi mon sujet de prédilection avec ici une présentation générale afin de sensibiliser chacun à la cartographie et plus particulièrement la cartographie interactive et l’usage de la géolocalisation.

Cartographie

Voici donc la présentation :

N’hésitez pas à me solliciter si vous avez des remarques par rapport à la présentation où si souhaitez que l’on discute du sujet en personne ou à distance.

La nouvelle version 7 de l’API AJAX ne manque pas d’amener des interrogations légitimes quant à l’évolution du contrôle AJAX et plus généralement de la plateforme Bing Maps for Enterprise.

Bing Maps évolution de la plateforme et précisions - Bing Maps AJAX v7

Lors des Bing Maps Days, événement organisé par Microsoft et dont j’ai fais le résumé dans ce précédent billet, nous avons pu échanger avec l’équipe représentée notamment par Marie Chenut, Tony Young ou encore Johannes Kebeck.

 

Annonce de la nouvelle version 7 de l’API AJAX

Microsoft a annoncé jeudi 18 novembre 2010 la version 7.0 de l’API AJAX à travers son blog officiel :

http://www.bing.com/community/site_blogs/b/maps/archive/2010/11/18/
introducing-the-ajax-v7-control.aspx

Le changement était également introduit à travers un autre billet présentant la nouvelle version du portail Bing Maps disponible ici : http://www.bing.com/community/site_blogs/b/maps/archive/2010/11/18/
announcing-the-new-bing-maps-site-with-a-redesigned-left_2d00_rail-and-broader-access-to-map-apps-_2600_-streetside.aspx

Microsoft, en France et en Europe, a organisé des événements regroupant partenaires et clients afin de communiquer sur les aspects techniques et fonctionnels de cette nouvelle version de l’API AJAX comme à propos de la plateforme plus généralement. Je propose à travers ce lien un résumé complet des présentations partenaires et des contenus techniques.

Bing Maps Days Présentation AJAX Silverlight et Bing Maps for Enterprise API

 

Support de la version 6.3

Microsoft n’annonce pas de date de fin de vie pour cette version de l’API et indique en supplément que si celle-ci devait être programmée, elle n’interviendrait pas avant 2 ans et que cette durée de 2 ans était véritablement une durée minimale.

Microsoft prévoit vraiment un support à long terme, très conscient de l’impact des modifications en profondeur effectué sur l’API AJAX. Bing Maps est une composante stratégique de Microsoft

La plateforme Bing Maps for Enterprise est un élément majeur dans la stratégie de Microsoft, ils n’hésiteront pas à y apporter tout le support nécessaire afin d’aider les entreprises à conserver leurs applications fonctionnelles ou en tout cas à minimiser l’impact des modifications si celles-ci s’avéraient nécessaires après plusieurs années.

 

Compatibilité et maintenance des applicatifs

Les questions de compatibilité sont forcément importantes et nombreuses à la vue des modifications impliquées par la version 7.

Alors fondamentalement quels sont ces changements et quel est l’impact dans les développements. Ici une liste qui classe par impact et type ces derniers :

  • Evolution du modèle objet JavaScript de l’APIModèle objet javascript et extension de Bing Maps AJAX

La modification complète des espaces de nom, classes, propriétés et méthodes bref de l’API dans son ensemble ont un impact important en termes de code.

Cependant, il garantit une meilleure évolutivité et compatibilité en renforçant les performances mais propose également de grandes possibilités en termes d’extension, j’y reviendrai en détails dans de prochains articles.

  • Fonctionnalités retirées

Dans cette version 7 actuelle, on retrouve quelques fonctionnalités qui ont été supprimées ou modifiées en accord avec la stratégie d’extension de leur API.

Ainsi, le printing est modifié ou encore on retrouve le clustering client qui n’est pas directement intégré nativement et nécessitera du code personnalisé. Ces fonctionnalités manquantes ou modifiées pourront être ajoutées/modifiées en tirant partie des possibilités d’extension de l’API précédemment citées.

  • Appel aux méthodes des Web Services

L’ensemble des méthodes qui effectuaient un appel aux services de la plateforme Bing Maps a été retiré pour laisser place à un modèle plus simple laissant la main à l’utilisateur pour effectuer des appels directs aux services REST.

  • Authentification clienteAuthentification cliente de Bing Maps AJAX - Ajax authentication client-side

Ce point prête à réflexion car pour nombre d’utilisateurs de l’API, la gestion de l’authentification n’était pas réalisée et même le fonctionnement de l’API et le système de Microsoft a évolué aux fils des années, sans véritablement être très clairement fixé.

En version 6.3 pour authentifier le site utilisant, il était nécessaire de spécifier la clé en utilisant la méthode SetCredentials de la classe VEMap.

En version 7, il suffit de spécifier cette clé dans le chargement et l’initialisation du contrôle comme suit :

var map = new Microsoft.Maps.Map(
    document.getElementById("mapContainer"),
    { credentials: "Your Bing Maps Key" }
);

Au final dans un contexte d’utilisation commerciale, cette authentification n’est pas fondamentalement modifiée car elle existait déjà et reposée sur le même fonctionnement, seule la méthode de déclaration change.

 

Dans la mesure où la version 6.3 est maintenue et supportée par Microsoft, la maintenance de vos applications ne diffère pas cependant il peut être important de déjà considérer la migration et donc la modification de vos scripts/Frameworks/composants ou de vos applications complètes vers la nouvelle version 7 pour vos prochains projets.

 

Choix technique et préconisations

Ce changement nécessaire dans l’API s’inscrit dans une logique d’évolution de la plateforme et cette nouvelle version va permettre aux équipes de s’appuyer sur ce contrôle pour tirer au mieux partie des nouvelles fonctionnalités d’HTML5 et des capacités toujours améliorées des navigateurs.

Preconisation usage javascript ou silverlight pour Bing Maps Une rapide analyse peut nous indiquer que les récents débats autour du plugin Silverlight et de son utilité pour les prochaines années peuvent amener à penser, comme on peut le voir ici avec l’API Bing Maps, à ce que son intérêt soit réduit à quelques points techniques limités et à des simplifications de développement qui n’en sont pas vraiment.

Les deux contrôles ont le mérite d’exister et ces derniers se complètent pour répondre au maximum de scenarios.

En clair ici, ce contrôle AJAX en nouvelle version souligne la volonté de Microsoft de continuer de miser sur les technologies standards du web sans vouloir imposer sans cesse le plugin Silverlight.

  Utilisation Bing Maps AJAX controle et REST choisir

Actuellement, pour Bing Maps, la solution à privilégier est très clairement celle de l’utilisation de l’API AJAX couplée à celle des REST Web Services. C’est le discours tenu dans la session technique de Johannes Kebeck, c’est également mon avis.

Plusieurs raisons à cela :

  • Compatibilité multiplateforme et multi-navigateurs + support HTML5
  • Possibilité d’extension du modèle objet utilisé (prototype-based)
  • Capitalisation de connaissance et réutilisabilité

On pourrait trouver bien d’autres raisons qui justifieraient ce point de vue, et d’autres qui contrediraient parfaitement en favorisant l’utilisation du contrôle Silverlight. Comme dans tout projet, il n’existe pas de solution simple et à chaque besoin, sa solution adaptée.

Autrement dit, il faut très clairement estimé le besoin et les solutions techniques que l’on a, les avantages et inconvénients de ces dernières.

Il y aura ainsi des cas d’utilisation où utiliser AJAX sera le choix le plus judicieux, et inversement où retenir Silverlight sera plus pertinent. C’est d’ailleurs pour cette raison que Microsoft continue de supporter activement les deux contrôles.

 

Stratégie et solutions pour une migration soupleMigration 6.3 a 7 BingMaps AJAX

Il existe plusieurs solutions possibles permettant de minimiser l’effort de modification des scripts existants.

La liste de ces solutions n’est pas exhaustive, mais parmi celles-ci on peut retrouver :

  •  Migration partielle des scripts :

En utilisant cette solution, on peut tout à fait envisager de modifier, par exemple, les requêtes de géocodage, de calcul d’itinéraire de manière à appeler les REST Web Services tout en conservant les traitements liés au contrôle en lui-même.

Cette migration partielle permets d’amortir le coût de développement ou de migration à terme à travers plusieurs projets ou plusieurs évolutions du projet tout en garantissant un résultat final concluant.

  • Définition d’un script de compatibilité (notion de stub)Bing Maps retrocompabilité v6.3 à 7 - retrocompatibility javascript Bing Maps API

Cette solution plus complexe à réaliser, proposée suite à une discussion avec mon collègue Aurélien Verla, autrement plus appréciable dans un scénario d’utilisation multiple, elle consiste à réaliser un script à qui on va déléguer le “mapping” des différentes méthodes de l’ancienne API vers celles proposées dans la nouvelle version ou l’appel aux REST Web Services dédiés.

De cette manière, il suffit de modifier la référence au script du contrôle Bing Maps AJAX et d’ajouter la référence à ce simple fichier. L’ensemble du code reste inchangé mais les appels aux méthodes sont réalisés à travers la nouvelle API qui joue le rôle d’un pseudo-proxy d’appel.

L’intérêt est double car on retrouve alors tous les avantages apportés par la nouvelle plateforme en termes de performances ou support navigateur tout en minimisant l’effort de développement.

 

Comme indiqué plus tôt, ces quelques solutions (il en existe d’autres) sont à considérer et à adapter selon le besoin.

 

Avenir de la version 7

Ce lancement de la nouvelle version 7 du contrôle AJAX de la plateforme Bing Maps va permettre de proposer un ensemble cohérent et évolutif.

Microsoft annonce également qu’une prochaine version devrait arriver au courant de Décembre 2010 pour ajouter quelques fonctionnalités manquantes ou suggérées par les clients et qu’ils estiment pouvoir intégrer raisonnablement en accord avec la stratégie avec cette version.

D’un point de vue des projets communautaires, il devrait y avoir des initiatives permettant de simplifier les développements et de fournir les codes usuels à la manière de script d’extension de l’API. Ceci serait alors un équivalent de ce que tout à chacun peut réaliser dans son framework d’entreprise pour cette brique Bing Maps.Evolution de l'API Bing Maps AJAX v7

 

Conclusions

Cette nouvelle version 7 implique des changements profonds de nos développements qui peuvent être minimisés en utilisant les techniques adéquates.

Elle n’est pas sans impact mais Microsoft est conscient des modifications, des impacts et d’expérience, ils ont toujours maximisé avec beaucoup de considération cette rétrocompatibilité et le support de la plateforme comme une composant très importante. C’est d’ailleurs un des points différenciateurs de la concurrence.

Aussi, et dans l’architecture et la conception même de projet, il faut rappeler que dans de nombreux cas, le développement de la couche présentation ici effectué en client-side (JavaScript) doit intégré le fait qu’il s’agit d’une couche pouvant être amenée à évoluer ou être remplacée. Il est donc important d’envisager ce point dans l’architecture logicielle retenue et de prévoir son évolution.

Encore une fois, il y a de forte chance pour que Microsoft et la communauté accompagnent la migration à travers des outils et Frameworks dédiés dans le but de simplifier cette opération.

Enfin, rappelons également que Microsoft et plus particulièrement pour nous Français, l’équipe Bing Maps France et Europe restent mobilisés et accessibles pour vous aider dans vos décisions ou pour vous informer sur la plateforme.

Organisé par Microsoft et plus particulièrement l’équipe Bing Maps, cet événement propose une présentation exhaustive de la plateforme Bing Maps for Enterprise tant à destination des décideurs qu’à des profils techniques.

Bing Maps Days Event conferences et presentation Microsoft

Cet événement s’est déroulé sur 2 jours invitant le premier jour les partenaires de Microsoft et le second jour davantage de clients finaux.

 

Les matinées : décideursMicrosoft le campus Bing Maps Days event

Cette matinée a permis une présentation fonctionnelle et à destination des décideurs de la part de Microsoft par l’intermédiaire de Marie Chenut afin de présenter la plateforme dans ses fonctionnalités, ses nouveautés, ses modes de licence, son prix, le support, la qualité… 

En clair, une présentation très complète permettant de découvrir ou redécouvrir l’offre autour de la cartographie de Microsoft.

A travers ces matinées, on a pu assisté à de nombreux témoignages de la part des clients ou partenaires qui nous ont fait la présentation de leur réalisation.

Dans l’ordre de présentation, ci-après, les sociétés qui ont témoigné leur utilisation de la plateforme Bing Maps.

 

  • Itelios

Itelios logo presentation

En présentant notamment leur application présentée au concours Microsoft pour Windows Phone ainsi que les applications réalisées dans le cadre des campagnes de communication de MSN, Itelios a montré des scénarii d’utilisation intéressant.

quicksilver itelios application  Etremarin.fr itelios presentation

Ces derniers des usages sur Windows Phone 7 ou des applications Web intégrant au passage la technologie Azure pour l’hébergement des données et des applications.

 

  • Daxium

Daxium presentation

Daxium est une société éditrice nous a fait la démonstration de leur solution appelée PictBase déclinée en version mobile, desktop et Saas qui peut être utilisée dans des cas d’utilisation de report de graffitis, de déclaration de PV.

pictbase daxium presentation

Une solution logicielle permettant de composer vos applications simplement tout en intégrant Bing Maps dans ses fonctionnalités de Web Services de geocodage, de géocodage inverse, d’imagerie ou d’itinéraire ou directement à travers le Map Control.

 

  • Masternaut

Masternaut logo presentation

Leader européen dans les applications de suivi de flotte, Masternaut a réalisé une démonstration en direct permettant de suivre avec intelligence certains véhicules et de retrouver des informations sur la conduite, sur les trajets et les délais.

Utilisant Bing Maps pour l’affichage des informations mais aussi pour calculer les itinéraires dans l’application. On retrouve notamment des possibilités de geofencing permettant de suivre l’évolution de la flotte et les actions liées.

Masternaut presensation

 

  • Orange

A travers leur portail Orange, mais aussi Voilà, 118 712 et bien d’autres portails recueillant énormément de visiteurs mensuels avec toutes les problématiques de charge mais aussi de quantité de données.

L’intégration à travers les Map Control de la plateforme Bing Maps pour apporter de l’information géolocalisée sur le portail ainsi que des fonctionnalités d’itinéraire.

Orange 118712 portail presentation

 

  • Cdiscount

Cdiscount presentation

Accompagné par un partenaire, Cdiscount s’est appuyé sur Bing Maps pour apporter une aide à la décision pour le choix de la livraison dans les points relais récemment ajoutés dans les magasins du Groupe Casino.

Cdiscount ajoute une mode de livraison qui connait un grand succès. Le site propose désormais ce mode qui combiné à une cartographie interactive, permets de sélectionner son point de retrait adapté en fonction de la distance et du type de .

 

  • Pericles

Pericles Logo

Une démonstration de qualité sur un produit bien intégré à destination des acteurs du marché immobilier, une bien jolie implémentation d’une base de données très fournie permettant d’obtenir de la géo business intelligence (Spatial BI) très riche à travers l’application nommé “L’observatoire immobilier”.

 

  • RTE Technologies

RTE Technologies logo presentation

Autre société spécialisée dans le suivi d’élément (flotte y compris) proposant une application lourde intégrant de l’intelligence pour le suivi de ces éléments avec des fonctionnalités de

RTE Technologies Presentation

De nombreux cas clients utilisant Bing Maps dans des cas d’usages réellement utiles et exploitables dès à présent.

 

Les après-midi : techniques et développeurs

Johannes Kebeck, comme à son habitude, nous a présenté la plateforme sous un angle beaucoup plus technique en abordant notamment les nouveautés de la nouvelle version 7 de l’API AJAX.

Bing Maps vue générale de la plateforme platform overview

Entre quelques informations sur les prochaines versions, Johannes nous présente  principalement comment utiliser l’API dans son intégralité et notamment à travers des cas concrets intégrant la nouvelle version du contrôle AJAX, du contrôle Silverlight et l’utilisation de Windows Azure.

Les slides de présentation seront très prochainement disponibles et je ne manquerai pas de les disposer ici afin de compléter ce billet avec ces éléments et bien d’autres liens utiles.

 

Conclusions sur l’événement

Avec une population très variée sur les 2 jours, Microsoft, et l’équipe Bing Maps plus précisément, a réussi à regrouper de nombreuses personnes autour d’un événement d’information pour les 2 populations.

Microsoft a annoncé des prochains événements auxquels je ne manquerai pas de participer (en tant que spectateur tout comme en tant que speaker) et de vous tenir informer.

En définitive, un événement intéressant qui permets de communiquer sur les nouveautés et de revoir les personnes qui sont derrière la plateforme Bing Maps for Enterprise, ces dernières qui donnent une dimension humaine en plus d’un support de qualité.

Après plusieurs années en version 6 et au fil des versions mineures jusqu’à la version 6.3, Microsoft annonce et propose la version 7 qui apporte de nombreuses améliorations et de multiples changements dans les développements.

Bing Maps for Enterprise v7 - Découverte de la nouvelle version 7 de l'API Bing Maps

Présentation

La version 6.3 de l’API Bing Maps, arrivée en juin 2010, laisse place à une nouvelle version 7 (version majeure) qui se veut résolument axée sur les performances et sur un réel remaniement de la plateforme.

Ces améliorations se traduisent par des tailles de scripts bien plus faibles, des performances accrues dans le traitement de chaque méthode et au final une API modifié en profondeur afin de supprimer les traces historiques de Virtual Earth en réorganisant et renommant avec beaucoup de rigueur les classes et espaces de noms associés.

Vous pouvez dès à présent apercevoir les changements notoires en termes d’utilisation et d’affichage en vous rendant sur le portail Bing Maps dédié et amélioré, comportant de nombreuses fonctionnalités en vous rendant sur l’adresse (EN-US) : http://www.bing.com/maps/?mkt=en-us

Bing Maps v7 API get directions trafic restaurants  

Nouveautés de la plateforme

Alors sur ce point, peu de nouveautés fonctionnelles mais des nouveautés techniques à foison et un profond changement qui va à nouveau permettre à la plateforme de s’appuyer sur ce socle pour les prochains mois à venir.

Au niveau des nouveautés techniques autres que les gains en performances pures, on peut noter :

  • Changement complet des espaces de noms et classes

Terminé les préfixes de “VE” sur les classe (ex: VEMap, VEShape…), place maintenant à un véritable espace de nom dédié : Microsoft.Maps avec des classes simplifiées (ex: Microsoft.Maps.Map, …) et un ensemble revu de méthodes.

Ce changement permets notamment de garantir une compatibilité forte avec d’autres frameworks (jQuery ou autre…) mais aussi vos propres développements.

Il est à noter qu’on avait alors jamais noté un tel changement depuis la version 3, mais Microsoft, comme à leur habitude conserveront la version courante 6.3 encore active et disponible pendant une période importante en même temps que cette v7.

 

  • Suppression des méthodes d’appels au Web Services

La recherche de proximité, le calcul d’itinéraire ou encore le géocodage nécessite désormais l’utilisation des REST Web Services.

Au passage ce point permettra de mieux comprendre le système de requêtes/transactions associées à l’utilisation du contrôle et des méthodes riches faisant appel au service.

Bing Maps for Enterprise presentation de la plateforme general avantages et inconvenients overview  

  • Nouveau style de carte et intégration améliorée des vues obliques (Bird’s eye view)

Récemment introduit (juillet 2010), les nouveaux fond de carte affichant l’information en style “Road” sont maintenant disponibles dans l’API grand public même s’il reste possible d’utiliser l’ancien style jusque le 30 avril 2011.

Ce nouveau style de carte est également pleinement supporté au sein des Web Services d’imagerie.

Bing Maps new map style style de carte améliorée DNF NGT labels

Les vues obliques sont elles bien mieux intégrées au sein de l’expérience du contrôle qui propose désormais une fonctionnalité d’adaptation automatique du style de carte en fonction du niveau de zoom et de la couverture de la vue courante. Cette intégration améliorée va permettre à l’utilisateur finale de profiter de la meilleure expérience visuelle possible pour un lieu donné.

Lille Bing Maps bird's eye view vue oblique integration AJAX améliorée  New york Bing Maps vue oblique advanced améliorée AJAX

  

  • Support d’HTML5 et support mobileBing Maps mobile Windows Phone iPhone Android

Alors un des points majeurs dans cette nouvelle version concerne le support de l’HTML5 qui rapproche sensiblement l’expérience JavaScript de celle fournie au sein de Silverlight.

L’amélioration du spectre des navigateurs supportés est un point importantt avec notamment le support d’IE7, IE8 et maintenant IE9. Sont également supportés : Firefox 3.6 (sur PC et Mac), Chrome sur PC et Safari 5 sur Mac.

Enfin, point important, le support des navigateurs mobiles avec dans la liste officielle la plateforme iOS de l’iPhone 3GS et iPhone 4.

 

Bien évidemment, je ne manquerai pas de présenter ces éléments et quelques composants utiles dans les prochains billets.

 

Mon point de vue technique

Cette nouvelle version apporte son lot de nouveautés en terme de réorganisation sans vraiment faire avancer les choses pour autant d’un point de vue fonctionnelle.

Certes les performances sont améliorées et l’expérience globale améliorée, mais nombres de fonctionnalités parfaitement supportées en v6.3 le sont très mal en version 7. On peut prendre l’exemple simple de l’impression ou du clustering client natif.

Le changement fondamental dans l’API a des impacts à plusieurs niveaux et m’invite pour la première fois à me poser la question de la pérennité des développements réalisés avec la plateforme. C’est la première fois en plus de 5 ans que j’utilise la plateforme, que je rencontre un tel changement !

La capitalisation concernant l’apprentissage et la connaissance des méthodes et du détail de chacune d’entre elles n’est pas utile dans le cas de ce changement de version majeure, cela peut décevoir ceux qui en ont fait le choix mais il faut relativiser.

Dans tous les cas, cette nouvelle version 7 indique clairement la voie choisie par Microsoft et la communauté ne manquera pas d’échanger avec les équipes et de mettre à jour les différents projets Open-Source afin de profiter de la richesse et puissance du nouveau contrôle.

 

Conclusions et la suite

Nul doute que Microsoft va s’empresser de venir combler les quelques fonctionnalités manquantes ou d’améliorer celle qui présentent quelques dysfonctionnements mineurs.

Cette nouvelle version a clairement pour objectif de renforcer la version AJAX du contrôle de cartographie fournit dans la plateforme Bing Maps for Enterprise, et tous les changements qu’elle introduit sont d’une certaine façon un changement nécessaire.

Une fois n’est pas coutume, et comme c’est depuis plusieurs années maintenant que je fais du SharePoint, j’en profite pour partager avec vous une astuce utilisant l’inclusion conditionnelle de script et contenu au sein de SharePoint 2010.

Ici, on souhaite cacher le ruban de SharePoint en mode anonyme ce qui peut s’avérer être très utile dans le cadre d’un site de publication dans un contexte WCM.

SharePoint Foundation 2010 and SharePoint Server : cacher le ruban en injectant du script en conditionnel

Evidemment, cet article répond à un cas très précis qui peut facilement être généralisé à de multiples usages.

 

A travers ce court billet, nous allons aborder deux approches :

  • La première utilisant un Delegate Control qui inclut le script masquant le ruban en code-behind
  • La seconde implique l’utilisation des contrôles SPSecurityTrimmedControl pour inclure du contenu de manière conditionnelle et c’est clairement celle ici abordée et à proposer pour un profil designer et un usage simple

 

Approche 1 : Delegate control

L’idée relativement simple consiste à utiliser un DelegateControl qui au moment du OnLoad vérifie si l’utilisateur courant est authentifié et inclure dans le cas contraire le script qui va se charger de masquer le ruban.

Pour le détail complet, veuillez vous rendre sur le site suivant :

http://articles.consultpoint.net/Pages/Using-Delegate-Controls.aspx

En très simplifié, on définit un DelegateControl qui sera utilisé dans la MasterPage et qui va inclure le script si l’utilisateur n’est pas authentifié à travers le code-behind.

protected void Page_Load(object sender, EventArgs e)
{
    if (SPContext.Current.Web.CurrentUser == null)
    {
        string scriptfile = 
"/_controltemplates/SPRibbonVisibility/RibbonVisibility.js"; ScriptManager.RegisterClientScriptInclude(this, typeof(RibbonVisibilityControl), "SPRibbonVisibility", scriptfile); } }

Il serait par ailleurs recommandé d’effectuer l’opération inverse, à savoir, en cas d’authentification, inclure les scripts affichant le menu plutôt que d’effectuer l’inverse. Voir même de remplacer le contrôle en proposant un DelegateControl dédié à l’affichage de ce menu uniquement dans des cas authentifié.

 

Approche 2 : Utilisation du SPSecurityTrimmedControl

La seconde approche n’implique pas de développement de DelegateControl ni de définition de Feature ce qui peut dans certains cas se révéler très intéressant.

Elle utilise un contrôle de type SPSecurityTrimmedControl qui permet d’injecter du contenu HTML de manière conditionnel en fonction du niveau de permissions de l’utilisateur en cours.

Ainsi, si on se base sur l’exemple décrit plus tôt, on peut tout à fait modifier le script RibbonVisibility.js comme suit afin d’afficher l’élément caché en CSS :

$(document).ready(function () {
    $("#s4-ribbonrow").show();
});

Ensuite, il suffit de référencer le script uniquement pour les utilisateurs authentifiés ayant des droits de vue sur le web courant, pour cela, on peut utiliser la déclaration suivante mettant en œuvre la propriété suivante : AuthenticationRestrictions :

<SharePoint:SPSecurityTrimmedControl 
ID="SPSecurityTrimmedControlRibbon" runat="server" AuthenticationRestrictions="AuthenticatedUsersOnly"> <script src="/_layouts/Sample.Masters/Scripts/jQuery.ribbonVisibility.js" type="text/javascript"></script> </SharePoint:SPSecurityTrimmedControl>

De cette manière, le script n’est inclus que pour les utilisateurs authentifiés et ayant les permissions de vue, ce qui dans le cas d’un site de publication WCM, implique que pour les utilisateurs anonymes aucun script inutile est chargé.

Une autre déclaration possible pourrait être la suivante en utilisant la propriété PermissionsString beaucoup plus granulaire en prenant en compte les permissions sur les éléments tel que le web courant :

<SharePoint:SPSecurityTrimmedControl ID="SPSecurityTrimmedControlRibbon" 
                                        runat="server" 
                                        PermissionsString="Open">
    <script src="/_layouts/Sample.Masters/Scripts/jQuery.ribbonVisibility.js" 
            type="text/javascript"></script>
</SharePoint:SPSecurityTrimmedControl> 

 

UPDATE :

Comme Renaud me le faisait remarquer, on peut également dans le cas d’exemple mis en œuvre ici uniquement, utiliser habilement le SPSecurityTrimmedControl et directement placer le contrôle Ribbon dans le contenu à insérer.

D’ailleurs, il existe un projet dédié à l’administration de l’affichage de ce ruban à l’adresse suivante : http://spribbonvisibility.codeplex.com/

 

Conclusions

Dans ce cas d’exemple, les deux solutions sont utilisables et c’est véritablement en fonction des besoins et des contraintes de projet que l’on choisit une solution plutôt que l’autre.

Le profil ayant à charge de réaliser ce type de manipulation est également à considérer, en effet, il devient relativement plus complexe de demander de réaliser et définir un DelegateControl pour SharePoint de la part d’une ressource au profil davantage Designer/Intégrateur que développeur SharePoint, même si la tâche n’est pas complexe en soit, elle implique d’avoir à saisir les différents éléments liés au déploiement, aux systèmes de Features de SharePoint et bien d’autres problématiques de composants.

En bref, il faut très clairement adapter la solution en fonction de ces paramètres qui ne sont pour la plupart du temps, pas uniquement liés au contexte technique.

A travers cette dernière partie, on retrouve le développement associée à l’application lourde WPF ou WinForm qui suit logiquement la partie développement JavaScript disponible à travers ces liens :

Bing Maps for Enterprise API WPF Winform integration Silverlight interoperabilite

Interaction de l’application lourde vers Silverlight

Afin d’agir sur l’application Silverlight depuis l’application lourde, on utilise les possibilité d’invoquer du script client à travers le contrôle WebBrowser utilisé.

Une des méthodes que nous ajoutons à la fenêtre principale de notre application a pour but d’ajouter du contenu en utilisant l’ensemble du processus décrit par les méthodes précédemment présentées.

Voici le code associé qui permets de déclencher la méthode addContent() :

private void btnAddContent_Click(object sender, RoutedEventArgs e)
{
    this.browser.InvokeScript("addContent", "45|3#");
}

On utilise directement le contrôle et la méthode InvokeScript() afin d’appeler la méthode JavaScript addContent() en lui passant les paramètres indiqués, cette méthode appellera par la suite la méthode du contrôle Silverlight.

Ainsi après avoir cliqué sur le bouton sur lequel est associé cet événement, on observe l’ajout de la punaise comme souhaité.

On vient alors de mettre en œuvre la communication depuis l’application lourde vers l’application Silverlight.

 

Interaction de l’application Silverlight et l’application lourde

L’ensemble des éléments qui seront exposés et accessible à travers le code JavaScript sont regroupés à travers un classe WindowExternalHelper dédiée à l’interopérabilité.

Cette classe propose un constructeur qui prend en paramètre la référence à la fenêtre principale de l’application lourde et qui initialise une variable de cette même classe afin d’interagir avec ce composant par la suite :

public WindowExternalHelper(MainWindow main)
{
    this.main = main;
} 

On ajoute également à cette classe, la méthode DisplayMessageBox() qui est appelée à travers le code JavaScript comme vu précédemment :

// Sample interop method
public void DisplayMessageBox(string message)
{
    this.main.ShowMessage(message);
}

Dans le code associé à l’événement OnLoad() de l’application lourde, on établit le code suivant qui s’occupe de référencer l’objet pour le code client tout en initialisant correctement cet objet :

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    // initialize the helper
    helper = new WindowExternalHelper(this);

    this.browser.ObjectForScripting = helper;
    this.browser.Navigate("http://localhost:48695/SLClientMapsSimpleTestPage.aspx");
}

On remarque l’utilisation de la propriété ObjectForScripting qui permet de spécifier une référence vers un objet que l’on souhaite rendre accessible à travers le code JavaScript.

Au final, lorsque l’utilisateur va cliquer sur la punaise ajouter suite au clic déclenchant la méthode addContent(), une fenêtre d’information de l’application lourde va s’ouvrir et afficher les informations issus du code client.

On vient ici de mettre en œuvre la communication depuis l’application Silverlight vers l’application lourde.

 

Limitations techniques

Cette technique employant un composant de type WebBrowser, on observe des limitations en termes d’intégration avec l’application lourde WPF.

Le rendu du contrôle WebBrowser n’est pas modifiable et le contenu de ce dernier s’affichera au dessus de tout quoi qu’il arrive. Les modifications de formes, les transformations et autres effets sur le contrôle ne seront pas appliqués au contenu ce qui peut être problématique.

 

Solution alternative pour l’intégration d’un browser en WPF

Une solution plus hétéroclite existe et consiste à utiliser le contrôle issu du projet Chromium afin d’obtenir un objet de type WebBrowser alternatif et qui supporte tout à fait les manipulations WPF mais également l’invocation de script.

 

Conclusions

Au final, on est dans un scénario d’intégration forte entre WPF et Silverlight où les données, événements, résultats ou appels quelconques peuvent être déclenchés de part et d’autres à condition que les possibilités souhaitées soient ajoutées dans ces scénarios d’interopérabilité.

L’intérêt d’une telle solution est de proposer un contrôle interactif, accéléré graphiquement et proposant l’ensemble des fonctionnalités du contrôle Silverlight directement au sein d’une application lourde qui pourrait être d’une toute autre nature.

Si vous avez des difficultés à comprendre une partie de cet article, n’hésitez pas à me laisser un commentaire ou contactez moi directement par message.

 

Exemples et code

Retrouvez l’exemple de mise en oeuvre directement à travers ce lien :

http://www.boonaert.net/documents/VE/BingMapsInterop.rar

Cet article suit la partie concernant le développement Silverlight disponible à travers ce lien.

Le code JavaScript est réellement l’élément clé qui permet d’assurer la communication entre l’application Silverlight et l’application lourde.

Bing Maps for Enterprise API JavaScript et Silverlight interoperabilite

 

Gestion de l’événement de chargement du contrôle Silverlight

Dans la déclaration de l’objet HTML composé, on ajoute un événement simple qui est déclenché après le chargement du plugin et du contrôle :

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
    width="100%" height="100%">
    <param name="source" value="ClientBin/SLClientMapsSimple.xap" />
    <param name="onError" value="onSilverlightError" />
    <param name="onLoad" value="pluginLoaded" />
    . . .
</
object
>

Voici le code de la méthode qui est alors associée :

function pluginLoaded(sender) {
    slCtl = sender.getHost();
}

Cette méthode initialise donc la variable déclarée globalement, comme étant une référence de l’application Silverlight.

Interaction JavaScript vers Silverlight

Dès lors, il devient possible d’accéder au contenu déclaré comme des membres utilisables depuis le code JavaScript. C’est ce qu’on réalise à travers les 3 méthodes suivantes déclarées dans le code JavaScript de la page :

function changeToHybrid() {
    if (slCtl != null)
        slCtl.Content.mySLapp.SetMapHybrid();
}

function changeMapStyle(style) {
    if (slCtl != null)
        if(style != "")
            slCtl.Content.mySLapp.SetMapStyle(style);
}

function addContent(encodedContent) {
    if (slCtl != null)
        if (encodedContent != "")
            slCtl.Content.mySLapp.AddContent(encodedContent);
}

On remarque l’utilisation de la référence récupérée dans la méthode principale et l’utilisation du nom de l’objet déclaré en Silverlight : slCtl.Content.mySLapp.

 

Interaction Silverlight vers JavaScript

On retrouve la méthode wpfDisplayMessage() déclenchée depuis le code Silverlight. Voici le code associé :

function wpfDisplayMessage(message) {
    // Show Message in WPF application
    window.external.DisplayMessageBox(message);
}

Nous détaillerons dans l’implémentation dans l’application lourde, le contenu de cette méthode et la technique pour la rendre accessible.

 

La prochaine et dernière partie présentera le développement concernant l’application lourde WPF ou Winform.

Cet article suit la présentation technique disponible à travers ce lien.

Le développement Silverlight se résume à un scénario simple ici, on souhaite pouvoir ajouter des points provenant à des informations issues du code C# de l’application lourde.

Bing Maps for Enterprise API Silverlight interoperabilite

Pour prouver la bi-directivité de cette intégration, on prévoit également le scénario inverse et l’utilisateur pourra transporter les coordonnées du point cliqué en sélectionnant une punaise, vers l’application WPF ou Winform.

 

Dans le cadre de la démonstration de l’interopérabilité WPF/Winform vers Silverlight, on commence par enregistrer le contrôle et ajouter des attributs sur des méthodes identifiées.

Enregistrement du contrôle

Tout d’abord, au niveau de Silverlight, il faut enregistrer le composant applicatif Silverlight comme un “Scriptable Object” autrement dit, objet qui exposera des membres accessibles à travers le script client.

Pour réaliser cela, il suffit d’inscrire cette instruction dans un des événements adaptés (ici l’événement Loaded du Map Control) :

void map_Loaded(object sender, RoutedEventArgs e)
{
    // Register scriptable component 
    HtmlPage.RegisterScriptableObject("mySLapp", this);
}

Dans cette configuration, mon objet sera accessible dans le code client en utilisant le nom “mySLapp” au sein du JavaScript.

 

Définition des membres accessibles au sein du JavaScript

Dans ce scénario d’exemple, on souhaite proposer l’appel à deux méthodes Silverlight à travers le code JavaScript.

Une première méthode est donc créée, elle permets très simplement de changer le style de la carte sur le contrôle en cours :

[ScriptableMemberAttribute]
public void SetMapStyle(string style)
{
    switch (style)
    {
        case "road":
            this.map.Mode = new RoadMode();
            break;
        case "hybrid":
            this.map.Mode = new AerialMode(true);
            break;
        default:
            this.map.Mode = new AerialMode(false);
            break;
    }
}

On remarque dès lors, l’utilisation de l’attribut ScriptableMemberAttribute apposé sur la méthode, c’est ce dernier qui va déterminer le fait que cette méthode soit accessible.

On réalise la même opération pour une seconde méthode qui aura pour but d’ajouter du contenu sur le contrôle Bing Maps :

[ScriptableMemberAttribute]
public void AddContent(string encodedContent)
{
    var pins = encodedContent.Split('#');
    foreach (var curPinData in pins)
    {
        if (curPinData != string.Empty)
        {
            var pinData = curPinData.Split('|');
            if (pinData != null)
            {
                Pushpin currentPin = null;
                if (pinData.Any())
                {
                    currentPin = new Pushpin()
                    {
                        Location = new Location(
                            double.Parse(pinData[0]),
                            double.Parse(pinData[1])
                        )
                    };
                }

                if (currentPin != null)
                {
                    currentPin.MouseLeftButtonUp += 
                        new MouseButtonEventHandler(currentPin_MouseLeftButtonUp);
                    this.map.Children.Add(currentPin);
                }
            }
        }
    }
}

Ces deux méthodes pourront ainsi être appelées depuis le code client JavaScript qui sert très clairement d’interface entre le code C# (clientside) de l’application Silverlight, au code C# de l’application lourde qui héberge le WebBrowser.

 

Interaction Silverlight vers application lourde WPF/WinForm

Au sein de la méthode de création de la punaise précédemment présentée, on remarque l’association de l’événement sur le bouton de la souris :

currentPin.MouseLeftButtonUp += 
    new MouseButtonEventHandler(currentPin_MouseLeftButtonUp);

Voici le code associé qui permets d’interagir avec l’application lourde en invoquant tout simplement le code client (JavaScript) présent sur la page :

void currentPin_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    Location pinLocation = ((Pushpin)sender).Location;
    string message = 
        string.Format("Lat={0};Lng={1}", 
                        pinLocation.Latitude, 
                        pinLocation.Longitude);

    HtmlPage.Window.Invoke("wpfDisplayMessage", message);
}

La méthode Invoke() de la classe HtmlWindow propriété de l’objet HtmlPage de l’application Silverlight permet de déclencher du code JavaScript depuis l’application Silverlight.

Ici nous déclenchons la méthode JavaScript nommée wpfDisplayMessage() en lui passant en paramètre le message à afficher sous forme de chaîne de caractère. Nous verrons ci-dessous le contenu de la méthode JavaScript ici déclenchée.

Nous verrons la suite concernant le développement JavaScript.

D’abord proposé comme possible solution de développement et d’intégration lors d’une discussion téléphonique, l’exploitation de l’interopérabilité entre Silverlight et WPF peut être une solution simple pour ajouter le contrôle Bing Maps au sein d’une application lourde.

Microsoft Bing Maps for Enterprise integration WPF interoperability Silverlight via WebBrowser and proxies

J’ai choisi de décomposer cet article en plusieurs partie afin d’assurer une meilleure lisibilité pour chaque partie.

 

Rappels des solutions intégration et présentation

Lors du précédent article concernant l’intégration de la cartographie au sein d’application de type WPF ou WinForm, nous avons exposé plusieurs solutions dans le détails avec les avantages et inconvénients pour chacun d’entre elles, pour rappel, on peut proposer les solutions suivantes :

  • Intégration via WebBrowser utilisant le contrôle AJAX
  • Intégration via WebBrowser utilisant le contrôle Silverlight
  • Intégration via plugin 3d
  • Développement d’un contrôle spécifique full-WPF

Ici le cas présenté correspond au scénario d’intégration utilisant le composant WebBrowser pour héberger le contrôle Silverlight.

Cette solution permet notamment de bénéficier d’une interface riche et permissive en profitant des possibilités de Silverlight en termes de richesses et d’interaction.

 

Principe technique

Afin d’expliquer la technique utilisée, voici un schéma représentant les différentes couches ainsi que les échanges qui sont opérés.

Interoperabilite Silverlight WPF Winform Bing Maps for Enterprise Silverlight Control

On peut donc remarquer que l’interopérabilité intervient à plusieurs niveaux :

  • Couche d’interopérabilité entre Silverlight et JavaScript
  • Couche d’interopérabilité entre JavaScript et le code WPF/WinForm (C#)

Toute la particularité réside dans cette interopérabilité multi-niveaux et il faut également ajouter que le contrôle Silverlight pourrait tout à fait utiliser un Web Service qui serait hébergé sur un serveur dédié ou bien même embarqué dans l’application (scénario peut recommandé).

 

Mise en œuvre technique

Après avoir discuté de la théorie, venons-en à la pratique et réalisons un exemple simple d’intégration et d’interopérabilité multi-niveau du contrôle Bing Maps Silverlight au sein d’une application WPF, pour cela étudions les différentes couches d’interopérabilité individuellement.

  • Architecture de la solution

Afin de réaliser et comprendre cet exemple d’intégration, nous utilisons une structure de solution comprenant plusieurs projets dont voici le schéma :

Intéropérabilité Silverlight WPF Winform - Bing Maps for Enterprise - Architecture de la solution Visual Studio 2010

On distingue ainsi plusieurs projets :

  • SLClientMapSimple : projet Silverlight qui correspond à l’application qui sera chargée dans la page Web
  • WebFrontSample : projet d’application Web permettant de développer et exécuter l’application Silverlight
  • WPFClientSample : projet d’application lourde qui héberge le contrôle WebBrowser et qui contiendra en fin de compte, l’application web hébergeant le projet Silverlight

Cette arborescence est une proposition, il est à noter que l’on peut tout à fait retrouver une architecture différente mais dans l’immédiat, elle permets d’identifier les différentes parties applicatives.

 

On abordera les étapes de développement dans les articles suivants.

Pour la seule track session que je pouvais suivre lors de l’événement Navteq Directions 2010, j’ai choisi de me rendre sur un sujet qui m’intéresse énormément et qui a le vent en poupe concernant la Business Intelligence couplée à l’information spatiale.

navteq_banner

Les speakers

La session de présentation de la Geo BI était animée par Thomas Lejars, Sales Director chez Galigéo, société Française spécialiste reconnue dans le domaine de la Business Intelligence et plus particulièrement à propos de la Geo Business Intelligence.

Galigeo session Spatial Business Intelligence

Après avoir brièvement rappelé ce qu’était la Business Intelligence, Thomas nous a introduit l’intérêt de l’exploitation de la dimension spatiale au sein de la cartographie.

En fin de présentation, quelques questions ont été posées aux partenaires présents afin de présenter leurs visions et leurs solutions, comptant parmi les principaux fournisseur de solution de BI : Oracle, ESRI et Microsoft.

 

Un mot sur la Geo BI ou Spatial BI

La Géo Business Intelligence c’est très simplement de l’information riche, extraite de systèmes dédiés à laquelle on ajoute une information de positionnement géographique à laquelle s’ajoute l’environnement et le contexte géographique.

geo_bi

Il devient alors possible de retrouver de l’information en fonction de la proximité présenté sous formes de cartes statiques ou interactives.

 

Quelques exemples concrets

Les exemples d’application pullulent dans de nombreux domaines qu’il est possible de regrouper et où la Géo intelligence présente un réel intérêt.

On distingue ainsi les domaines suivants :

  • Gouvernemental : organisations, instituts gouvernementaux…
  • Commercial : territoire de vente, recherche de magasins, analyses d’impact sur le marché local
  • Transports : optimisation de tournée, suivi des flottes, information riche sur les parcours…
  • Assurance : exploitation et visualisation des informations de terrain, d’irrigation, de zones à risques…
  • Infrastructure : décision dans la mise en place de nouveau locaux, construction…

Thomas, à travers différents exemples concrets et retours d’expérience, réussit à nous faire prendre conscience de l’évolution des mentalités dans les sociétés qui utilisent la BI depuis des années avec justement ce besoin grandissant de combiner ces informations à la position géographique.

 

Présentation par les partenaires

La réponse aux questions posées par Thomas a laissé place à la présentation des solutions de chacun des acteurs en répondant aux 2 questions suivantes :

  • Pourquoi la géolocalisation des informations de Business Intelligence est-elle importante ? Pourquoi maintenant ?
  • Quels sont les réalisations les plus intéressantes que vous pouvez nous présenter pour illustrer le propos ?

Tous proposent la capacité de répondre en intégrant de nombreux paramètres et des possibilités de présentation à travers des interfaces dédiées qui ont bien évidemment été illustrées par des exemples complets et variés pour chacun des partenaires.

Partenaires cartographie ESRI oracle Microsoft     

Pistes à explorer

De nombreux domaines vont exploiter ces informations enrichies, restent à trouver des acteurs qui regroupent ces informations de qualité exploitable dans ce contexte.

La qualité de regroupement de l’ensemble de ces informations est un facteur déterminant et permets de prendre un réelle décision en tenant compte de tous les paramètres tels que la démographie (âge, revenu…) ou bien d’autres caractéristiques qu’il est possible de projeter au niveau d’une carte.

Pour les entreprises qui possèdent déjà ces informations où d’autres qui souhaitent afficher celles-ci directement sur une carte pour aider à la décision, l’outil cartographique et les données restent l’élément fondamentale pour une visualisation et une exploitation réelle.

 

Mon avis

Dans un contexte où la données prends toujours plus d’importance, il devient essentiel de la combiner avec le monde réel. Cette projection est réalisée en intégrant la cartographie et les informations connexes enrichissant les données cartographiques.

Au final, cela renforce la capacité d’analyse en vue de prise de décision qui s’appuient sur les outils de BI.

Après quelques semaines depuis l’événement, je propose une rapide analyse des quelques présentations auxquelles j’ai assisté.

Pour débuter la seconde journée de l’événement, Navteq propose une session plénière regroupant de nombreux professionnels clients ou partenaires tous concernés par le domaine de la cartographie.

Navteq Directions 2010 Session plénière et avenir de la cartographie

Le contenu des présentations ont été publiées sur leur site mais n’est pas publiquement accessible, cependant nombre de ces informations étaient d’ores et déjà accessibles en ligne à travers différentes sources.

Ici le but n’est pas de rendre disponible ces contenus privés mais le principal objectif est de partager autour de ces derniers afin de décrire les prochains axes prioritaires de Navteq et de connaître l’évolution qui sera rencontrée sur ce domaine spécifique.

Lors de cette session plénière et dans une salle remplie, ce sont succédés plusieurs speakers de qualité présentant respectivement leur domaine de compétence ou d’action avec une précision technique et un message clair et adapté pour les profils décisionnels.

 

Les prochains axes de la cartographie

Evolution de la cartographie Navteq MapTP

Parmi les domaines présentés sur le salon ou à travers la plénière, on peut distinguer plusieurs axes qui seront à coup sûr les priorités de Navteq et des autres acteurs du marché :

  • Meilleure expérience :
    Renforcer et enrichir l’expérience à travers l’exploitation de données de qualité est une priorité pour Navteq. Ainsi en utilisant les nouvelles technologies et techniques de traitement des données, Navteq peut proposer l’expérience la plus intégrée du marché.
  • Apporter de l’information utile et fiable :
    Navteq s’appuie sur une expérience forte en termes d’acquisition des données et sur un retour client lui permettant de connaître et répondre au mieux au besoin. Navteq choisit également d’investir dans les domaines qui font réellement la différence comme l’acquisition des données de trafic en temps réel ou l’intégration fiabilisée des données utilisateurs.
  • Proposer le bon outil au bon moment :
    Avec toujours plus de périphériques, c’est une course sans fin qui s’engage pour un développeur de périphérique (PND, Mobile App…), Navteq est depuis de nombreuses années, un facilitateur d’intégration et d’utilisation des ces données et s’entoure pour cela d’un éco-système de partenaire robustes pour répondre à l’ensemble des besoins.
  • Publicité géo référencée (Location Based Advertising) :
    Ce domaine regroupe à lui seul un pilier de ce que sera la cartographie dans les prochaines années. Très simplement, c’est diffuser de l’information locale aux bonnes personnes sélectionnées à partir de plusieurs critères mais surtout en fonction de la proximité.
    Navteq investit sur ce domaine depuis des années mais améliore sans cesse son offre à travers des produits comme Navteq LocationPoint Advertising dédié à cet utilisation.

 

Place à l’innovation

Navteq est le leader mondial de la donnée géographique et améliore sans cesse ses procédés d’acquisition ou d’exploitation.

  • Acquisition des données

Dans cette optique on peut dès à présent parler de ses voitures que certains pourraient trop rapidement associer aux “Google StreetView cars” mais qui sont en réalité bien plus évoluées avec notamment le système LIDAR embarqué sur chacun de ses véhicules.

Navteq Directions 2010 LIDAR Car image

Le systèmes LIDAR (Light Detection And Ranging) capture 1.3 millions de points par seconde ce qui permets d’obtenir la restitution du monde réel en trois dimensions au sein d’une interface dédiée qui n’est pour le moment pas disponible.

Cette information 3D est ensuite combinée à un système camera haute définition, à des équipements de mesures GPS très précis et une centrale inertielle (IMU : Inertial Measurement Units) qui rend alors possible la récupération d’une information plus que précise permettant de représenter les façades, lieux ou les caractéristiques particulières de terrain ou d’environnement.

Cette expérience et l’ensemble du processus d’acquisition entre dans ce qui est appelé Navteq True.

LIDAR

Navteq s’appuie également sur un éco-système riche qui lui permets d’acquérir les données pour des zones particulières afin de garantir la meilleure couverture peu importe la région ou pays concerné.

 

  • Traitement des données

L’acquisition des données intervient à travers plusieurs formes mais c’est près de 6 milliards de points qui sont traités chaque jour par Navteq au niveau mondial.

En Europe, ce sont 2 milliards de points qui sont analysés et processés chaque jour, un volume de données gigantesques qui permets de réaliser de nombreuses analyses en termes de statistiques ou d’habitude de déplacement.

imageA travers la présentation, le responsable du trafic et le responsable du contenu cartographique nous ont exposé des visualisations permettant de se rendre compte de la quantité d’information que cela représente ainsi qu’une vision en temps réel pour de nombreux cas d’exemple notamment l’environnement de Paris.

 

  • Visualisation des données

Avec une acquisition plus précise et plus riche, viens le point de la restitution sur l’écran. A ce jour, il n’existe pas encore de version 3D permettant de profiter de l’ensemble des informations capturées.

Cependant, cette information est d’ores et déjà utilisée notamment à travers leur nouvelle API dédiée qui devrait arriver en version accessible par les développeurs appelée JourneyView.

Je reviendrai dans le détail sur cette API lorsqu’elle sera publiquement communiquée mais ce qu’il faut noter, c’est que celle-ci utilise les données issues de LIDAR et propose notamment les vues en couches de profondeur (Z-Depth) permettant d’information sur la distance par rapport à la prise de vue.

Z-Depth sample LIDAR

 

  • Exploitation des données image

L’exploitation des données propose également des aspects innovants avec des utilisations qui résultent directement des tendances actuelles.

On retrouve par exemple, tout ce qui concerne l’environnement ou la gestion intelligente de l’énergie à bord d’un véhicule ou pour un itinéraire particulier.

L’idée principale de Navteq autour de l’acquisition de l’ensemble de ces données est de fournir un service permettant la considération de nombreux paramètres comme la hauteur ou le poids du véhicule, le type de motorisation…

Selon Navteq, l’utilisation d’un système d’assistance à la conduite (équipement de navigation GPS) devrait pouvoir permettre, en plus d’optimiser le temps de parcours, de réduire l’impact sur l’environnement et les rejets de CO² dans un ordre de 20%.

D’autres exploitation des données ont vu le jour et continue d’être amélioré au fil des années avec notamment la technologie ADAS (Advanced Driver Assistance System) qui permet d’obtenir une aide à la conduite et ajoute en sécurité en tenant compte d’une information enrichie.

 

  • Enrichir les données

L’information cartographique seule présente bien entendu un intérêt en soi, on peut ainsi retrouver la position géographique, l’altitude ou encore l’inclinaison du véhicule qui emprunterait cette même route.

Lorsque, par le même processus d’acquisition, on peut extraire des informations bien plus riches comme les hauteurs de ponts, les largeurs de voies ou encore les panneaux de signalisation, les marquages au sol ou la représentation réelle afin d’appuyer les technologies de guidage et offrir une expérience “naturelle”.Augmented reality

L’objectif final est de fournir une information directement exploitable avec une facilité de compréhension et un rendu adaptable pouvant aller à une représentation quasi identique de la réalité en présentant par exemple les modèles 3D de ponts ou voie de sortie.

Navteq Junction View Exemple de modele 3d de navigation

 

Mon ressenti sur les tendances

A travers ces évolutions qui approchent et améliorent le domaine de la cartographie, on remarque de nombreux usages qui vont pouvoir naître, ce domaine est réellement le lien manquant entre les données statistiques habituelles et le monde réelle.

La donnée cartographique est la clé d’une information plus riche et les nouveautés proposées par Navteq amène son lot d’idées sur lesquelles de nombreuses compagnies réfléchissent, voire travaillent déjà.

Navteq est sans conteste, le plus grand fournisseur de données cartographiques et propose une Road Map précise indiquant les axes d’investissement tout en continuant de garder ce qui fait la force de leur société, à savoir une service et des données de qualité.

Avec ces derniers mois bien chargés en nouveautés autour de la plateforme Bing Maps for Enterprise mais aussi au niveau du travail, Sébastien Warin et moi-même avons pris le temps de rédiger un article disponible dans le dossier Géolocalisation du Magazine Programmez n°134.

Programmez Magazine - Presse Bing Maps for Enterprise et Windows Azure - SQL Azure géolocalisation

Cet article (en page 42 puis suite page 91) vous propose de découvrir :

  • La plateforme Windows Azure et plus particulièrement l’offre SQL Azure avec une utilisation des types spatiaux et géométriques récemment ajoutés.
  • L’hébergement d’application dans Windows Azure
  • Le Bing Maps Silverlight Control utilisant le service hébergé
  • Les Bing Maps Application et le SDK dédié
    (déjà introduit à travers ce billet)

Programmez 134 Bing Maps Google Maps géolocalisation et Windows Phone - CouvertureJe vous laisse découvrir le reste du dossier géolocalisation et l’ensemble du magazine qui ce mois-ci se voit ajouter un supplément détachable qui traite de Windows Phone 7 et du développement sur cette plateforme.

Ici en aperçu : http://www.programmez.com/minimag.php

Organiser des événements est une chose, bien recevoir ses invités en est une autre et je dois dire qu’ici Navteq a clairement fait une très bonne impression.

Navtes Directions 2010

Assez brièvement, les tables étaient organisées de manière à regrouper les centres d’intérêts et les populations.

Après un bref discours d’introduction et de remerciements, c’est plus de 300 personnes qui ont été servies au petit soin le tout accompagné, dans la soirée, par un mini-orchestre jouant quelques morceaux.

Navteq Directions 2010 Gala Diner        Navteq Directions 2010 Gala Diner

Ce que je retiendrai de cette soirée, ce sont surtout ces discussions passionnées avec les gens présents à ma table. Partageant expériences, connaissances ou même avis, on a pu abordé des sujets variés qui dépassaient souvent l’aspect parfois trop commercial que l’on pourrait s’attendre à retrouver auprès de certains profils.

Navteq Directions 2010 Gala Diner

Bien qu’il ne soit pas le seul, il faut souligner le fait que Navteq sait recevoir et organiser des événements de qualité et regrouper de nombreuses personnes aux profils plus qu’intéressant.
 

Bientôt des retours sur les sessions plénières et sessions techniques.

L’événement Navteq regroupe de nombreuses sessions toutes intéressantes mais afin de combler les attentes des invités pendant les pauses et profiter pour échanger à propos des différents domaines, on retrouve un salon avec de nombreux exposants.

Navteq Directions 2010

Ainsi sur un salon regroupant plus de 20 exposants, j’ai eu la chance de discuter avec quelques partenaires autres que Navteq.

 

Mobitee

Mobitee réalité augmentée géolocalisationCette société propose un produit très complet qui permet d’obtenir des informations riches pour jouer au golf.

Mobitee fonctionnalités exemples réalité augmentée géolocalisation

Alors, je ne joue pas au golf, mais de ce que le responsable m’a présenté, on retrouve de très nombreuses options allant du conseil sur les équipements à utiliser, aux vues des parcours en passant par l’utilisation de la réalité augmentée pour aider le joueur.

 

Wikitude

Wikitude réalité augmentée géolocalisation

Grand gagnant européen du concours LBS organisé par Navteq en fin d’année dernière et dont les résultats ont été annoncé en mars 2010, la société Mobilizy propose plusieurs produits permettant de découvrir des informations riches en réalité augmentée ou d’obtenir une aide à la conduite sur le même principe.

Wikitude Drive sample image réalité augmentée géolocalisation 

Masternaut

image

Leader Européen de la géolocalisation et du suivi de flotte, cette société propose des solutions clés en main sur ces secteurs tout comme des possibilités de développement sur-mesure.

Masternaut explication géolocalisation 

Indra

image

Cette société basée en Espagne présentait des applications réalisées à la demande intégrant notamment de la cartographie. C’était également l’occasion de retrouver la table Surface de Microsoft sur lequel on a, chez Wygwam, l’habitude de réaliser des applications.

 

Geomer

geomer_logo

Cette société est spécialisée dans l’exploitation des données statistiques et l’intégration et exploitation de ces dernières en maitrisant les technologies de cartographie comme la plateforme ESRI.

 

PTV

PTV logo 

Spécialiste du complément de services basés sur les données cartographiques, cette société propose notamment des possibilités de génération d’itinéraire ou d’optimisation de tournées de livraison avec intégration de logique métier avancée et scénarii complexes.

 

Geoscape

Geoscape logo

Société qui fournit de nombreuses données géolocalisées permettant d’enrichir les applications dédiées, avec notamment des utilisations en autres dans le cadre du géomarketing et la distribution.

 

Coyote System

Coyote logo Société bien connue en France pour ses appareils embarqués intégrant une solution d’avertissement de radars divers, ici était présenté une de leurs dernières solutions intégrant les statistiques de trafic routier, des données de leur réseau Coyote (éclaireur…).

De bien sympathiques équipements et applications autour de ce réseau.


navteq_logo

Bien d’autres partenaires de Navteq étaient aussi présents, fournissant un complément de service à ceux offerts par Navteq ou tout simplement fournissant des données agrégées ou des expériences utilisateur totalement différentes en tirant partie des nouvelles technologies avec toujours, une idée d’utilisation professionnelle à la clé.

Evidemment la partie centrale consacrée à Navteq et ses nouveautés étaient également là pour nous rappeler qu’ils ont également de quoi répondre à nombre de besoins professionnels avec leur qualité habituelle.

Afin de partager avec le plus de personnes l’événement auquel je participe, je choisis de présenter cet événement sous plusieurs angles avec tout d’abord, l’habituelle introduction.

navteq_banner 

Organisateur et informations sur l’événement

Tout d’abord, avant de discuter de cet événement international, il est surement nécessaire pour nombre d’entre vous que j’introduise la société Navteq qui l’organise.

navteq_logo

Navteq est sans aucun doute, le plus gros fournisseur mondial de données cartographiques à destination des SIG comme des terminaux mobiles embarqués.

Rachetée en 2008 par Nokia, cette société ne cesse d’accroître la qualité de ses relevés, développe des technologies de pointe pour l’acquisition et noue des partenariats intéressants pour mettre au point différentes technologies et exploiter les données : Microsoft est un parfait exemple de collaboration ou même d’utilisation des données et des services de manière sous-jacente au sein de la plateforme Bing Maps for Enterprise.

Nul doute que les annonces réalisées lors de cet événement auront des impacts sur ce qui arrivera dans les mois / années à venir pour les partenaires et clients (ex: LIDAR, Geo services avancés…)

Cet événement se déroule sur 2 jours le lundi 27 et le mardi 28 septembre dans la ville de Francfort dans l’hôtel Steigenberger réservé pour cette occasion.

 

Programme de l’événement

Au niveau du programme, voici les différentes sessions qui pourront être suivies ainsi que les moments de pause qui permettront de rencontrer les nombreux partenaires ou clients utilisant les services et données de Navteq.

Lundi 27 Septembre 2010

From 14:00 Registration

17:00 NAVTEQ Technology Lounge opens

19:30 Gala Dinner

Mardi 28 septembre 2010

08:00 : Registration and Breakfast

09:00 - 10:30 : General Session
Welcome & Keynote
Executive Update
Market Trends and Dynamics


10:30 - 11:30 General Session
Advancing Innovation and Efficiency
The Experience Matters
Tomorrow's Experience with Today's Solutions


11:30 - 12:00 Coffee Break & Technology Lounge

12:00 - 12:45 General Session
Making the Advertising Model Relevant
Reducing Development Costs and Accelerating Revenue

12:45 - 14:00 Lunch & Technology Lounge

14:00 - 14:45 Business Intelligence - Why Add in Location?

14:45 - 15:15 Coffee Break & Technology Lounge

15:15 - 16:00 Using Location to Differentiate Mobile Apps

16:00 - 16:15 Coffee Break & Technology Lounge

16:15 - 17:00 Guest Speaker

17:00 - 17:30 Q&A and Closing Remarks

17:30 Closing Reception

Pour des raisons de contraintes horaires, je ne pourrai pas participer à l’ensemble des sessions, j’essaierai de récupérer ou au moins de consulter les contenus des sessions pour vous faire un retour et partager mon point de vue concernant les nouveautés présentées ou annoncées.

 

Points techniques et intérêts

Avec la présentation de Navteq, l’ensemble prend un peu plus de sens et l’intérêt d’un tel événement est presque induit.

En effet, si l’on considère de manière réaliste qu’il existe à ce jour, 2 très gros fournisseurs de données cartographiques dans le monde, Navteq étant le plus gros acteur du marché, il est plus qu’important de suivre ce que fait cette société et ce qu’elle prévoit de faire dans les mois à venir car c’est elle qui fournit les données à de nombreuses autres sociétés.

Les principaux axes technologiques ainsi que les dernières nouveautés en termes d’acquisition ou d’exploitation des données cartographiques seront présentées au grand public et aux partenaires.

 

La logistique pour un peu plus d’infos

Alors, oui, ça se passe en Allemagne à Francfort plus exactement.

francfort Je ne connais absolument pas cette ville et j’avoue que je n’aurai pas forcément la possibilité de la découvrir davantage. C’est bien dommage, c’est un peu mon plaisir quand je suis en déplacement, profiter un moment, au soir, pour découvrir les environs et les lieux à ne pas louper.

Déjà concernant le voyage, j’ai choisi l’option ferroviaire combinant TGV et ICE, une première pour moi, je n’avais jusque là jamais emprunté les lignes allemandes et je dois dire que je suis surpris de la qualité de ces trains.

Navteq Direction 2010 ICE trainRelativement silencieuse et rapide, assez confortable et bien spacieuse, ce ne sont pas les meilleurs trains du monde mais étant donné qu’ils réalisent les liaisons inter-villes, à comparer avec nos TER français, il y a une sérieuse différence !

Donc au total, environ 5h de trajet en passant par Bruxelles mais un choix conforté par la possibilité de se poser dans le train et de pouvoir rédiger cet article et ceux qui suivront sur le retour.

D’autres articles suivront concernant les démonstrations, les sessions et mon retour à propos de cet événement et les annonces effectuées.

- Rédigé depuis l’ICE 15

Après des mois d’inactivité autour du projet, j’ai décidé de mettre à jour le projet CodePlex VEJS afin d’inclure l’ensemble des nouveautés de la version 6.2 Refresh ainsi que la version 6.3.

Ce projet pour rappel permet d’obtenir une précieuse aide au développement en fournissant une Intellisense pour le contrôle Bing Maps AJAX au sein de Visual Studio 2008 et 2010.

Bing Maps JavaScript Intellisense Helper (Virtual Earth) v6.3

Téléchargement

Pour profiter de cette aide au développement, il suffit de télécharger le fichier JS contenant l’ensemble des éléments.

CodePlex VEJS Project Bing Maps AJAX helper

Le projet est disponible à cette adresse : http://vejs.codeplex.com/

Le dernier fichier combiné peut être récupéré dans l’archive en release : http://vejs.codeplex.com/releases/view/50518

 

Mises à jour

La mise à jour intègre donc des corrections de bugs mineurs de documentation, les nouveautés de la version 6.2 Refresh et la version 6.3.

On retrouve donc les méthodes :

  • Bing Maps AJAX Control v6.2 Refresh
    • VEMap.AddCustomLayer()
    • VEMap.HideBaseTileLayer()
    • VEMap.RemoveCustomLayer()
  • Bing Maps AJAX Control v6.3
    • VEMap.Search()
    • VEMap.Geocode()
    • La classe VESearchOptions
    • La classe VEGeocodeOptions
    • La mise à jour de la classe VEShape avec la propriété Draggable et les événements liés (ondrag, onenddrag, onstartdrag)

 

Utilisation

Afin de profiter de l’aide au sein de Visual Studio 2008 ou 2010, il faut tout simplement ajouter la référence au fichier dans vos fichiers de script comme suit :

/// 

L’aide devrait ensuite apparaître pour chacun des objets typés avec une information riche sur les méthodes et propriétés :

Bing Maps VEMap.Search() Intellisense

Une petite astuce utile consiste à insérer ce code pour s’affranchir de quelques limitations de Visual Studio sans impacter le code :

// WORKAROUND:
//  USE AT DESIGN TIME TO GET INTELLISENSE FOR A PAGE LEVEL map VARIABLE
var map;

if (typeof (DESIGN_TIME) == 'undefined')
{
    map = null;
}
else
{
    var map = new VEMap();
}

 

Améliorations et corrections

La construction de ce projet ainsi que la mise à jour peut contenir des petites erreurs, n’hésitez pas à me remonter celles-ci soit ici en commentaires, soit en utilisant les forums de discussion sur l’espace CodePlex dédié :

http://vejs.codeplex.com/Thread/List.aspx

En ce début de mois de juillet, j’ai reçu un mail communiquant la nouvelle que je partage avec vous maintenant après un peu de repos.

MVP Bing Maps for Enterprise Virtual Earth API

Je suis donc maintenant Microsoft Most Valuable Professional sur la plateforme Windows Live en tant que développeur et plus particulièrement spécialisé sur la plateforme Bing Maps for Enterprise.

 

MVP Bing Maps for Enterprise Windows Live Platform DevelopmentJ’utilise cette plateforme depuis aujourd’hui près de 5 ans (autrefois appelé Virtual Earth) et sur laquelle j’ai rédigé le premier livre mondial à destination des développeurs, décideurs et/ou curieux de ces technologies.

Je suis ravi de recevoir cette distinction qui récompense le partage de connaissance associé à une expertise technologique pointue.

Je profite de ce message pour remercier les personnes qui m’encouragent à toujours me fixer de nouveaux objectifs et qui m’aident à les atteindre à savoir mes proches avant tout, mais aussi mes collègues de Wygwam.
Je remercie également les équipes de Microsoft et Bing (Arnaud Gstach, Marie Chenut et Johannes Kebeck…) et bien d’autres communautaires et spécialistes Bing Maps avec qui c’est toujours un plaisir d’échanger.

 

Wygwam MVP Bing Maps for Enterprise Il y a 2 ans et demi je rentrais chez Wygwam avec la crainte de ne pas être à la hauteur, et une certaine peur d’intégrer cette équipe de furieux…

Des craintes bien vite effacées car accompagné de personnes passionnées et motivantes, on progresse bien vite.

Je ne saurai que vous recommander de ne pas hésiter à postuler si vous recherchez ce genre d’expérience et je vous encourage à effacer la crainte qui peut être vous freine un peu.

Et non, ce message n’est pas sponsorisé ! Je partage ma propre expérience :)

 

Alors, que dire de plus, bien entendu je vais continuer à partager, aider du mieux que je peux, bloguer et créer du contenu ou encore animer des sessions sur Bing Maps for Enterprise et sur des sujets qui me passionnent.

Depuis la version Beta de son portail Bing Maps, Microsoft fournit une multitude d’applications présentées et regroupées sous forme de galerie avec une offre qui ne fait que s’étoffer semaine après semaine.

Microsoft annonce dès à présent un nouvel SDK disponible en béta pour partager et publier des applications qui pourront s’ajouter à ces applications Bing Maps.

Développement Microsoft Bing Maps App SDK application intégration virtual earth

Présentation

La galerie d’application est celle qui permet de répertorier les applications disponibles pour les utilisateurs finaux et qui intègrent soit des fonctionnalités spécifiques, soit des données particulières issues des entreprises partenaires.

C’est ainsi que l’on retrouve des applications intégrant les données de Foursquare (réalisée par Earthware), Oddle Rentals, Global Action Atlas de National Geographic ou encore bien d’autres applications.

Bing Maps App SDK publisher

On retrouve aussi des applications issues et fournies par Microsoft comme les applications Photosynth, Distance Calculator, Bing Health Maps…

Bing Maps App SDK Bing

Ici, Microsoft souhaite devenir un hub à applications utilisant la cartographie, le portail devient encore plus alors un réel portail digne de ce nom en regroupant les informations de plusieurs provenances.

Bing Maps App Gallery

N’hésitez pas à tester ces applications directement par vous même en vous rendant sur le portail Bing Maps en Silverlight :

http://bing.com/maps/explore/ 

 

Description

Tandis que depuis des années nous réalisons une intégration de cartographie au sein d’applications web, RIA ou bien d’autres scénarios :

Bing Maps Mashup exemple de développement d'application Bing Maps Virtual Earth

Ici cette ouverture de Bing Maps aux applications externes nous permets de réaliser l’inverse : l’application et les données liées s’intègrent au portail Bing Maps permettant de propulser des applications sur ce site très fréquenté, on peut alors parler de “Mash-in” ou d’intégration inverse :

Bing Maps Mashin application développement Microsoft Bing Maps

Ces applications ne doivent pas ou pas nécessairement se substituer à la consultation du site fournissant les données.

Il serait même gênant de penser de la sorte, il vaut mieux plutôt concevoir cette possibilité comme une réelle voie d’exploitation des données pour une utilisation différente et même un public différent.

 

Prérequis et téléchargements

Afin de commencer à réaliser vos propres applications Bing Maps, il est nécessaire de télécharger et installer le SDK disponible sur le site Connect :
http://connect.microsoft.com/bingmapapps

Les prérequis autour de ces développement et l’utilisation du SDK sont les suivants :

  • Visual Studio 2010
  • Silverlight 4.0
  • Expression Blend, optionnel mais recommandé

Pour le développeur, une fois le SDK installé, il observe la création d’un répertoire contenant les exemples de code, la documentation et les assemblies à utiliser, par défaut :

C:\Program Files (x86)\Microsoft SDKs\Bing Map App SDK

Il est à noter qu’un forum dédié à ce SDK pour application Bing Maps a été ouvert et complète le forum officiel de la plateforme Bing Maps for Enterprise.

 

Présentation technique

Ces applications Bing Maps sont composées de plusieurs éléments qu’il est intéressant et utile d’identifier.

Le schéma suivant permet d’identifier les différentes parties d’une application Bing Maps et de comprendre ce qu’est alors l’anatomie de celle-ci en termes d’interface utilisateur:

Bing Maps App SDK Application anatomie interface utilisateur

Sur ce schéma on distingue plusieurs zones applicatives :

  • 1 - Title : zone de titre et icône
  • 2 - Panel : zone d’affichage secondaire affichant des résultats ou des informations complémentaires interagissant avec la carte
  • 3 - Map Layer : zone principale de l’application affichant le Map Control et les données géolocalisées sous formes de punaises associées à du contenu

La technologie utilisée étant du Silverlight, ces éléments affichés correspondent à des contrôles (UserControl) qu’il est possible de directement définir en code XAML.

 

Limitations

Ces applications permettent d’utiliser la plupart des fonctionnalités de Silverlight, cependant quelques éléments sont volontairement limités ou bloqués pour des raisons de sécurité.

Ces points suivant sont par exemple bloqués :

  • Accès au namespace System.Windows.Reflection
  • Accès au namespace System.Windows.Browser
  • Utilisation limité du IsolatedStorage : nous reviendrons sur ce dernier

Les applications qui sont ensuite soumises à Bing doivent respecter une taille maximale limite compilée qui est de 100 Ko.

Une considération supplémentaire qui est de l’ordre technique concerne le nom de l’assembly (DLL) qui sera générée. Cette assembly est chargée dans la même application Silverlight qu’est le portail Bing Maps.
Dès lors, il est nécessaire d’avoir une DLL avec un nom unique afin d’éviter des conflits une fois celle-ci lancée.

  

Conclusions

Cette plateforme et galerie d’application vont augmenter l’intérêt du portail et chacun des acteurs y trouvera un intérêt qui sera directement exploitable par l’utilisateur final.

Il y a fort à parier que ces applications pourront être filtrées par pays très prochainement afin de n’afficher que les applications susceptibles d’intéresser pour la région de recherche.

En bref, cette possibilité d’intégration d’information et d’application sur le portail Bing Maps est un réel plus pour les diffuseurs d’informations ou site souhaitant présenter de l’information géolocalisée.

C’est un unique de Microsoft Bing Maps qui ne fait que renforcer l’offre de la plateforme Bing Maps, une fois de plus !

 

Nous verrons très prochainement, comment il est possible de réaliser notre propre application Bing Maps et de l’intégrer au portail en mode développeur.

Après avoir présenté l’utilisation des services de géocodage et de calcul d’itinéraire dans le détail, nous nous intéressons au service de recherche permettant d’explorer les points d’intérêts et les contenus de Bing Maps.

Développement Microsoft Bing Maps Web Services SOAP de recherche (search)

Les précédents articles de cette série :

 

Présentation du service

Ce Web Service de recherche permet d’effectuer, comme son nom l’indique, des recherches à proximité d’un point géographique défini, en se basant sur un mot ou une catégorie d’élément à rechercher.

La base de données de la plateforme Bing Maps utilisée pour effectuer cette recherche inclut de nombreux résultats grâce notamment à des partenariats intéressant nous permettant de récupérer les données des Yellow Pages aux USA (équivalent Pages Jaunes) et bien d’autres sources de données.

Ce service peut facilement être utilisé pour récupérer les informations de points d’intérêt à proximité de coordonnées connues.

 

Description des méthodes

Pour réaliser les recherches dans la base de POI, le Web Service de recherche expose une simple méthode Search() prenant en paramètre un objet de type SearchRequest.

Cet objet de type SearchRequest permet de définir la requête de recherche mais également des options pour les informations retournées ou pour appliquer des filtres spécifiques dans le cas de requêtes structurées.

Les résultats de l’appel à ce service utilisant cette méthode permettent de situer les points sur la carte en récupérant les résultats dans un objet de type SearchResponse.

 

Utilisation de la méthode de recherche de proximité

Dans un premier temps, dans le scénario ici choisi, on souhaite effectuer une recherche à proximité du point cliqué.

On associe tout d’abord l’événement de clic :

this.map.MouseClick += 
    new EventHandler<MapMouseEventArgs>(map_MouseClick);

Initialisation de la requête :

L’événement va transformer le point cliqué sur le contrôle en coordonnées géographiques qui seront utilisé au moment de la requête :

Location locTemp = null;
this.map.TryViewportPointToLocation(e.ViewportPoint, out locTemp);

Pour spécifier cette position, on utilise la propriété UserProfile de la requête de type SearchRequest :

// Set the User profile information
request.UserProfile = new UserProfile();
request.UserProfile.CurrentLocation = new UserLocation() { 
    Latitude = locTemp.Latitude, 
    Longitude = locTemp.Longitude 
};
request.UserProfile.DistanceUnit = DistanceUnit.Kilometer;

Au final, la requête est créée et initialisée en utilisant ce code, ici nous souhaitons rechercher les pizzerias situées dans un rayon de 20km autour du point cliqué sur le contrôle :

void map_MouseClick(object sender, MapMouseEventArgs e)
{
    Location locTemp = null;
    this.map.TryViewportPointToLocation(e.ViewportPoint, out locTemp);

    if (locTemp != null)
    {
        this.searchLocation = locTemp;

        SearchRequest request = new SearchRequest();

        // Set the culture
        request.Culture = this.map.Culture;

        // Set the query
        request.Query = c_SearchQuery; // Search for Pizza - cowabunga!

        // Set the query options
        request.SearchOptions = new SearchOptions();
        request.SearchOptions.Radius = 20; // 20km

        // Set the User profile information
        request.UserProfile = new UserProfile();
        request.UserProfile.CurrentLocation = new UserLocation() { 
            Latitude = locTemp.Latitude, 
            Longitude = locTemp.Longitude 
        };
        request.UserProfile.DistanceUnit = DistanceUnit.Kilometer;

        // Suppress faults
        request.ExecutionOptions = new ExecutionOptions();
        request.ExecutionOptions.SuppressFaults = true;

        // Set credentials
        request.Credentials = new Credentials();
        request.Credentials.ApplicationId = c_AppKey;


        this.searchClient.SearchAsync(request);
    }
}

Récupération des résultats :

L’événement de réception de la réponse à l’appel au Web Service de recherche est préalablement associé :

// Associate WS client async event
this.searchClient.SearchCompleted += 
    new EventHandler<SearchCompletedEventArgs>(searchClient_SearchCompleted);

Voici le code qui permet d’afficher les points sur la carte et de positionner la vue de façon à couvrir l’ensemble des points retournés :

void searchClient_SearchCompleted(object sender, SearchCompletedEventArgs e)
{
    if (e.Result.ResponseSummary.StatusCode == ResponseStatusCode.Success)
    {
        IList<Location> locations = new List<Location>();

        if ((e.Result != null) && (e.Result.ResultSets.Count > 0))
        {
            foreach (SearchResultBase result in e.Result.ResultSets[0].Results)
            {
                if (result.LocationData.Locations.Count > 0)
                {
                    Location location =
                        new Location(result.LocationData.Locations[0]);

                    // Create a pushpin
                    Image pin = new Image();
                    pin.Width = 60;
                    pin.Height = 39;
                    pin.Source = new BitmapImage(new Uri(c_PinUrl));

                    // Position origin option
                    PositionOrigin positionOrigin = PositionOrigin.BottomCenter;

                    // Add information on specific layer
                    MapLayer layerSearch = this.FindName("layerSearch") as MapLayer;
                    layerSearch.AddChild(pin, location, positionOrigin);
                    locations.Add(location);
                }
            }

            if (locations.Count > 0)
            {
                // Set view on locations
                this.map.SetView(new LocationRect(locations));
            }
        }
    }
}

Voici le résultat en exécution :

Bing Maps Search Web Service recherche de proximité 

Considérations et conclusions

Ce Web Service permet sans souci d’ajouter des fonctionnalités utilisant les données issues de la base de Bing maps.

Il est possible d’aller plus loin dans le paramétrage et les filtres pour les résultats en utilisant la propriété StructuredQuery de type StructuredSearchQuery de la classe SearchRequest.

Il devient alors relativement simple de proposer l’affichage des hôtels, musées ou restaurants à proximité d’un point connu ce qui dans certains scénarii peut se révéler une réelle plus value pour l’utilisateur final.

A vous d’inclure ce service et cette fonctionnalité dans vos applications très simplement comme vous avez pu le voir à travers cet article.

 

Le prochain article concernera le service d’imagerie en utilisation simple car je vous réserve une présentation plus complète et une extension de ce service d’imagerie afin de repousser les limites fixées pour ce dernier.

Microsoft propose une mise à jour de sa plateforme Bing Maps en ajoutant ici ces Web Services REST pour Bing Maps for Enterprise et ceci depuis le 7 juin.

Ces services vont compléter l’offre de la plateforme et simplifier les utilisations des fonctionnalités couvertes par ces derniers au sein de Bing Maps. Ils ne remplacent pas les Web Services SOAP existant ni les autres fonctionnalités.

Développement Bing Maps Web Services REST et SOAP

A travers ce billet, ces services seront présentés et leurs utilisations seront décrites brièvement en indiquant les paramètres et les formats utilisables.

Bien sûr, nous reviendrons dans une dernière partie sur les bonnes pratiques d’utilisation autour de ces REST Web Services de Bing Maps.

 

Présentation technique

Microsoft et plus particulièrement Bing Maps for Enterprise propose à travers sa plateforme les services web exposés en REST permettant de simplifier l’utilisation au sein de code client.

Voici la vue d’ensemble de la plateforme en terme d’exposition des données ou concernant les contrôles disponibles :

Bing Maps overview ajax web services rest web services and controls

Ce slide est extrait de ma présentation du Wygday 2010 disponible à travers ce billet.

Microsoft fournit également un ensemble de document sur les nouveautés mises à disposition depuis lundi dernier et plus particulièrement ce document complet traitant des services web REST de Bing Maps :

http://download.microsoft.com/download/F/8/5/F8558C41-EA5A-4A78-B9E8-872BDE9C9841/BingMapsRestServices.pdf

Bien entendu, ces services REST sont accessibles en HTTP et en HTTPS.

L’ensemble des éléments d’information restent accessible via ce lien : http://msdn.microsoft.com/en-us/library/ff701722.aspx 

 

Prérequis d’utilisation des REST Web Services

Comme l’ensemble de l’API, ces services sont accessibles selon le mode d’authentification habituel à savoir le système d’application key qu’il est possible d’obtenir à travers le portail dédié à cet usage, il s’agit du Bing Maps Account Center : https://www.bingmapsportal.com/.

Pour plus d’information concernant l’authentification au sein de la plateforme, j’ai écris un article traitant de ce sujet disponible dans ce billet.

L’ensemble des appels utilisera ensuite la clé générée en précisant le paramètre key comme suit par exemple :

http://dev.virtualearth.net/REST/version/Locations/FR/
postalCode/locality/addressLine?key=BingMapsKey

 

Format général des URL des web services REST

La construction des URL d’appels aux Web Services reste identique et commune à tous les types de requêtes, hormis les paramètres des appels bien entendu. D’une manière générale, voici la construction :

http://dev.virtualearth.net/REST/version/restApi/resourcePath?queryParameters&key=BingMapsKey

  • version : Qualifie la version des services à utiliser, ici “v1”
  • restApi : API utilisé Locations, Imagery…
  • resourcePath : information utilisée pour l’appel. En simple, contient les informations utiles pour effectuer l’appel (ex: Adresse, lieu…)
  • queryParameters : paramètres de l’appel pour spécifier des informations optionnelles (ex: position courante, format de sortie…)
  • key : clé d’authentification

A travers ces appels, nombre de ces derniers présentent la possibilité de positionner des paramètres pour modifier le format de sortie, des éléments de callback pour le code client en JavaScript et bien d’autres paramètres utiles dont voici les principaux :

  • culture : ALIAS c ; Culture à utiliser pour l’appel, aura un impact sur les noms renvoyés ou sur les images générées (labels)
  • output : ALIAS o ; Format de sortie : json (défaut), xml
  • jsonp : callback à déclencher au moment de la réception de la réponse
  • jsonso : objet placé en paramètre de la méthode de callback associé à l’appel avec le paramètre jsonp

L’ensemble de ces paramètres est disponible à travers la page dédiée de la MSDN accessible à travers ce lien.

 

Cas précis pour la précision de la culture et locale à utiliser

Afin de traiter de manière optimale les adresses ou autres paramètres utiles pour l’opération, il est possible de préciser la culture et d’utiliser une construction d’URL qui pourra être différente.

On parle alors d’adresse structurée (ou Structured URL) :

D’une manière générale, on peut utiliser une URL non structurée qui pourra alors se révéler être un peu moins précise ou plus délicate à utiliser :

http://dev.virtualearth.net/REST/version/Locations?countryRegion=countryRegion&adminDistrict=adminDistrict
&locality=locality&postalCode=postalCode
&addressLine=addressLine&key=BingMapsKey

MSDN Bing Maps développement référencePlus de précisions sur les cultures et les langues dans l’utilisation de ces services webs REST sur la page MSDN.

  

Geocode : Locations REST Web Service – service de géocodage

Le service de géocodage permet de récupérer la position géographique (Latitude et Longitude en WGS84) à partir d’une adresse postale précisée.

Afin d’utiliser ce service, on peut utiliser le format d’url suivant, notamment pour le cas utilisé ici d’adresse en France :

http://dev.virtualearth.net/REST/version/Locations/FR/
postalCode/locality/addressLine?key=BingMapsKey
 

Parmi les paramètres disponibles, les principaux sont :

  • postalCode : Code postal de la localité
  • locality : localité (ville)
  • addressLine : adresse notée “à la Française”

Un exemple d’appel est celui-ci, il géocode mon adresse perso :

http://dev.virtualearth.net/REST/v1/Locations/FR/62840/Laventie/58%20rue%20Delphin%20Chavatte?key=AvQU0yPlMDJzt3ne0iuhmUOTFTDDr_7tTS52IlEGicofbIzOGLP-Lzp0M6INtaH4&o=xml

MSDN Bing Maps développement référencePlus d’informations sur la page MSDN dédiée disponible ici.

 

Reverse geocode : Locations REST Web Service – service de géocodage inverse

Le service de géocodage inversé permet de restituer une adresse correspondant à des coordonnées géographiques précisées.

Voici le format utilisé pour exploiter cette fonctionnalité :

http://dev.virtualearth.net/REST/version/Locations/point?key=BingMapsKey

Les paramètres utilisables pour l’occasion sont :

  • point : coordonnées du point à géocodé, séparées par une virgule

Un exemple simple d’appel qui fait l’opération de reverse geocoding sur le point correspondant au bureau de Wygwam :

http://dev.virtualearth.net/REST/v1/Locations/50.632766,3.021014?o=xml&&key=AvQU0yPlMDJzt3ne0iuhmUOTFTDDr_7tTS52IlEGicofbIzOGLP-Lzp0M6INtaH4

MSDN Bing Maps développement référenceL’ensemble des informations est disponible via ce lien vers la page MSDN.

 

Route REST Web Service – service de calcul d’itinéraire

Le service de calcul d’itinéraire permet de générer et récupérer l’ensemble des informations liés à un parcours entre 2 ou plusieurs points (Maximum de 25 points).

Cette fonctionnalité n’effectue pas de calcul matriciel, comme le service SOAP il se content de générer l’itinéraire entre les points dans l’ordre dans lequel on lui envoie.

Voici le format utilisé pour exploiter cette fonctionnalité :

http://dev.virtualearth.net/REST/version/Routes/travelMode?wayPoint.1=wayPoint1&waypoint.2=wayPoint2&wayPoint.n=wayPointn
&optimize=optimize&routePathOutput=routePathOutput
&distanceUnit=distanceUnit&key=BingMapsKey

Les paramètres utilisables pour cette génération d’itinéraire sont :

  • wayPoint.n : Adresse ou coordonnées
  • travelMode : Mode de déplacement (Driving (defaut) ou Walking)
  • optimize : Mode d’optimisation (distance, time (defaut), timeWithTraffic)
  • distanceUnit : Unité utilisée pour les distances (Mile mi
    ou Kilometer km (defaut))
  • routePathOutput : Récupération des informations sur les points de parcours et la géométrie de la route (Points (defaut) ou None)

Un exemple d’appel générant un itinéraire entre 2 points avec un point de passage, il est intéressant de noter la construction mêlant adresses et coordonnées :

http://dev.virtualearth.net/REST/V1/Routes?c=fr-FR&o=xml&wp.0=Lille,%20France&wp.1=50,3&wp.2=Marseille,%20France&optmz=timeWithTraffic
&key=AvQU0yPlMDJzt3ne0iuhmUOTFTDDr_7tTS52IlEGicofbIzOGLP-Lzp0M6INtaH4

MSDN Bing Maps développement référenceL’ensemble des informations à propos de cette fonctionnalité de calcul d’itinéraire en REST est disponible à travers cette page dédiée de la MSDN.

  

Imagery REST Web Service – service de génération et exploitation d’imagerie cartographique

Le service d’imagerie permet d’exploiter et générer des cartes utilisant les fonds utilisés au sein de Bing Maps. Il est également possible de récupérer des informations avancées (metadata) sur ces fonds de carte à travers ce service.

Le format d’URL d’appel à ce service se présente sous ce format :

http://dev.virtualearth.net/REST/version/Imagery/Map/imagerySet/
centerPoint/zoomLevel&mapSize=mapSize&pushpin=pushpin
&mapLayer=mapLayer&key=BingMapsKey

Les paramètres utilisables pour cette fonctionnalité sont :

  • imagerySet : style de carte : Aerial, AerialWithLabels, Road
  • centerPoint : coordonnées géographiques du centre
  • zoomLevel : ALIAS zl ; niveau de zoom appliqué à la carte
  • mapSize : tailles en pixel de l’image générée (Width: min 80, max 900, défaut 350 et Height : min 80, max 834, défaut 350) séparées par une virgule
  • pushpin : ALIAS pp : coordonnées des punaises à disposer sur la carte (maxi 18)

Un exemple d’appel permettant de générer une vue aérienne avec les informations routières, de Lille en spécifiant directement la requête :

http://dev.virtualearth.net/REST/v1/Imagery/Map/AerialWithLabels/Lille,France?c=fr-FR&mapSize=500,400
&key=AvQU0yPlMDJzt3ne0iuhmUOTFTDDr_7tTS52IlEGicofbIzOGLP-Lzp0M6INtaH4&o=xml

Ici un autre exemple utilisant la position géographique précise et indiquant les options de zoom et de vue :

http://dev.virtualearth.net/REST/v1/Imagery/Map/Road/
50.637198686599731,3.0628520250320435/16?mapSize=500,500&pp=50.637198686599731,3.0628520250320435;36
&key=AvQU0yPlMDJzt3ne0iuhmUOTFTDDr_7tTS52IlEGicofbIzOGLP-Lzp0M6INtaH4

Et enfin, un dernier exemple permettant de récupérer les métadonnées de la vue précédente :

http://dev.virtualearth.net/REST/v1/Imagery/Metadata/Road/
50.637198686599731,3.0628520250320435?zl=14
&key=AvQU0yPlMDJzt3ne0iuhmUOTFTDDr_7tTS52IlEGicofbIzOGLP-Lzp0M6INtaH4&o=xml

MSDN Bing Maps développement référenceL’ensemble des informations sur ce service sont disponibles à travers le lien vers la page MSDN dédiée.

  

Bonnes pratiques d’utilisationBonne pratique de développement Bing Maps

Afin de se simplifier et fiabiliser l’utilisation de ces services web exposés en REST, il est recommandé de constituer des classes ou des librairies dédiés à la gestion des appels et à la récupération des informations de réponse.

Ainsi, le code appelant ne se voit pas impacté en cas de mise à jour des services ce qui permet aussi de faire évoluer son code de manière plus aisée.

La fiabilisation des appels est également à prendre en compte, il devient notamment possible de proposer une classe dédiée à des fonctionnalités bien précises préparant ensuite les URLs des appels à effectuer, plus de soucis d’URL mal construites.

Je reviendrai avec des exemples de classes dédiées à cet usage et à cette simplification dans différents langages.

 

Conclusions

L’utilisation de ces REST Web Services va très certainement se démocratiser et surtout, ce sera un vecteur supplémentaire de consommation des informations de la plateforme Bing Maps.

Il faut véritablement voir ces services comme une fonctionnalité supplémentaire de la plateforme venant compléter un point qui jusqu’à présent était manquant et qui ne fait qu’étendre les possibilités de développement utilisant une API déjà bien fournie !



Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01