Exemples - Itinéraires

Faire un calcul d'itinéraire

Voir l'exemple
<html>
 <head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 <title>ViaMichelin Maps & Drive API</title>
 
 <script src="http://api.viamichelin.com/apijs/js/api.js" 
 type="text/javascript"></script>
 <script type="text/javascript">
 /* Insérez ici votre clé */
 VMAPI.registerKey("JSBS20070201123465789");
 VMAPI.setLanguage("fra");
 
 /* Transformer l'adresse de départ, donnée par l'utilisateur, en un point géocodé */
 function search_start_location(){
 document.getElementById('result_action').style.display = 'none';
 document.getElementById('youritidiv').style.display = 'none';
 Start_geocoder = new VMGeocoder();
 Start_myaddress = new VMAddress();
 
 var elements_formulaires = 
 document.forms['itisearch_form'].elements;
 
 Start_myaddress.address = elements_formulaires['form_Start_address'].value;
 Start_myaddress.zipCode = elements_formulaires['form_Start_CP'].value;
 Start_myaddress.city = elements_formulaires['form_Start_city'].value;
 Start_myaddress.countryVMCode = elements_formulaires['form_Start_country'].value;
 
 
 Start_geocoder.addEventHandler("onCallBack",search_stop_location);
 Start_geocoder.search(Start_myaddress);
 }
 
 /* Transformer l'adresse d'arrivée, donnée par l'utilisateur, en un point géocodé */
 function search_stop_location(){
 Stop_geocoder = new VMGeocoder();
 Stop_myaddress = new VMAddress();
 
 var elements_formulaire = 
 document.forms['itisearch_form'].elements;
 
 Stop_myaddress.address = elements_formulaire['form_Stop_address'].value;
 Stop_myaddress.zipCode = elements_formulaire['form_Stop_CP'].value;
 Stop_myaddress.city = elements_formulaire['form_Stop_city'].value;
 Stop_myaddress.countryVMCode = elements_formulaire['form_Stop_country'].value;
 
 
 Stop_geocoder.addEventHandler("onCallBack",search_step_location);
 Stop_geocoder.search(Stop_myaddress);
 }
 
 /* Transformer l'étape, donnée par l'utilisateur, en un point géocodé */
 function search_step_location(){
 if (document.forms['itisearch_form'].elements['form_Step_address'].value != "" || document.forms['itisearch_form'].elements['form_Step_CP'].value != "" || document.forms['itisearch_form'].elements['form_Step_city'].value != ""){
 Step_geocoder = new VMGeocoder();
 Step_myaddress = new VMAddress();
 
 var elements_formulaire = 
 document.forms['itisearch_form'].elements;
 
 Step_myaddress.address = elements_formulaire['form_Step_address'].value;
 Step_myaddress.zipCode = elements_formulaire['form_Step_CP'].value;
 Step_myaddress.city = elements_formulaire['form_Step_city'].value;
 Step_myaddress.countryVMCode = elements_formulaire['form_Step_country'].value;
 
 Step_geocoder.addEventHandler("onCallBack",search_iti);
 Step_geocoder.search(Step_myaddress);
 } else {
 search_iti();
 }
 }
 
 /* Configurer la recherche d'itinéraire */
 function search_iti(){
 myiti = new VMItinerary();
 myiti.addStopOver(Start_geocoder.result);
 
 var elements_formulaire = 
 document.forms['itisearch_form'].elements;
 
 if (elements_formulaire['form_Step_address'].value != "" 
 || elements_formulaire['form_Step_CP'].value != "" 
 || elements_formulaire['form_Step_city'].value != ""){
 myiti.addStopOver(Step_geocoder.result);
 }
 myiti.addStopOver(Stop_geocoder.result); 
 
 myiti.setItineraryType(elements_formulaire['form_Type'].value);
 myiti.setItineraryVehicleType(elements_formulaire['form_Vh'].value);
 myiti.setCarType(elements_formulaire['form_Cat'].value);
 myiti.setFuelType(elements_formulaire['form_Carb'].value);
 myiti.setFuelCost(elements_formulaire['form_Prix'].value);
 
 myiti.addEventHandler("onCallBack",iti_found);
 myiti.search();
 }
 
 function iti_found(){
 alert('Itineraire trouvé');
 document.getElementById('result_action').style.display = '';
 }
 
 /* Affichage de l'itinéraire sous forme de texte */
 function display_roadsheet(){
 if (typeof(myiti)!="undefined"){
 document.getElementById('youritidiv').innerHTML = myiti.roadSheet.getHTML(mymap);
 document.getElementById('youritidiv').style.display = '';
 } else {
 alert('Aucun itinéraire chargé');
 }
 }
 
 /* Affichage de l'itinéraire sur la carte */
 function display_onmap(){
 if (typeof(myiti)!="undefined"){
 if (typeof(mymap)!="undefined"){
 document.getElementById('yourmapdiv').innerHTML = "";
 mymap = new VMMap(document.getElementById("yourmapdiv"));
 mymap.addLayer(myiti.getItiAsVMComplexLayer("#FF0000",7,0.5));
 mymap.drawMapFromLayers(); 
 } else {
 mymap = new VMMap(document.getElementById("yourmapdiv"));
 mymap.addLayer(myiti.getItiAsVMComplexLayer("#FF0000",7,0.5));
 mymap.drawMapFromLayers();
 }
 mymap.addLayer(myiti.roadSheet.getLayer());
 mymap.showMapTools(3); 
 } else {
 alert('Aucun itinéraire chargé');
 } 
 }
 
 /* Affichage de quelques informations concernant l'itinéraire */
 function display_informations(){
 strHTML =
 "Distance totale en mètres :"
 +myiti.getTotalDistance()+"m<br>"
 + "Distance parcourue sur autoroute : "
 +myiti.getDistanceOnMotorway()+"m<br>"
 + "Temps total en secondes : "
 +myiti.getTotalTime()+"s<br>"
 + "Temps de parcours sur autoroute : "
 +myiti.getTimeOnMotorway()+"s<br>"
 + "Coût consommation carburant :"
 +myiti.getTotalGasConsumption()+"€<br>"
 + "Coût péage autoroute : "
 +myiti.getTollCost()+"€<br>"
 + "Coût vignette : "
 +myiti.getRoadTaxCost()+"€<br>"; 
 
 document.getElementById('youritiresumediv').style.display = '';
 document.getElementById('youritiresumediv').innerHTML = strHTML;
 }
 
 /* L'affichage de la liste des pays */
 function load_country(){
 VMCountryUtil.addEventHandler(
 "onCallBack",
 function(){
 document.getElementById("div_country_start").innerHTML = 
 VMCountryUtil.getSelectHTMLString("form_Start_country","FRA");
 document.getElementById("div_country_stop").innerHTML = 
 VMCountryUtil.getSelectHTMLString("form_Stop_country","FRA");
 document.getElementById("div_country_step").innerHTML = 
 VMCountryUtil.getSelectHTMLString("form_Step_country","FRA");
 }
 );
 VMCountryUtil.loadCountryLabels();
 }
 </script>
 </head>
 
 <!-- Lancement automatique du script javascript après le chargement de la page -->
 <body onload="load_country();">
 <h1>ViaMichelin - Exemple d'itinéraire</h1>
 <p>Calculer un itinéraire entre deux adresses postales</p>
 
 <table>
 <tr>
 <td>
 <form name="itisearch_form">
 <fieldset>
 <legend>Départ</legend>
 
 <label for="form_Start_address">Adresse :</label>
 <input type="text" value="" name="form_Start_address" 
 id="form_Start_address"/>
 
 <br/>
 
 <label for="form_Start_CP">Code Postal :</label>
 <input type="text" value="75001" name="form_Start_CP" 
 id="form_Start_CP"/>
 
 <br/>
 
 <label for="form_Start_city">Ville :</label>
 <input type="text" value="" name="form_Start_city" />
 
 <label for="form_Start_country">Pays :</label>
 <div id="div_country_start"></div>
 </fieldset>
 
 <br />
 
 <fieldset>
 <legend>Destination</legend>
 
 <label for="form_Stop_address">Adresse :</label>
 <input type="text" value="" name="form_Stop_address" 
 id="form_Stop_address"/>
 
 <br/>
 
 <label for="form_Stop_CP">Code Postal :</label>
 <input type="text" value="93260" name="form_Stop_CP" 
 id="form_Stop_CP">
 
 <br/>
 
 <label for="form_Stop_city">Ville :</label>
 <input type="text" value="" name="form_Stop_city" 
 id="form_Stop_city"/>
 
 <label for="form_Stop_country">Pays :</label>
 <div id="div_country_stop"></div>
 </fieldset>
 
 <br/>
 
 <fieldset>
 <legend>Etape</legend>
 
 <label for="form_Step_address">Adresse :</label>
 <input type="text" value="" name="form_Step_address" 
 id="form_Step_address"/>
 
 <br/>
 
 <label for="form_Step_CP">Code Postal :</label>
 <input type="text" value="" name="form_Step_CP" 
 id="form_Step_CP"/>
 
 <br/>
 <label for="form_Step_city">Ville :</label>
 <input type="text" value="" name="form_Step_city" 
 id="form_Step_city"/>
 
 <label for="form_Step_country">Pays :</label>
 <div id="div_country_step"></div>
 </fieldset>
 
 <br/>
 
 <fieldset>
 <legend>Options</legend>
 
 <label for="form_Type">Type de trajet :</label> 
 <select name="form_Type" id="form_Type">
 <option value="0">Recommendé par Michelin</option>
 <option value="1">Le plus court</option>
 <option value="2">Le plus rapide</option>
 <option value="3">Economique</option>
 <option value="4">Découverte</option>
 <option value="5">A pieds</option>
 <option value="6">A vélo</option>
 </select>
 
 <br/>
 
 <div id="option_type">
 <label for="form_Vh">Type de véhicule :</label> 
 <select name="form_Vh" id="form_Vh">
 <option value="0" selected>Automobile</option>
 <option value="1">Moto</option>
 <option value="2">Caravane</option>
 </select>
 
 <br/>
 
 <label for="form_Cat">Catégorie de véhicule :</label>
 <select name="form_Cat" id="form_Cat">
 <option value="0" selected>Citadine</option>
 <option value="1">Compacte</option>
 <option value="2">Familiale</option>
 <option value="3">Routière</option>
 <option value="4">Luxe</option>
 </select>
 
 <br />
 <label for="form_Carb">Type de carburant</label>
 <select name="form_Carb" id="form_Carb">
 <option value="0" selected>Essence</option>
 <option value="1">Diesel</option>
 <option value="2">GPL</option>
 </select>
 
 <br />
 
 <label for="form_Prix">Coût du carburant (euros) :</label>
 <input type="text" value="1.1" name="form_Prix" size="5" />
 </div>
 </fieldset>
 
 <br />
 
 <input type="button" value="Rechercher" 
 onclick="search_start_location();" />
 </form>
 
 </td>
 <td class="result">
 <div id="result_action" style="display:none">
 <input type="button" value="Afficher la carte de l'itinéraire" 
 onclick="display_onmap();" />
 <input type="button" value="Afficher l'itinéraire détaillé" 
 onclick="display_roadsheet();"/>
 <input type="button" value="Afficher l'itinéraire résumé" 
 onclick="display_informations();">
 </div>
 
 <div id="yourmapdiv" class="map"></div>
 <div id="youritiresumediv" 
 style="display:none; width:500px; border: 1px dotted #90EE90; position:relative; margin-top: 5px; overflow: auto;padding: 3px 3px 3px 3px; margin-top: 4px;"></div>
 <div id="youritidiv"
 style="display:none;width:600px; height:400px; border: 1px dashed Purple; position:relative; margin-top: 5px;overflow: auto;padding: 3px 3px 3px 3px; margin-top: 4px;"></div>
 </td>
 </tr>
 </table>
 </body>
</html>

Documentation associée