Après 1 an et demi de bons et loyaux services, la très bonne version 6.2 du contrôle AJAX/JavaScript se voit appliquer une petite mise à jour pour obtenir de nouvelles méthodes simplifiant l’utilisation et ajoutant certaines nouvelles fonctionnalités.

bingmaps_header

Description de la nouvelle version et nouveautés

Microsoft, en ce lundi 7 juin 2010, vient de mettre à jour son contrôle AJAX/JavaScript parmi d’autres nouveautés.

Ainsi à travers cette mise à jour, plusieurs éléments/fonctionnalités ont été modifiés / ajoutés :

  • Utilisation du contrôle en mode “Core”
  • Ajout de nouvelles de méthodes de géocodage et de recherche
  • Ajout de la gestion d’éléments déplaçables

L’ensemble détaillé des modifications est disponible à travers ce lien :
http://msdn.microsoft.com/en-us/library/bb412440(v=MSDN.10).aspx

Découvrez également une vidéo à propos de ces nouveautés à travers ce lien : http://channel9.msdn.com/posts/LauraFoy/Major-Bing-announcements-and-SDK-release/ 

 

Utilisation du contrôle en mode “Core”

Ce mode “Core” permet de réduire la taille du script de base du contrôle AJAX/JavaScript et réduit de ce fait le temps de chargement.

Les fonctionnalités sont toutefois plus restreintes mais l’utilisation combinée des nouveaux Web Services REST peut tout à fait combler les besoins.

Pour utiliser ce mode “Core”, il suffit de modifier la référence au script afin d’utiliser l’url suivante :

<script charset="UTF-8" type="text/javascript" 
  src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3c&mkt=fr-fr">
</script>

Il suffit alors de noter l’utilisation de la version v=6.3c dans l’url.

 

Utilisation de la nouvelle méthode de géocodage

L’API Bing Maps v6.3 propose une nouvelle méthode qui simplifie l’accès aux fonctionnalités de géocodage : Geocode() de la classe VEMap.

Son utilisation est relativement simple car on a la possibilité d’utiliser la méthode en plaçant 3 paramètres qui sont respectivement :

  • query : (string) chaîne de caractère à géocoder
  • callback : (function) méthode associé à l’événement de retour
  • options : (VEGeocodeOptions) objet définissant les paramètres optionnels permettant de configurer le géocodage

Voici le code permettant de réaliser un appel simple :

map.Geocode("165 avenue de Bretagne, Lille, France", findCallback);

Après avoir effectué l’appel, on récupère le résultat dans la méthode associée à l’événement de retour, méthode habituelle associé à ce genre d’événement :

function findCallback(layer, findResults, placeResults, moreResults, error) {
    var s = '';
    for (var i = 0; i < placeResults.length; ++i) {
        s += 'Nom: ' + placeResults[i ].Name + '\n';
        s += 'Coordonnees: ' + placeResults[i ].LatLong + '\n';
        s += 'Code du resultat: ' + placeResults[i ].MatchCode + '\n';
        s += 'Qualite du résultat: ' + placeResults[i ].MatchConfidence + '\n';
        s += '\n\n';
    }

    alert(s);
}

Voici le détail complet et la page MSDN de la méthode VEMap.Geocode() :
http://msdn.microsoft.com/en-us/library/ff710026(v=MSDN.10).aspx

 

Utilisation de la nouvelle méthode de recherche

Une autre nouvelle méthode permets de simplifier la recherche de proximité : la méthode Search() de la classe VEMap.

Cette méthode peut également prendre 3 paramètres :

  • query : (string) chaine de caractère à rechercher
  • callback : (function) méthode à associer au retour d’appel
  • options : (VESearchOptions) objet configurant la recherche effectuée

Voici un exemple d’utilisation permettant de rechercher les POIs de notre choix à proximité de la vue ou à travers une recherche full-text :

map.Search("Club de danse", findCallback);

La fonction de callback à associer à la méthode de recherche :

function findCallback(layer, findResults, placeResults, moreResults, error) {
    var s = '';
            
    if (findResults != null) {
        s += 'Resultats :\n'
        for (var i = 0; i < findResults.length; ++i) {
            s += 'Nom : ' + findResults[i ].Name + '\n';
            s += 'Description : ' + findResults[i ].Description + '\n';
            s += 'Téléphone : ' + findResults[i ].Phone + '\n';
            s += 'Coordonnes : ' + findResults[i ].LatLong + '\n';
            s += '\n\n';
        }
    }

    alert(s);
}

 

Utilisation des punaises déplaçables

Bien qu’il était possible de réaliser cette opération avec les précédentes API, cela nécessité un développement personnalisé.

Ici l’utilisation est donc simplifié car il suffit de préciser la propriété Draggable à true sur l’objet de type VEShape (par défaut, cette propriété est à false).

On obtient alors la possibilité de gérer les événements liés aux déplacements de l’élément, il est certains que ce type de d’événements pourront être utiles pour renforcer encore l’interactivité au sein du contrôle cartographique, sur la classe VEShape :

  • onstartdrag : début du déplacement
  • ondrag : en cours de déplacement
  • onenddrag : fin du déplacement

Voici un exemple de code permettant d’utiliser et gérer le déplacement d’une telle punaise :

// Create the shape
pin = new VEShape(VEShapeType.Pushpin, map.GetCenter());

// Set the property to allow dragging
pin.Draggable = true;

// Associate the drag events
pin.onstartdrag = eventStartDrag;
pin.ondrag = eventDragging;
pin.onenddrag = eventEndDrag;

map.AddShape(pin);  

 

Et dans la communauté ?

Je vais, après l’événement du Wygday où j’anime la session Bing Maps, mettre à jour le projet Virtual Earth JavaScript IntelliSense Helper.

codeplex_header

Ce projet, pour rappel, permets d’obtenir l’IntelliSense pour le contrôle AJAX/JavaScript directement dans Visual Studio 2008 ou 2010.

Rendez-vous prochainement sur le site du projet pour retrouver ces fonctionnalités : http://vejs.codeplex.com/

 

Conclusions

A travers cette mise à jour, Microsoft souligne le support qu’il consacre à ce contrôle AJAX/JavaScript et à l’API AJAX d’une manière générale.

C’est une aubaine pour nous qui voyons encore des possibilités supplémentaires dans le cadre de la mise à jour globale de Bing Maps.

Il est à noter également, que la version 6.2 conserve son support, pas d’inquiétude directe pour vos scripts existants qui continueront de fonctionner comme il se doit.