CALCULER LA DISTANCE ENTRE DEUX ADRESSES DE FORMULAIRE GRÂCE À L'API GOOGLE MAPS

opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009 - 10 mai 2011 à 23:08
Elisee_Mozoyi Messages postés 16 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 14 août 2015 - 25 juil. 2014 à 13:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53140-calculer-la-distance-entre-deux-adresses-de-formulaire-grace-a-l-api-google-maps

Elisee_Mozoyi Messages postés 16 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 14 août 2015
25 juil. 2014 à 13:22
C'est un bon tuto
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
23 mai 2011 à 15:16
lol

Bon en fait le cas France-Cuba est réglé dans le script basé sur la version 3 dont je viens de donner le lien. La requête France-Cuba renvoie bien le statut "ZERO_RESULT", comme on pouvait s'y attendre.
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
23 mai 2011 à 14:54
Hi!

>cas d'un trajet France-Cuba p.ex

Ce que tout le monde ne sait pas, c'est que Google a aussi cartographié le fond des océans...
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
23 mai 2011 à 13:12
La source en version 3 est désormais visible ici : http://www.javascriptfr.com/code.aspx?ID=53174.
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
13 mai 2011 à 16:58
Certes, mais ce qui me rend dingue c'est que même si la condition n'est pas réalisée (cas d'un trajet France-Cuba p.ex), le message d'erreur 'erreur d\'adresse' n'apparaît pas...ni le message 'Erreur :' + status... (voir code). De quoi se taper la tête contre les murs.
De plus, GG Map V3 renvoie des aberrations dans les adresses, ce que ne faisait pas V2 : V3 marche très bien pour les adresses correctes, mais si on met une adresse aberrante (genre 1354568441, fsdsdfsd, France), il va parfois réussir à lui trouver une adresse existante !
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
13 mai 2011 à 16:35
Hi!
Tu arrives malgré tout à déterminer quand il y a erreur, quand la condition (element.status=='OK') n'est pas réalisée.
Et puis il faut bien reconnaître que entre 'ZERO_RESULT' et 'NOT_FOUND', c'est un peu "bonnet blanc" et "blanc bonnet"...
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
13 mai 2011 à 10:25
Salut.
En fait, si comme seule instruction je lui demande alert(element.status), il me renvoie 'OK' lorsque la requête est correcte (adresses valides), par contre si je lui demande un France-Cuba ou que je rentre des adresses aberrantes il ne me renvoie rien alors que d'après Google (voir mon lien) il devrait me renvoyer respectivement 'ZERO_RESULT' et 'NOT_FOUND'.
Ce script me rend fou.
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
12 mai 2011 à 20:27
Hi!
Je ne connais pas, hélas, la syntaxe exacte. Ma connaissance de l'api V3 se borne d'ailleurs à la conversion d'un script V2 (qui marchait très bien) en un script V3 plus délicat à gérer.
J'ai regardé un peu ton code, il me semble que, bloqué au point où tu es arrivé, tu devrais essayer d'afficher tous les champs constitutifs de chaque rangée (dont le fameux champ "status" qui t'enquiquines tant!), çà devrait permettre de disposer de plus d'informations et peut-être de débloquer l'affaire...
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
12 mai 2011 à 15:35
Justement, je n'ai aucune idée de la syntaxe à employer car Google est très évasif là-dessus : quels sont les objets qu'on trouve dans le groupe "DistanceMatrixElement objects" ? Et même en supposant que je connaisse l'objet sur lequel interroger le statut, quelle serait la syntaxe ? j'ai mis l'instruction (if (element.status=='OK'){}) parce qu'elle marche, mais j'y suis allé au pif.
Voici le bout de code appelant le calcul :

function callback(response, status)
{
if (status == google.maps.DistanceMatrixStatus.OK)
{
var origins = response.originAddresses;
var destinations = response.destinationAddresses;

for (var i = 0; i < origins.length; i++)
{
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++)
{
var element = results[j];
var dist = element.distance.value;
var dep = origins[i];
var arr = destinations[j];
if (element.status=='OK')
{
document.forms[0].distance.value=parseInt(dist/1000);
document.getElementById('results').innerHTML = 'Départ : ' + dep + '
Arrivée : ' + arr + '

';
}
else
{
alert ('erreur d\'adresse');
}
}
}
}
else
{
alert('Erreur : ' + status);
}
}
Si tu connais la syntaxe exacte, je t'en serai reconnaissant...
Pour l'API v2, je n'avais pas de réponse spécifique, c'est pourquoi j'avais bricolé l'outil "curseur wait + tempo 10s + alerte", mais c'était pas très rigoureux.
Je compte poster bientôt un calcul d'itinéraire sur lequel je bosse en v3 mais j'aimerais régler cette histoire d'erreurs de requêtes.
@+
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
12 mai 2011 à 14:50
Hi!
Peut-être faudrait-il d'abord que tu respectes un peu plus la syntaxe du code dont tu as fourni l'adresse!
(Attention, la V3 est nettement moins permissive que la V2)
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
12 mai 2011 à 09:23
C'est vrai que je n'ai pas le réflexe des é et compagnie, mauvaise habitude Dreamweaver...
Bon, concernant l'API en version 3, j'ai un code qui marche (enfin de mon côté, car les réponses de Google Maps étaient bien plus cohérentes en version 2 comme le présupposait opossum_farceur), mais je n'arrive pas à générer de message d'erreur sur les éléments de la matrice de réponse (voir http://code.google.com/intl/fr-FR/apis/maps/documentation/javascript/services.html#distance_matrix_element_status_codes): l'API ne me renvoie jamais le code NOT_FOUND ou ZERO_RESULTS lorsque je rentre des adresses incohérentes ou que je demande la distance routière entre France et Cuba, elle se contente de ne pas réagir. Je précise que je ne connais pas la syntaxe (GG n'est pas très clair là-dessus) à employer et que j'utilise l'instruction (if (element.status=='OK'){}).
Quelqu'un a une idée ?
defis91 Messages postés 65 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 8 août 2011
11 mai 2011 à 15:36
Tu peux coder les voyelles accentuées en UTF-8 si tu veux, mais le plus simple et d'indiquer que tu les a codées en mode Windows et tu les tapes en direct.
Pour ne pas avoir de problème avec le charset, tu peux les coder en HTML
par exemple é est codé é

A+
Dom
cs_nebenobo Messages postés 16 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 3 décembre 2013
11 mai 2011 à 15:22
@defis91 : merci pour l'info (et la note) mais utf-8 n'est pas universel, justement ? Qu'est ce qui pose problème en fait, les messages d'alerte ou le fait de rentrer des accents dans les champs du formulaire ?

@opossum_farceur : exact, je n'avais pas vu, je suis en train de bosser sur la même appli en version 3 mais je ne trouve pas la syntaxe pour faire apparaître les messages d'erreur. Je poste dès que c'est réglé.
defis91 Messages postés 65 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 8 août 2011
11 mai 2011 à 14:47
Ça marche et c'est bien utile pour le calcul des frais kilométriques...
Change le charset utf-8 avec :
<meta http-equiv="Content-Type" content="text/html; charset=window-1251" />

... si tu utilise des voyelles accentuées dans les textes.

Dom
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
10 mai 2011 à 23:08
Hi!
A en croire le contenu de la page :
http://www.weboblog.fr
"Depuis mai 2010, la version 2 de l'Api Google Map est dépréciée."
Mais bon, çà ne veut pas dire pour autant que la V3 marche mieux!
Rejoignez-nous