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 !