Microsoft a mis à jour Jeudi, son API Bing Maps AJAX en version 7 sans annonce de nouvelle version pour autant, mais avec son lot de nouveautés et quelques changements techniques intéressants et présentés ici.

Bing Maps for Enterprise version 7 mise a jour

Présentation des nouveautés du portail Bing Maps

Comme pour chacune des mises à jour le portail Bing Maps est un des premiers endroits où l’on peut constater les changements et la mise en avant des nouveautés.

La mise en place et l’implémentation se manifeste en premier lieu par la modification du comportement du contrôle qui propose désormais une inertie caractéristique de l’API Google Maps et d’autres mais aussi des interfaces cartographiques sur périphériques mobiles.

Mais surtout, une des principales nouveautés réside dans l’utilisation du Streetside modifié en ce que Microsoft appelle “Blockview” déjà présenté à travers un article précédent et permettant de visualiser les façades des rues plutôt que d’obtenir un affichage plus commun sous forme de bulles panoramiques telles que le proposait l’ancien portail ou la concurrence.

Bing Maps Streetside streetslide and blockview - version 7

Je vous conseille de tester dans une des villes couvertes afin d’observer l’expérience autour de cette nouvelle présentation, je suis persuadé de l’usage de cette nouvelle vue pour les annuaires géolocalisés.

Je reviendrai très prochainement sur cette fonctionnalité en détail et sur son utilisation dans vos développements.

 

Nouvelles ressources

Afin d’appréhender de manière plus pratique le développement avec l’API Bing Maps v7, Microsoft a mis à disposition quelques éléments nouveau pour accompagner les développeurs.

Ainsi on retrouve l’habituel Interactive SDK (iSDK) pour l’API AJAX v7 maintenant disponible à travers ce lien : http://www.bingmapsportal.com/ISDK/AjaxV7

Bing Maps Interactive SDK v7

 

Présentation des nouveautés techniques

Au niveau des nouveautés techniques, on retrouve des changements radicaux dans la méthode de chargement des scripts qui peuvent éventuellement modifier le comportement de certains de vos développements qui n’auraient pas forcément respecté les recommandations de Microsoft proposées à travers la documentation MSDN.

En regardant de manière plus précise, on peut lister les changements comme suit :

MSDN Bing Maps Best practicesLa liste des modifications techniques est en partie disponible à travers ce lien sur la MSDN : http://msdn.microsoft.com/en-us/library/gg675211.aspx .

Je reviendrai sur la plupart de ces modifications dans des articles techniques dédiés en les mettant en évidence de manière détaillée.

 

Changements à l’issu de cette mise à jour

Comme indiqué, une des fonctionnalités mises à jour concerne le chargement des scripts et cette modification implique un chargement différé qui a été modifié par rapport à la version précédente.

Dès lors, il est possible que sous quelques navigateurs (Firefox 4.0.x et Chrome principalement, erreur du genre Microsoft.Maps.Location is not a constructor…), vous observiez un souci au chargement si vous utilisiez une méthode non préconisé par Microsoft mais qui marchait jusqu’alors et qui résidait à utiliser le code dans un contexte jQuery et plus spécialement lorsqu’on initialise le contrôle ou tout autre composant appartenant au contrôle Bing Maps AJAX v7 à travers un bloc ready() comme suit :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript" charset="UTF-8" 
            src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0">
    </script>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js" 
            type="text/javascript"></script>
    <script type="text/javascript">

        $(function () {
            // Initialize the map
            map = new Microsoft.Maps.Map($('#map').get(0), {
                credentials: "Your Bing Maps Key",
                center: new Microsoft.Maps.Location(47.5, 2.75),
                zoom: 4,
                mapTypeId: Microsoft.Maps.MapTypeId.road
            });

        });
    </script>
</head>
<body>
    <div id="map" style="position: relative; width: 800px; height: 600px;">
    </div>
    <div id="opacitySlider" style="position: relative; width: 400px;">
    </div>
</body>
</html>

MSDN Bing Maps Best practicesLa méthode recommandée à ce jour est décrite à travers la page MSDN dédiée disponible via ce lien, n’hésitez pas à m’indiquer si vous observer un quelconque souci en utilisant les commentaires sur ce billet.

