Itineraire
Les observateurs d'événements load - addoverlay - error liés à GDirections - google.maps.Directions.
Attention :
L'API Google Maps Javascript Version 2 a été officiellement déclarée obsolète le 19 mai 2010 par Google. Elle continuera, cependant, à fonctionner durant encore trois ans, à compter de cette date, conformément à la politique de dépréciation de Google.
TouraineVerte.com ne diffusera plus de d'exemples ni de tutoriels sur cette version de l'API.
L'API Google Maps Javascript Version 3 est désormais la version officielle.
Trois types d'observateurs d'événement, liés à GDirections ou google.maps.Directions, peuvent être interceptés :
Attention : il ne faut pas confondre :
avec
Revenons à notre observateur d'événement :
GEvent.addListener(monItineraire, "load", function(){ ... code à executer ... });
Que l'on peut également écrire :
GEvent.addListener(monItineraire, "load", appelFonction); ... et ensuite on créé la fonction appelFonction ... function appelFonction(){ ... code à executer ... }
Ou si vous utilisez Google AJAX API loader :
google.maps.Event.addListener(monItineraire, "load", function(){ ... code à executer ... });
Que l'on peut également écrire :
google.maps.Event.addListener(monItineraire, "load", appelFonction); ... et ensuite on créé la fonction appelFonction ... function appelFonction(){ ... code à executer ... }
GEvent.addListener(monItineraire, "addoverlay", function(){ ... code à executer ... });
Que l'on peut également écrire :
GEvent.addListener(monItineraire, "addoverlay", appelFonction); ... et ensuite on créé la fonction appelFonction ... function appelFonction(){ ... code à executer ... }
Ou si vous utilisez Google AJAX API loader :
google.maps.Event.addListener(monItineraire, "addoverlay", function(){ ... code à executer ... });
Que l'on peut également écrire :
google.maps.Event.addListener(monItineraire, "addoverlay", appelFonction); ... et ensuite on créé la fonction appelFonction ... function appelFonction(){ ... code à executer ... }
GEvent.addListener(monItineraire, "error", function(){ ... code à executer ... });
Que l'on peut également écrire :
GEvent.addListener(monItineraire, "error", appelFonction); ... et ensuite on créé la fonction appelFonction ... function appelFonction(){ ... code à executer ... }
Ou si vous utilisez Google AJAX API loader :
google.maps.Event.addListener(monItineraire, "error", function(){ ... code à executer ... });
Que l'on peut également écrire :
google.maps.Event.addListener(monItineraire, "error", appelFonction); ... et ensuite on créé la fonction appelFonction ... function appelFonction(){ ... code à executer ... }
Vous pouvez employer getStatus() comme ceci monItineraire.getStatus() pour obtenir plus d'informations sur l'erreur.
Quand un événement error se produit, aucun événement load ou addoverlay ne sera déclenché.
Exemple :
GEnevent.addListener(monItineraire, "error", codeRequete);
...
function codeRequete(){
if (monItineraire.getStatus().code == G_GEO_SUCCESS){
alert("Aucune erreur ne s'est produite. L'adresse a été analysée avec succés");
}
else if (monItineraire.getStatus().code == G_GEO_BAD_REQUEST){
alert("La demande n'a pu être analysée avec succés.");
}
else if (monItineraire.getStatus().code == G_GEO_SERVER_ERROR){
alert("La demande n'a pu être traitée avec succés. La raison exacte de l'échec est inconnue.");
}
else if (monItineraire.getStatus().code == G_GEO_MISSING_QUERY){
alert("Aucune question n'a été indiquée dans la requète");
}
else if (monItineraire.getStatus().code == G_GEO_MISSING_ADDRESS){
alert("aucune question n'a été indiquée dans la requète");
}
else if (monItineraire.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
alert("Aucun lieu géographique correspondant à l'adresse indiquée n'a pu être trouvé. Cela peut être dû au fait que l'adresse est relativement nouvelle, ou qu'elle est peut être incorrecte.");
}
else if (monItineraire.getStatus().code == G_GEO_UNAVAILABLE_ADDRESS){
alert("Les coordonnées GPS (Latitude, Longitude) pour l'adresse donnée ou l'itinéraire demandé n'ont pu être retournées pour des raisons légales ou contractuelles.");
}
else if (monItineraire.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS){
alert("GDirections n'a pas pu calculer d'itinéraire entre les points mentionnés dans la requète. Soit parce qu'il n'y a aucun itinéraire disponible entre les deux points, soit parce que nous ne disposons pas des données couvrant cette région.");
}
else if (monItineraire.getStatus().code == G_GEO_BAD_KEY){
alert("La clef indiquée est invalide ou n'est pas attribuée au domaine pour lequel elle a été donnée.");
}
else if (monItineraire.getStatus().code == G_GEO_TOO_MANY_QUERIES){
alert("Le nombre de requêtes, pour la clef donnée, a dépassé le quota des demandes autorisées pour une période de 24 heures.");
}
else alert("Une erreur inconnue s'est produite.");
}
Les équivalents numériques pour chaque constante symbolique sont indiqués entre parenthèses..
| Code statut de la requête | Description |
|---|---|
| (200) G_GEO_SUCCESS | Aucune erreur ne s'est produite. L'adresse a été analysée avec succès et ses coordonnées GPS (Latitude, Longitude) ont été retournées. (Depuis la version 2.55) |
| (400) G_GEO_BAD_REQUEST | La demande n'a pu être analysée avec succès. (Depuis la version 2.81) |
| (500) G_GEO_SERVER_ERROR | La demande n'a pu être traitée avec succès. La raison exacte de l'échec est inconnue. (Depuis la version 2.55) |
| (601) G_GEO_MISSING_QUERY | Le paramétre "q" de la requête HTTP est manquant ou n'a aucune valeur. Pour les demandes de "géocodage", cela signifie qu'une adresse vide a été indiquée dans la requête. Pour les demandes de directions, cela signifie qu'aucune question n'a été indiquée dans la requête. (Depuis la version 2.81) |
| (601) G_GEO_MISSING_ADDRESS | Synonyme de G_GEO_MISSING_QUERY. (Depuis la version 2.55) |
| (602) G_GEO_UNKNOWN_ADDRESS | Aucun lieu géographique correspondant à l'adresse indiquée n'a pu être trouvé. Cela peut être dû au fait que l'adresse est relativement nouvelle, ou qu'elle est peut être incorrecte. (Depuis la version 2.55) |
| (603) G_GEO_UNAVAILABLE_ADDRESS | Les coordonnées GPS (Latitude, Longitude) pour l'adresse donnée ou l'itinéraire demandé n'ont pu être retournées pour des raisons légales ou contractuelles. (Depuis la version 2.55) |
| (604) G_GEO_UNKNOWN_DIRECTIONS | GDirections n'a pas pu calculer d'itinéraire entre les points mentionnés dans la requête. Soit parce qu'il n'y a aucun itinéraire disponible entre les deux points, soit parce que nous ne disposons pas des données couvrant cette région. (Depuis la version 2.81) |
| (610) G_GEO_BAD_KEY | La clef indiquée est invalide ou n'est pas attribuée au domaine pour lequel elle a été donnée. (Depuis la version 2.55) |
| (620) G_GEO_TOO_MANY_QUERIES | Le nombre de requêtes, pour la clef donnée, a dépassé le quota des demandes autorisées pour une période de 24 heures. (Depuis la version 2.55). Si vous envoyez des demandes multiples en parallèle ou dans une boucle, insérez une pause dans votre code afin de ne pas envoyer trop rapidement vos demandes de géocodages. |
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>TouraineVerte ma première carte</title>
<!-- Chargement du script Google AJAX APIs en précisant votre clé -->
<script type="text/javascript" src="http://www.google.com/jsapi?key=Inserez_Votre_Clef_API_Ici"></script><script type="text/javascript">
//<![CDATA[
/* Chargement du module "maps" dans sa version "2.x" */
google.load("maps", "2.x",{"other_params":"sensor=false"});
/* Déclaration des variables globales */
var carteItineraire;
var texteItineraire;
var monItineraire;
/* Fonction initialize() */
function initialize() {
/* Si le navigateur est compatible avec l'API de Google Maps ... */
if (google.maps.BrowserIsCompatible()) {
/* ... Création d'une nouvelle carte nommée "carteItineraire" qui s'affichera à l'intérieur de la balise <div> ayant pour identifiant id="EmplacementCarteItineraire" ... */
carteItineraire= new google.maps.Map2(document.getElementById("EmplacementCarteItineraire"));
/* ... La carte nommée "carteItineraire" est centrée sur la Latitude 47.341571, la Longitude 0.514233, avec un niveau de zoom égal à 13 ... */
carteItineraire.setCenter(new google.maps.LatLng(47.341571,0.514233), 13);
/* ... texteItineraire : contenu de la balise <div> ayant pour identifiant id="EmplacementTexteItineraire" ... */
texteItineraire = document.getElementById("EmplacementTexteItineraire");
/* ... Création d'un nouvel itinéraire nommé "monItineraire" ... */
/* ... Le résultat s'affichera sous forme de carte dans la carte nommée "carteItineraire" ... */
/* ... Le résultat s'affichera sous forme textuelle dans "texteItineraire" ... */
monItineraire= new google.maps.Directions(carteItineraire, texteItineraire);
/* ... Mise ne place d'un observateur d'événement sur l'itinéraire nommé "monItinéraire" ... */
/* ... L'événement observé est "load" ... */
/* ... Si l'événement "load" s'est correctement déroulé alors on appelle la fonction "itineraireCharge" ... */
google.maps.Event.addListener(monItineraire, "load", itineraireCharge);
/* ... Mise ne place d'un observateur d'événement sur l'itinéraire nommé "monItinéraire" ... */
/* ... L'événement observé est "addoverlay" ... */
/* ... Si l'événement "addoverlay" s'est correctement déroulé alors on appelle la fonction "itineraireAffiche" ... */
google.maps.Event.addListener(monItineraire, "addoverlay", itineraireAffiche);
/* ... Mise ne place d'un observateur d'événement sur l'itinéraire nommé "monItinéraire" ... */
/* ... L'événement observé est "error" ... */
/* ... Si l'événement "error" s'est correctement déroulé alors on appelle la fonction "erreurItineraire" ... */
google.maps.Event.addListener(monItineraire, "error", erreurItineraire);
/* ... Envoi la requête aux serveurs de Google afin d'établir un itinéraire ... */
/* ... entre Tours et Pornichet. Si la requête aboutit, l'itinéraire ... */
/* ... s'affichera sous forme de carte et de texte ... */
/* ... Amusez-vous à modifier les villes ci-dessous (réelles ou fausses) pour ... */
/* ... observer l'impact sur le déroulement du processus de calcul de l'itinéraire ... */
monItineraire.load("from: Tours,FR to: Pornichet,FR");
/* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
}else{
/* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
}
}
/* Fonction itineraireCharge() */
function itineraireCharge(){
alert('Votre itinéraire a été claculé avec succès');
}
/* Fonction itineraireAffiche() */
function itineraireAffiche(){
alert('Affichage de votre itinéraire');
}
/* ... fonction erreurItineraire() */
function erreurItineraire(){
if (monItineraire.getStatus().code == G_GEO_BAD_REQUEST){
alert("La demande n'a pu être analysée avec succés.");
}
else if (monItineraire.getStatus().code == G_GEO_SERVER_ERROR){
alert("La demande n'a pu être traitée avec succés. La raison exacte de l'échec est inconnue.");
}
else if (monItineraire.getStatus().code == G_GEO_MISSING_QUERY){
alert("Aucune question n'a été indiquée dans la requète");
}
else if (monItineraire.getStatus().code == G_GEO_MISSING_ADDRESS){
alert("aucune question n'a été indiquée dans la requète");
}
else if (monItineraire.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
alert("Aucun lieu géographique correspondant à l'adresse indiquée n'a pu être trouvé. Cela peut être dû au fait que l'adresse est relativement nouvelle, ou qu'elle est peut être incorrecte.");
}
else if (monItineraire.getStatus().code == G_GEO_UNAVAILABLE_ADDRESS){
alert("Les coordonnées GPS (Latitude, Longitude) pour l'adresse donnée ou l'itinéraire demandé n'ont pu être retournées pour des raisons légales ou contractuelles.");
}
else if (monItineraire.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS){
alert("GDirections n'a pas pu calculer d'itinéraire entre les points mentionnés dans la requète. Soit parce qu'il n'y a aucun itinéraire disponible entre les deux points, soit parce que nous ne disposons pas des données couvrant cette région.");
}
else if (monItineraire.getStatus().code == G_GEO_BAD_KEY){
alert("La clef indiquée est invalide ou n'est pas attribuée au domaine pour lequel elle a été donnée.");
}
else if (monItineraire.getStatus().code == G_GEO_TOO_MANY_QUERIES){
alert("Le nombre de requêtes, pour la clef donnée, a dépassé le quota des demandes autorisées pour une période de 24 heures.");
}
else alert("Une erreur inconnue s'est produite.");
}
/* Appelle la fonction "initialize" lorsque la page web sera chargée */
google.setOnLoadCallback(initialize);
//]]>
</script>
<style type="text/css">
<!--
#EmplacementTexteItineraire {background-color: #FFFFFF;}
-->
</style>
</head>
<body>
<!-- La carte nommée "carteItineraire", va venir s'afficher à l' intérieur de -->
<!-- la balise <div> ayant pour identifiant id="EmplacementCarteItineraire". -->
<!-- Elle fera donc 100% de large et 400 pixels de haut. -->
<div id="EmplacementCarteItineraire" style="width:100%; height:400px;"></div>
<!-- Le descriptif de l'itinéraire "monItineraire", va venir s'afficher à l'intérieur -->
<!-- de la balise <div> ayant pour identifiant id="EmplacementTexteItineraire". -->
<div id="EmplacementTexteItineraire" style="width:740px;"></div>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>TouraineVerte ma première carte</title>
<!-- Chargement du script Google Maps, version 2.x, en précisant votre clé -->
<script src="http://maps.google.com/maps?file=api&v=2.x&key=Inserez_Votre_Clef_API_Ici&sensor=false"
type="text/javascript"></script>
//<![CDATA[
/* Déclaration des variables globales */
var carteItineraire;
var texteItineraire;
var monItineraire;
/* Fonction initialize() */
function initialize() {
/* Si le navigateur est compatible avec l'API de Google Maps ... */
if (GBrowserIsCompatible()) {
/* ... Création d'une nouvelle carte nommée "carteItineraire" qui s'affichera à l'intérieur de la balise <div> ayant pour identifiant id="EmplacementCarteItineraire" ... */
carteItineraire= new GMap2(document.getElementById("EmplacementCarteItineraire"));
/* ... La carte nommée "carteItineraire" est centrée sur la Latitude 47.341571, la Longitude 0.514233, avec un niveau de zoom égal à 13 ... */
carteItineraire.setCenter(new GLatLng(47.341571,0.514233), 13);
/* ... texteItineraire : contenu de la balise <div> ayant pour identifiant id="EmplacementTexteItineraire" ... */
texteItineraire = document.getElementById("EmplacementTexteItineraire");
/* ... Création d'un nouvel itinéraire nommé "monItineraire" ... */
/* ... Le résultat s'affichera sous forme de carte dans la carte nommée "carteItineraire" ... */
/* ... Le résultat s'affichera sous forme textuelle dans "texteItineraire" ... */
monItineraire= new GDirections(carteItineraire, texteItineraire);
/* ... Mise ne place d'un observateur d'événement sur l'itinéraire nommé "monItinéraire" ... */
/* ... L'événement observé est "load" ... */
/* ... Si l'événement "load" s'est correctement déroulé alors on appelle la fonction "itineraireCharge" ... */
GEvent.addListener(monItineraire, "load", itineraireCharge);
/* ... Mise ne place d'un observateur d'événement sur l'itinéraire nommé "monItinéraire" ... */
/* ... L'événement observé est "addoverlay" ... */
/* ... Si l'événement "addoverlay" s'est correctement déroulé alors on appelle la fonction "itineraireAffiche" ... */
GEvent.addListener(monItineraire, "addoverlay", itineraireAffiche);
/* ... Mise ne place d'un observateur d'événement sur l'itinéraire nommé "monItinéraire" ... */
/* ... L'événement observé est "error" ... */
/* ... Si l'événement "error" s'est correctement déroulé alors on appelle la fonction "erreurItineraire" ... */
GEvent.addListener(monItineraire, "error", erreurItineraire);
/* ... Envoi la requête aux serveurs de Google afin d'établir un itinéraire ... */
/* ... entre Tours et Pornichet. Si la requête aboutit, l'itinéraire ... */
/* ... s'affichera sous forme de carte et de texte ... */
/* ... Amusez-vous à modifier les villes ci-dessous (réelles ou fausses) pour ... */
/* ... observer l'impact sur le déroulement du processus de calcul de l'itinéraire ... */
monItineraire.load("from: Tours,FR to: Pornichet,FR");
/* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
}else{
/* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
}
}
/* Fonction itineraireCharge() */
function itineraireCharge(){
alert('Votre itinéraire a été claculé avec succès');
}
/* Fonction itineraireAffiche() */
function itineraireAffiche(){
alert('Affichage de votre itinéraire');
}
/* ... fonction erreurItineraire() */
function erreurItineraire(){
if (monItineraire.getStatus().code == G_GEO_BAD_REQUEST){
alert("La demande n'a pu être analysée avec succés.");
}
else if (monItineraire.getStatus().code == G_GEO_SERVER_ERROR){
alert("La demande n'a pu être traitée avec succés. La raison exacte de l'échec est inconnue.");
}
else if (monItineraire.getStatus().code == G_GEO_MISSING_QUERY){
alert("Aucune question n'a été indiquée dans la requète");
}
else if (monItineraire.getStatus().code == G_GEO_MISSING_ADDRESS){
alert("aucune question n'a été indiquée dans la requète");
}
else if (monItineraire.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
alert("Aucun lieu géographique correspondant à l'adresse indiquée n'a pu être trouvé. Cela peut être dû au fait que l'adresse est relativement nouvelle, ou qu'elle est peut être incorrecte.");
}
else if (monItineraire.getStatus().code == G_GEO_UNAVAILABLE_ADDRESS){
alert("Les coordonnées GPS (Latitude, Longitude) pour l'adresse donnée ou l'itinéraire demandé n'ont pu être retournées pour des raisons légales ou contractuelles.");
}
else if (monItineraire.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS){
alert("GDirections n'a pas pu calculer d'itinéraire entre les points mentionnés dans la requète. Soit parce qu'il n'y a aucun itinéraire disponible entre les deux points, soit parce que nous ne disposons pas des données couvrant cette région.");
}
else if (monItineraire.getStatus().code == G_GEO_BAD_KEY){
alert("La clef indiquée est invalide ou n'est pas attribuée au domaine pour lequel elle a été donnée.");
}
else if (monItineraire.getStatus().code == G_GEO_TOO_MANY_QUERIES){
alert("Le nombre de requêtes, pour la clef donnée, a dépassé le quota des demandes autorisées pour une période de 24 heures.");
}
else alert("Une erreur inconnue s'est produite.");
}
//]]>
</script>
<style type="text/css">
<!--
#EmplacementTexteItineraire {background-color: #FFFFFF;}
-->
</style>
</head>
<!-- Une fois la page chargée la fonction initialize() est exécutée. -->
<!-- A la fermeture de la page , la fonction GUnload() est exécutée. -->
<body onload="initialize()" onunload="GUnload()">
<!-- La carte nommée "carteItineraire", va venir s'afficher à l' intérieur de -->
<!-- la balise <div> ayant pour identifiant id="EmplacementCarteItineraire". -->
<!-- Elle fera donc 100% de large et 400 pixels de haut. -->
<div id="EmplacementCarteItineraire" style="width:100%; height:400px;"></div>
<!-- Le descriptif de l'itinéraire "monItineraire", va venir s'afficher à l'intérieur -->
<!-- de la balise <div> ayant pour identifiant id="EmplacementTexteItineraire". -->
<div id="EmplacementTexteItineraire" style="width:740px;"></div>
</body>
</html>