Exemple complet - Etude de cas
Exemple complet - Etude de cas
- Afficher une carte dont le centre est l'adresse d'une entreprise
- Ajouter le logo de l'entreprise sur la carte
- Permettre à l'utilisateur de calculer un itinéraire vers l'entreprise (avec levée d'ambiguïté sur le point de départ)
- Permettre à l'utilisateur de trouver un hôtel à proximité
- Faire un export GPS des coordonnées géographiques de l'entreprise
- Afficher la météo
<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">
VMAPI.registerKey("JSBS20070201123465789");
VMAPI.setLanguage("fra");
var entreprise_adresse = '110 Avenue Victor Hugo';
var entreprise_cp = 92514;
var entreprise_ville='Boulogne Billancourt';
var entreprise_pays = '1424';
var entreprise_logo =
'http://dev.viamichelin.fr/wswebsite/fra/img/petit_bib.gif';
var entreprise_logo_texte = 'Via Michelin';
var map;
var carte_largeur = 500;
var carte_hauteur = 500;
var geocoder;
var geosearch;
var myweather;
var localisation_entreprise;
var localisation_from;
var myiti;
var sanscarbu = false;
var couleur_itineraire = "#00FFFF";
var itidiv_id = "youritidiv";
var poidiv_id = "yourpoidiv";
var mapdiv_id = "yourmapdiv";
function initialise_adresse_et_carte(){
geocoder = new VMGeocoder();
var myaddress = new VMAddress();
myaddress.address = entreprise_adresse;
myaddress.zipCode = entreprise_cp;
myaddress.city = entreprise_ville;
myaddress.countryVMCode = entreprise_pays;
geocoder.addEventHandler("onCallBack",
initialise_carte);
geocoder.search(myaddress);
}
function initialise_carte(){
map = new VMMap(document.getElementById(mapdiv_id));
localisation_entreprise = geocoder.result;
map.addEventHandler("onCallBack", function(){
map.resizeTo(carte_largeur, carte_hauteur);
});
map.drawMap(localisation_entreprise, 15);
map.showMapTools();
var image = new VMIcon(entreprise_logo,-12,-12);
var coucheImage = new VMIconLayer(
localisation_entreprise,
image,
entreprise_logo_texte);
map.addLayer(coucheImage);
}
function load_country(){
VMCountryUtil.addEventHandler(
"onCallBack",
function(){
document.getElementById("div_country").innerHTML =
VMCountryUtil.getSelectHTMLString("country","FRA");
}
);
VMCountryUtil.loadCountryLabels();
}
function lance_itineraire(){
myiti = new VMItinerary();
var from_adresse = document.getElementById("adresse").value;
var from_cp = document.getElementById("cp").value;
var from_ville = document.getElementById("ville").value;
var from_pays = document.getElementById("country").value;
var myaddress = new VMAddress();
myaddress.address = from_adresse;
myaddress.zipCode = from_cp;
myaddress.city = from_ville;
myaddress.countryVMCode = from_pays;
geosearch = new VMGeoSearch();
geosearch.addEventHandler("onCallBack",calcul_from);
geosearch.search(myaddress);
}
function calcul_from(){
if(geosearch.results.length==1){
localisation_from = geosearch.results[0].coords;
document.getElementById("maybeone").style.display = "none";
document.getElementById("maybetwo").style.display = "none";
ajout_etapes_itineraire();
} else {
var qtt = document.forms['iti_form'].elements['result_reco'].options.length;
for (var i=qtt;i>=0;i--){
document.forms['iti_form'].elements['result_reco'].options[i] = null;
}
for (var j=0;j<geosearch.results.length;j++){
document.forms['iti_form'].elements['result_reco'].options[j] =
new Option(geosearch.results[j].VMAmbiguityLine,j);
}
document.getElementById("maybeone").style.display = "block";
document.getElementById("maybetwo").style.display = "block";
}
}
function selectionner(){
var index = document.forms['iti_form'].elements['result_reco'].selectedIndex;
localisation_from = geosearch.results[index].coords;
ajout_etapes_itineraire();
document.getElementById("maybeone").style.display = "none";
document.getElementById("maybetwo").style.display = "none";
}
function ajout_etapes_itineraire(){
myiti.addStopOver(localisation_from);
myiti.addStopOver(localisation_entreprise);
var form = document.getElementById("iti_form").elements;
for(var i=0; i<form.itinaryType.length; i++){
if(form.itinaryType[i].checked){
myiti.setItineraryType(form.itinaryType[i].value);
if(form.itinaryType[i].value==5 || form.itinaryType[i].value==6){
sanscarbu = true;
}
}
}
if(sanscarbu){
for(var i=0; i<form.itineraryVehicleType.length; i++){
if(form.itineraryVehicleType[i].checked){
myiti.setItineraryVehicleType(form.itineraryVehicleType[i].value);
}
}
if(myiti.itineraryVehicleType==0){
for(var i=0; i<form.carType.length; i++){
if(form.carType[i].checked){
myiti.setCarType(form.carType[i].value);
}
}
}
for(var i=0; i<form.fuelType.length; i++){
if(form.fuelType[i].checked){
myiti.setFuelType(form.fuelType[i].value);
}
}
myiti.setFuelCost(form.fuelCost.value);
}
myiti.addEventHandler("onCallBack", fin_itineraire);
myiti.search();
}
function fin_itineraire(){
document.getElementById(mapdiv_id).innerHTML = "";
map = new VMMap(document.getElementById(mapdiv_id));
map.addLayer(myiti.getItiAsVMComplexLayer(couleur_itineraire,7,0.5));
map.drawMapFromLayers();
map.showMapTools();
var html = myiti.roadSheet.getHTML();
document.getElementById(itidiv_id).innerHTML = html;
if(!sanscarbu){
document.getElementById("cout_carbu").innerHTML =
myiti.getTotalGasConsumption();
} else {
document.getElementById("cout_carbu").innerHTML = 0;
}
document.getElementById("km").innerHTML =
(myiti.getTotalDistance())/1000;
}
var itineraire_visible = true;
function cacher_itineraire(){
if(itineraire_visible){
document.getElementById(itidiv_id).style.display="none";
itineraire_visible = false;
} else {
document.getElementById(itidiv_id).style.display="block";
itineraire_visible = true;
}
}
var poiDefinition;
var myPOIsearch;
function lance_hotels(){
poiDefinition = new VMPOIDefinition();
poiDefinition.addEventHandler("onCallBack", recherche_hotels);
poiDefinition.getHotelsDefiniton();
}
function recherche_hotels(){
myPOIsearch = new VMPOISearch(poiDefinition);
myPOIsearch.addEventHandler("onCallBack", reponse_hotels);
myPOIsearch.searchHotels(localisation_entreprise);
}
function reponse_hotels(){
if (myPOIsearch.result.VMPOIs.length > 0){
myPOIlist = myPOIsearch.result;
myPOIlistlayer = myPOIlist.getLayer();
map.addLayer(myPOIlistlayer);
document.getElementById(poidiv_id).innerHTML = myPOIlist.getHTML();
} else {
document.getElementById(poidiv_id).innerHTML = "Aucun hôtel";
}
}
var hotels_visible = true;
function cacher_hotels(){
var poidiv = document.getElementById(poidiv_id);
if(hotels_visible){
poidiv.style.display="none";
hotels_visible = false;
} else {
poidiv.style.display="block";
hotels_visible = true;
}
}
function export_function(){
myexport = new VMExportAsXVM();
myexport.exportXVM(localisation_entreprise,"export_file");
}
function meteo(){
myweather = new VMWeatherSearch();
myweather.searchCoords = localisation_entreprise;
myweather.addEventHandler("onCallBack", meteo_display);
myweather.getTodayWeather();
}
function meteo_ligne_entete(isToday){
var str = "<tr>"
+ "<th>Date</th>"
+ "<th>Ensoleillement</th>";
if(!isToday){
str += "<th>Température minimale</th>"
+ "<th>Température maximale</th>";
} else {
str+= "<th>Température mesurée</th>"
+ "<th>Vent</th>"
+ "<th>Humidité</th>"
+ "<th>Visibilité</th>";
}
str+="</tr>";
return str;
}
function meteo_create(meteo_result, isToday){
var str =
"<tr>"
+ "<td>" + meteo_result.dayOfReport + "</td>"
+ "<td> <img src='"+meteo_result.image+"' alt='"
+meteo_result.imageLabel+"'/></td>";
if (!isToday) {
str+= "<td>" + meteo_result.temperatureMinInfo+"°C </td>"
+ "<td>" + meteo_result.temperatureMaxInfo+"°C </td>";
} else {
str+= "<td>" + meteo_result.temperatureMesured+"°C </td>"
+ "<td>" + meteo_result.windDirectionInfo +" "
+ meteo_result.windSpeedInfo+"km/h</td>"
+ "<td>" + meteo_result.humidityInfo+"%</td>"
+ "<td>" + meteo_result.visibilityInfo+"m" + "</td>";
}
str+="</tr>";
return str;
}
function meteo_display(){
var str = "<table style=\"width:600px;\" border=\"1\">"
+ meteo_ligne_entete(true)
+ meteo_create(myweather.result.todayWeather, true)
+ "<caption>Station météo : "
+ myweather.result.weatherStation
+ "</caption>"
+ "</table>";
document.getElementById("yourmeteodiv").innerHTML = str;
}
function meteo_demain(){
myweather = new VMWeatherSearch();
myweather.searchCoords = localisation_entreprise;
myweather.addEventHandler("onCallBack",meteo_demain_display);
myweather.getForecastWeather();
}
function meteo_demain_display(){
var str = "<table style=\"width:500px;\" border=\"1\">"
+ meteo_ligne_entete(false);
for(var i=0; i<myweather.result.forecasts.length; i++){
str+= meteo_create(myweather.result.forecasts[i], false);
}
str +="<caption>Station météo : "
+ myweather.result.weatherStation
+ "</caption>"
+ "</table>";
document.getElementById("yourmeteodiv").innerHTML = str;
}
</script>
</head>
<body onload="initialise_adresse_et_carte(); load_country();">
<h1>ViaMichelin - Exemple complet</h1>
<p>Etude de cas</p>
<ul>
<li>Afficher une carte dont le centre est l'adresse d'une entreprise</li>
<li>Ajouter le logo de l'entreprise sur la carte</li>
<li>Permettre à l'utilisateur de calculer un itinéraire vers l'entreprise (avec levée d'ambiguïté sur le point de départ)</li>
<li>Permettre à l'utilisateur de trouver un hôtel à proximité</li>
<li>Faire un export GPS des coordonnées géographiques de l'entreprise</li>
<li>Afficher la météo</li>
</ul>
<div id="yourmapdiv" style="width: 500px; height: 500px"></div>
<input type="button" onclick="export_function()"
value="Exporter les coordonnées de l'entreprise vers votre GPS" />
<input type="button" onclick="meteo()"
value="Afficher les données météo" />
<input type="button" onclick="meteo_demain()"
value="Afficher les prévisions météo" />
<div id="yourmeteodiv"></div>
<form id="iti_form">
<fieldset>
<legend>
Recherche d'itinéraire vers l'entreprise
</legend>
<table>
<tr>
<th><label for="adresse">Adresse</label></th>
<td>
<input type="text" name="adresse" id="adresse" value="carnot" />
</td>
<th>
<label for="cp">Code Postal</label>
</th>
<td>
<input type="text" name="cp" id="cp" value="45400" />
</td>
</tr>
<tr>
<th><label for="ville">Ville</label></th>
<td>
<input type="text" name="ville" id="ville" value="" />
</td>
<th><label for="country">Pays</label></th>
<td colspan="3">
<div id="div_country"></div>
</td>
</tr>
<tr>
<th id="maybeone" style="display: none">
<label for="result_reco">
Selectionner votre point de départ
</label>
</th>
<td id="maybetwo" style="display: none" colspan="3">
<select id="result_reco" name="result_reco"></select>
<input type="button" onclick="selectionner()"
value="Selectionner" />
</td>
</tr>
<tr>
<th>Type de trajet</th>
<td class="inline" colspan="3">
<input type="radio" name="itinaryType" value="0"
checked="checked" id="itinaryType_0" />
<label for="itinaryType_0">Conseillé</label>
<input type="radio" name="itinaryType" value="1"
id="itinaryType_1" />
<label for="itinaryType_1">Court</label>
<input type="radio" name="itinaryType" value="2"
id="itinaryType_2" />
<label for="itinaryType_2">Rapide</label>
<input type="radio" name="itinaryType" value="3"
id="itinaryType_3" />
<label for="itinaryType_3">Economique</label>
<input type="radio" name="itinaryType" value="4"
id="itinaryType_4" />
<label for="itinaryType_4">Agréable</label>
<input type="radio" name="itinaryType" value="5"
id="itinaryType_5" />
<label for="itinaryType_5">Piéton</label>
<input type="radio" name="itinaryType" value="6"
id="itinaryType_6" />
<label for="itinaryType_6">Vélo</label>
</td>
</tr>
<tr>
<th>Type de véhicule</th>
<td class="inline" colspan="3">
<input type="radio" name="itineraryVehicleType"
id="itineraryVehicleType_0" value="0" checked="checked" />
<label for="itineraryVehicleType_0">Voiture</label>
<input type="radio" name="itineraryVehicleType" value="1"
id="itineraryVehicleType_1" />
<label for="itineraryVehicleType_1">Moto</label>
<input type="radio" name="itineraryVehicleType" value="2"
id="itineraryVehicleType_2" />
<label for="itineraryVehicleType_2">Caravane</label>
</td>
</tr>
<tr>
<th>Type de voiture</th>
<td colspan="3" class="inline">
<input type="radio" name="carType" value="0"
checked="checked" id="carType_0" />
<label for="carType_0">Citadine</label>
<input type="radio" name="carType" value="1"
id="carType_1" />
<label for="carType_1">Compacte</label>
<input type="radio" name="carType" value="2"
id="carType_2" />
<label for="carType_2">Familiale</label>
<input type="radio" name="carType" value="3"
id="carType_3" />
<label for="carType_3">Routiere</label>
<input type="radio" name="carType" value="4"
id="carType_4" />
<label for="carType_4">Luxe</label>
</td>
</tr>
<tr>
<th>Type de carburant</th>
<td colspan="3" class="inline">
<input type="radio" name="fuelType"
value="0" checked="checked" id="fuelType_0" />
<label for="fuelType_0">Essence</label>
<input type="radio" name="fuelType"
value="1" id="fuelType_1" />
<label for="fuelType_1">Diesel</label>
<input type="radio" name="fuelType"
value="2" id="fuelType_2" />
<label for="fuelType_2">GPL</label>
</td>
</tr>
<tr>
<th><label for="fuelCost">Prix du carburant</label>
</th>
<td colspan="3">
<input type="text" name="fuelCost"
id="fuelCost" value="1.1" />
</td>
</tr>
<tr>
<th></th>
<td colspan="3">
<input type="button" onclick="lance_itineraire();"
value="Chercher un itinéraire" />
<input type="button" id="cacher" onclick="cacher_itineraire();"
value="Afficher/Cacher l'itinéraire" />
</td>
</tr>
</table>
<p>Distance : <span id="km"></span> km
- Coût Carburant <span id="cout_carbu"></span> €
</p>
</fieldset>
</form>
<div id="youritidiv"></div>
<form>
<fieldset>
<legend>
Recherche d'hôtels à proximité de l'entreprise
</legend>
<input type="button" onclick="lance_hotels();"
value="Chercher un hôtel" />
<input type="button" id="cacher" onclick="cacher_hotels();"
value="Afficher/Cacher la liste d'hôtels" /
</fieldset>
</form>
<div id="yourpoidiv" style="display: block"></div>
</body>
</html>
Documentation associée