On peut au choix, utiliser l’événement onload sur le body (1) ou utiliser un paramètre d’URL qui sera déclenché après le chargement de l’ensemble des scripts et dépendances du contrôle spécifié comme jsonp (2) :

  • 1 : utilisation de l’événement onload
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript" charset="UTF-8" 
            src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0">
    </script>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js" 
            type="text/javascript"></script>
    <script type="text/javascript">
        function getMap() {
            // Initialize the map
            map = new Microsoft.Maps.Map($('#map').get(0), {
                credentials: "Your Bing Maps Key",
                center: new Microsoft.Maps.Location(47.5, 2.75),
                zoom: 4,
                mapTypeId: Microsoft.Maps.MapTypeId.road
            });
        }
    </script>
</head>
<body onload="getMap()">
    <div id="map" style="position: relative; width: 800px; height: 600px;">
    </div>
    <div id="opacitySlider" style="position: relative; width: 400px;">
    </div>
</body>
</html>

  • 2 : utilisation du paramètre d’URL onscriptload (méthode jsonp)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript" charset="UTF-8" 
src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&onscriptload=getMap">
    </script>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js" 
            type="text/javascript"></script>
    <script type="text/javascript">

        function getMap() {
            // Initialize the map
            map = new Microsoft.Maps.Map($('#map').get(0), {
                credentials: "Your Bing Maps Key",
                center: new Microsoft.Maps.Location(47.5, 2.75),
                zoom: 4,
                mapTypeId: Microsoft.Maps.MapTypeId.road
            });
        }

    </script>
</head>
<body>
    <div id="map" style="position: relative; width: 800px; height: 600px;">
    </div>
    <div id="opacitySlider" style="position: relative; width: 400px;">
    </div>
</body>
</html>

Bing Maps onscriptload parameter

On remarque ici, parfaitement, l’utilisation du paramètre onscriptload, pour obtenir plus d’information concernant ce paramètre, il faut se référer à la documentation comme indiqué dans la v6.3 :

http://msdn.microsoft.com/en-us/library/cc980837.aspx

 

Mon avis

Bing Maps for Enterprise and HTML5 logoLa mise à jour de l’API AJAX de la plateforme Bing Maps montre l’intérêt de la part de Microsoft pour ce composant JavaScript + HTML (et même HTML5) ce qui est un réel plus quand on voit l’étendue de ses possibilités une nouvelle fois renforcée.

Cependant, et c’est très rarement arrivé depuis des années, la mise à jour ne s’est pas vraiment présenté de manière transparente.

Annoncée tardivement par les équipes de Microsoft mais constatés sur chacun des sites mis en production, ces changements ont causé des soucis pour les sites qui ne respectaient pas forcément les méthodes préconisées par Microsoft.

D’une manière générale, c’est une communication mal opérée des équipes techniques de Microsoft et une mise à jour “under-the-hood” (ou en mode ‘ninja’) qui a en réalité des impacts et qui souligne un manque de rigueur qui pour le coup, est difficile à ne pas remarquer pour certains.

On se souvient les mises à jour mineure opérée sur la version 6.1 et plus récemment sur la version 6.3 qui s’en indiquer quoi que ce soit, a modifié le comportement du script ce qui pouvait avoir des impacts avec les anciens navigateurs, mais sur ce type de service, il faut savoir que c’est une pratique qui parfois intervient et on remarque ce genre de soucis bien plus régulièrement sur les changements de l’API Google Maps JavaScript.

Nous avons pu échanger avec les équipes produits et techniques et il est clair que ce genre de scénario va être gage de prudence pour les prochaines mises à jour imagepour ne pas donner une mauvaise impression quant à la plateforme et à sa pérennité.

Il faut reconnaître, et c’est très facilement remarquable sur le forum officiel et à travers les échanges mail, que Microsoft se rend particulièrement disponible, il suffit de se rendre sur le forum officiel pour remarquer l’implication des équipes techniques.

 

Conclusions

Cette mise à jour du script ajoute quelques fonctionnalités bien utiles et des possibilités nouvelles avec le contrôle AJAX v7 qui ne manque pas d’être le support des ambitions de l’équipe Bing Maps pour apporter de l’innovation.

Il faut rappeler que cette mise à jour ne doit pas être ressenti sur vos sites, alors si vous rencontrez des soucis d’implémentation ou tout simplement si vous constatez un bug technique à la suite de cette mise à jour mineure, n’hésitez pas à me contacter via les commentaires de ce billet.

Wygwam et moi-même sommes à ce titre nominés V-TSP de manière exclusive pour la France, la Suisse et la Belgique pour accompagner Microsoft et ses partenaires, dans ces pays pour toutes questions techniques ou problématique de réalisation de projet.