VIAMICHELIN JAVASCRIPT API


Itinerary

Itinerary est en charge du calcul d'itinéraire. Il est lancé par VMLaunch().

Objet de paramétrage ItineraryConfig

Préfixe des constantes: ViaMichelin.Api.Constants.Itinerary

PropriétésTypeDescriptionDéfaut
steps [ ] de {locId:string} ou {coords: GeoPoint} ou {poi: POIId} ou {address: {GeocodingConfig}} Liste des étapes (maximum 8, y compris le départ et l'arrivée).
Si des adresses sont saisies, des opérations de géocodage sont effectuées.
N/A
map {container: DOMElement, focus: boolean} Elément DOM du conteneur de la carte utilisé pour tracer l'itinéraire (et les POIs le long de celui-ci si demandé). focus spécifie si la carte doit-être redessinée en s'ajustant aux limites de tous les objets graphiques qu'elle contient. -
roadsheet DOMElement Elément DOM qui sera le conteneur de la feuille de route. -
veht VEHT Type de véhicule utilisé .VEHT peut prendre les valeurs suivantes:
[prefix].VEHICULE_TYPE.CAR
[prefix].VEHICULE_TYPE.TRUCK
[prefix].VEHICULE_TYPE.ON_FOOT
[prefix].VEHICULE_TYPE.CYCLE
[prefix].VEHICULE_TYPE.MOTO
...CAR
itit ITIT Type d'itinéraire à calculer. ITIT peut prendre les valeurs suivantes:
[prefix].ITINERARY_TYPE.RECOMMENDED
[prefix].ITINERARY_TYPE.QUICK
[prefix].ITINERARY_TYPE.SHORT
[prefix].ITINERARY_TYPE.DISCOVERY
[prefix].ITINERARY_TYPE.ECONOMIC
RECOMMENDED
favMotorways boolean Spécifie si le calcul doit favoriser les autoroutes. false
avoidBorders boolean Spécifie si le calcul doit éviter les passages de frontières. false
avoidTolls boolean Spécifie si le calcul doit éviter les péages. false
avoidCCZ boolean Spécifie si le calcul doit éviter zones payantes (Congestion Charge Zones). false
avoidORC boolean Spécifie si le calcul doit éviter les zones non routières comme les ferrys ou le ferroutage (Off-Road Connections). false
multipleIti boolean Spécifie si l'on souhaite obtenir les itinéraires alternatifs si ils existent. L'ensemble des résumés des itinéraires est disponible dans la section header de l'objet de réponse . Voir aussi le paramètre itiIdx. false
itiIdx int Index de l'itinéraire pour lequel on souhaite obtenir les données. N'a de sens que si multipleIti vaut true. -
distUnit DISTUNIT Unité de distance utilisée dans la réponse. DISTUNIT peut prendre les valeurs suivantes:
[prefix].DIST_UNIT.METERS
[prefix].DIST_UNIT.MILES
...METERS
fuelConsump {city:float, road:float, hwy:float} Indication de la consommation moyenne du véhicule en litres au 100km à 50km/h, 90km/h et 120km/h. {city:7.9, road:6.9, hwy:7.0}
fuelCost float Coût du carburant (le choix de la monnaie est implicite). 1.3
traffic traffic : {country : ['FRA','ENG',etc] | [ALL]},

Spécifie si le calcul prend en considération l'impact  traffic sur un ou plusieurs pays. Il est désactivé par défaut. 

-
wCaravan boolean Spécifie si le calcul doit prendre en compte la présence d'une caravane. Ce paramètre a une influence sur le coût du péage. false
withSchema boolean

Indique si le shema sera présent ou non.

false
withSecurityAdv boolean Spécifie si le calcul doit prendre en considération les informations de sécurité. false
date string as aaa-mm-jj Date de départ de l'itinéraire. Cela permet de tenir compte de l'ouverture ou fermeture de routes (cols, etc). date du jour
currency CURRENCY Monnaie utilisée pour obtenir le coût des péages. CURRENCY peut prendre les valeurs suivantes:
[prefix].CURRENCY.EUR
[prefix].CURRENCY.CHF
[prefix].CURRENCY.CZK
[prefix].CURRENCY.DKK
[prefix].CURRENCY.GBP
[prefix].CURRENCY.HRK
[prefix].CURRENCY.HUF
[prefix].CURRENCY.NOK
[prefix].CURRENCY.PLN
[prefix].CURRENCY.SEK
[prefix].CURRENCY.SIT
[prefix].CURRENCY.SKK
[prefix].CURRENCY.UAH
[prefix].CURRENCY.USD
...EUR
pois {db: string, dist: int, nb: int, dir: DIR, time: int, criteria: [{id:int, value:int}}] Paramétrage complémentaire pour lancer une recherche de POIs le long de d'itinéraire trouvé. Voir documentation de poi.
Si map est valorisée, les POIs sont affichés automatiquement sur la carte.
La fonction de callback du onSuccess retourne 2 valeurs de type ItiResponse et PoiListResponse.
-
ecoTax 
boolean

Spécifie si l'on souhaite obtenir un ecotaxe. 

NB: fonctionne uniquement si le paramètre veht vaut [prefix].VEHICULE_TYPE.TRUCK (Poids lourds) et truckOpts bien défini   

false
truckOpts  { axles :int, width :int, height:int, weight:int, category:int, euroStandard:int}

axels: nombre d'essieux(6,8, ...)
width: la largeur en dixièmes de mètres
height: la hauteur en dixième de mètres
weight: Poids en dixième de tonne.
category: 
   0 : toute catégorie de véhicule
   4 : transport en commun
   5 : transport de marchandise
   6 : transport de produits explosifs
   7 : transport de produits polluants
   8 : transport de produits dangereux  
euroStandard: Norme européenne d’émission

NB:

- Seuls le nombre d’essieux et le poids (axels & weight) ont une influence sur le calcul de l’Ecotaxe.
- Il faut laisser comme valeur par défaut « 0 » aux sous paramètres category et euroStandard de truckOpts


-
distanceByCountry boolean Permet d'avoir le calcul de la distance par pays.
Lien vers l'exemple ici
false

 

Objet retourné par onSuccess

Un objet de type ItiResponse si aucune recherche de POIs n'est associée (voir le paramètre pois ci-dessus), ou 2 objets de type ItiResponse et PoiListResponse.

 

{
	header: {
		vehicle 	: /* int */,
		itiType 	: /* int */,
		idx 		: /* int */,
		itidate 	: /* string */,
		startMapURL : /* string */,
		destMapURL  : /* string */,
		summaries 	: [ {
				index 		: /* int */,
				names 		: /* array */
				totalDist 	: /* int */,
				totalTime 	: /* int */,
				motorwayDist: /* int */,
				motorwayTime: /* int */,
				pleasantDist: /* int */,
				pleasantTime: /* int */,
				drivingDist	: /* int */,
				drivingTime : /* int */,
				consumption : /* double */,
				tollCost 	: {
					moto 		: /* int */,
					car 		: /* int */,
					caravan 	: /* int */,
					pl2 		: /* int */,
					pl3 		: /* int */,
					pl4 		: /* int */,
					pl5 		: /* int */
				},
				CCZCost 	: {
					moto 		: /* int */,
					car 		: /* int */,
					caravan 	: /* int */,
					pl2 		: /* int */,
					pl3 		: /* int */,
					pl4 		: /* int */,
					pl5 		: /* int */
				},
				fullMapURL : /* string */
		}]
	},
	itiTrace: {
		...
	},
	roadSheet: {
		...
	},

	getLayer()  : /* Méthode de récupération de l'objet graphique associé à l'itinéraire */,
	release () : /* Méthode de  libération de l'objet (nettoyage de la mémoire). */,
}

 

Facturation

Une requête facturée pour la recherche d'un itinéraire, chaque gécodage d'étape (si steps contient des adresses) et la recherche de POIs (si pois est valorisé).

 

Principaux exemples concernés

Faire un calcul d'itinéraire

Exécuter cet exemple (iti1.htm)

var myMap = null; 
var currentItiIdx = 0;

function fInitialize(){
 //Load country list
 var out = '';
 for (country in country_table["eng"]){
  if(country.length == 3){//we need this test because of a IE bug
   out += '<option value="'+ country +'">' + country_table["eng"][country] + '</option>';
  }
 }
 //Note: We don't feed directly a  <select> because of a IE bug
 //
 $_id("dDepCountry").innerHTML = '<select name="strDepCountry" id="strDepCountry">' + out +  "</select>";
 $_id("dArrCountry").innerHTML = '<select name="strArrCountry" id="strArrCountry">' + out +  "</select>";
 //Load itinerary types
 $_id("dOptType").innerHTML =  '<select name="strOptType" id="strOptType"><option value="'+ ViaMichelin.Api.Constants.Itinerary.ITINERARY_TYPE.RECOMMENDED +'">Michelin recommended</option><option value="'+ ViaMichelin.Api.Constants.Itinerary.ITINERARY_TYPE.QUICK +'">Quickest</option><option value="'+ ViaMichelin.Api.Constants.Itinerary.ITINERARY_TYPE.SHORT +'">Shortest</option><option value="'+ ViaMichelin.Api.Constants.Itinerary.ITINERARY_TYPE.DISCOVERY  +'">Sightseeing</option><option value="'+ ViaMichelin.Api.Constants.Itinerary.ITINERARY_TYPE.ECONOMIC  +'">Economical</option></select>';
};//fInitialize

function fLaunchSearch(itiIdx){
 currentItiIdx = itiIdx;
 //Initialize map
 if(null == myMap){
  VMLaunch("ViaMichelin.Api.Map",{ 
    container : $_id("dMap"),//Map container (DOM element)     
    //Initializes map center with data from another service called in the onSuccess callback
    center : ViaMichelin.Api.Constants.Map.DELAY_LOADING,
    mapTypeControl : true
    },{
    onInit: function(serviceMap){
     myMap = serviceMap;
    },
    onSuccess: function(){
     fLaunchRoutePlanner(itiIdx);
    }});//Initial zoom level
 }else{//Clean up
  myMap.removeAllLayers();
  if(0 == currentItiIdx){
   $_id("dRoadsheet").innerHTML = "";
   $_id("dMultipleIti").innerHTML = '';
  }
  fLaunchRoutePlanner(itiIdx);
 }
};//fLaunchSearch
 
function fLaunchRoutePlanner(itiIdx){
 //Launch itinerary computation
 VMLaunch("ViaMichelin.Api.Itinerary", {
   steps:[//Array of Geo coodinates
    {address: {
     city: document.getElementById("strDepCity").value, 
     countryISOCode: document.getElementById("strDepCountry").value}},
    {address: {
     city: document.getElementById("strArrCity").value, 
     countryISOCode: document.getElementById("strArrCountry").value}}],
   itit: document.getElementById("strOptType").value,
   favMotorways: document.getElementById("bOptFavMotorways").checked,
   avoidBorders: document.getElementById("bOptAvoidBorders").checked,
   avoidTolls: document.getElementById("bOptAvoidTolls").checked,
   avoidCCZ: document.getElementById("bOptAvoidCCZ").checked,
   avoidORC: document.getElementById("bOptAvoidORC").checked,
   //Map to display itinerary trace with automatic redraw to fit iti
   map: {container: $_id("dMap"), focus: true},
   roadsheet: $_id("dRoadsheet"),
   multipleIti: true,
   distUnit: ViaMichelin.Api.Constants.Itinerary.DIST_UNIT.MILES,
   itiIdx : currentItiIdx
  },{
   onSuccess : function (result) {
    if(0 == currentItiIdx){
     //Loop through summaries to extract multiple itineraries
     var out = 'Suggested routes: <select onchange="fLaunchSearch(this.value)">';
     for (var itiIdx = 0; itiIdx < result.header.summaries.length; ++itiIdx){
      var name = '';
      if(0 == result.header.summaries[itiIdx].names.length){
       out += '<option value="0"/>No name because only one route</option>';
      }else{
       //Concatenate all names
       for (var i = 0; i < result.header.summaries[itiIdx].names.length; ++i){
        name += result.header.summaries[itiIdx].names[i] + ' ';
       }
       out += '<option value="' + itiIdx + '"/>' + name + '</option>';
      }
     }
     out += '</select>';
     $_id("dMultipleIti").innerHTML = out;
    }else{
     $_id("dMultipleIti").value = currentItiIdx;
    }
    $_id("dSummary").innerHTML = "<br/>Distance : " +  result.header.summaries[currentItiIdx].totalDist.toFixed(1) + 'mi<br/>Time : ' + result.header.summaries[0].totalTime + 's';
   },
   onError : function (error) {
    alert('Whoops' + error);
   }});
};//fLaunchRoutePlanner

Exécuter cet exemple (iti1.htm)

 

Faire un distancier

Exécuter cet exemple (iti2.htm)

var addresses = new Array();
addresses.push({city:"Cannes", countryISOCode:"FRA"});
addresses.push({city:"Nice", countryISOCode:"FRA"});
addresses.push({city:"Toulon", countryISOCode:"FRA"});
addresses.push({city:"Geneva", countryISOCode:"ITA"});
addresses.push({city:"Milano", countryISOCode:"ITA"});
addresses.push({city:"Torino", countryISOCode:"ITA"});

function fLoadMatrix(){
var out = "<table border='1'><tr><td>&nbsp;</td>";
for(var i=0; i < addresses.length; ++i){
 out += "<th>" + addresses[i].city + "</th>";
}
out += '</tr>';
for(i=0; i < addresses.length; ++i){
 out += "<tr><th>" + addresses[i].city + "</th>";
 for(var j=0; j < addresses.length; ++j) {
  out += "<td id='"+ i + '_' + j +"'> </td>";
 }
 out += "</tr>"; 
}
out += '</table>';
$_id("results").innerHTML = out;

//Geocode all addresses in one call
VMLaunch("ViaMichelin.Api.Geocoding", addresses,{
		   onSuccess : function (results) {
			for(i=0; i < results.length; ++i){
			 for(j=i+1; j < results.length; ++j) {
			  fLaunchRoutePlanner(results[i][0].coords, results[j][0].coords, i, j);
			 }
			}
		   },
		   onError : function (error) {
			alert('Whoops! ' + error);
		   }});
};//fLoadMatrix

function fLaunchRoutePlanner(coordsA, coordsB, i, j){
VMLaunch("ViaMichelin.Api.Itinerary", {
  steps:[//Array of Geo coodinates
   {coords: coordsA}, 
   {coords: coordsB}
  ],
  data: ViaMichelin.Api.Constants.Itinerary.DATA.HEADER
 },{
  onSuccess : function (result) {
   $_id(i + '_' + j).innerHTML = $_id(j + '_' + i).innerHTML  = Math.round(result.header.summaries[0].totalDist/1000) + 'km<br/>' + Math.round(result.header.summaries[0].totalTime/60) + 'mn';
  },
  onError : function (error) {
   alert('Whoops! ' + error);
  }});     
};//fLaunchRoutePlanner

Exécuter cet exemple (iti2.htm)

 

Retour haut de page