Google Map : Tester l'existence d'un point + calcul distance
12 messages
• Page 1 sur 1
Consultez la formation Google Maps, News, Images de WebRankInfo / Ranking Metrics
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
Google Map : Tester l'existence d'un point + calcul distance
Bonjour a tous !
Je galère un peu avec l'API google Map...
J'ai un formulaire, l'utilisateur rentre son adresse. Ensuite, je veux calculer son itinéraire vers un point fixe.
Le probleme, c'est que lorsqu'il entre une adresse inexistante, la carte buggue. Du coup je veux tester l'existe du point avant de calculer l'itinéraire...
Et pour tester l'existence du point :
Le probleme vient bien de ma fonction testpoint() car si je remplace if(testpoint(adresse)) par if(1), ça fonctionne...
Merci d'avance pour votre aide !
Je galère un peu avec l'API google Map...
J'ai un formulaire, l'utilisateur rentre son adresse. Ensuite, je veux calculer son itinéraire vers un point fixe.
Le probleme, c'est que lorsqu'il entre une adresse inexistante, la carte buggue. Du coup je veux tester l'existe du point avant de calculer l'itinéraire...
- Code: Tout sélectionner
var geocoder = new GClientGeocoder();
// Ma fonction sensée tester l'existence du point
function testpoint(address){
geocoder.getLatLng(address,
function(point){
if (!point){
alert(address + " n'a pas été trouvé.");
return 0;
}
else
return 1;
});
}
Et pour tester l'existence du point :
- Code: Tout sélectionner
if(testpoint(adresse)){
// Mon calcul d'itinéraire, et tout...
}
Le probleme vient bien de ma fonction testpoint() car si je remplace if(testpoint(adresse)) par if(1), ça fonctionne...
Merci d'avance pour votre aide !
Dernière édition par numerodix le Mer Oct 15, 2008 9:22, édité 1 fois.
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
getLatLng ne renvoie rien, et certainement pas ce que renvoie ton callback.
Il faut que ton callback affecte une valeur à une variable globale (ou à quelque chose dans un objet que tu lui passerais en paramètre), et que tu vérifies cette valeur.
Jacques.
Il faut que ton callback affecte une valeur à une variable globale (ou à quelque chose dans un objet que tu lui passerais en paramètre), et que tu vérifies cette valeur.
Jacques.
- jeroen
- WRInaute passionné

- Messages: 2461
- Inscription: 30 Aoû 2002
Va voir par là http://econym.org.uk/gmap/geo.htm
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
Merci pour vos réponses !
Finalement, j'ai fais comme ça :
Par contre, j'ai un autre soucis maintenant...
J'ai une liste de marqueurs (en dur). J'ai mon formulaire ou l'utilisateur entre sa ville.
Une fois sa ville récupérée, je calcule les itinéraires vers tous les points.
Ils s'affichent tous sur la carte. Et justement, je ne souhaite afficher que le plus court...
Voici mon code :
est-il possible de calculer la duree du trajet, sans l'afficher ?
J'ai trouvé cette fonction mais je n'arrive pas à l'appliquer : getDuration().seconds;
Merci d'avance !
Finalement, j'ai fais comme ça :
- Code: Tout sélectionner
var geocoder2 = new GClientGeocoder();
geocoder2.getLatLng(adresse, function(point){
if (!point){
alert(adresse + " n'existe pas.");
}
else{
// Mon calcul d'itinéraire...
}
});
Par contre, j'ai un autre soucis maintenant...
J'ai une liste de marqueurs (en dur). J'ai mon formulaire ou l'utilisateur entre sa ville.
Une fois sa ville récupérée, je calcule les itinéraires vers tous les points.
Ils s'affichent tous sur la carte. Et justement, je ne souhaite afficher que le plus court...
Voici mon code :
- Code: Tout sélectionner
directionsPanel = document.getElementById("route");
directions = new GDirections(map,directionsPanel);
directions.load("from:"+adresse+" to:"+magasin1.adresse);
directions2 = new GDirections(map,directionsPanel);
directions2.load("from:"+adresse+" to:"+magasin2.adresse);
directions3 = new GDirections(map,directionsPanel);
directions3.load("from:"+adresse+" to:"+magasin3.adresse);
est-il possible de calculer la duree du trajet, sans l'afficher ?
J'ai trouvé cette fonction mais je n'arrive pas à l'appliquer : getDuration().seconds;
Merci d'avance !
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
C'est pourtant tout marqué dans la doc:
http://code.google.com/apis/maps/docume ... Directions
Il suffit de créer l'objet GDirections sans lui donner de map ou de panel, et il ne l'affichera pas. Et ensuite a priori tu fais un directions.getDistance.meters ou directions.getDuration.seconds et hop.
(ceci dit je n'ai jamais essayé)
Jacques.
http://code.google.com/apis/maps/docume ... Directions
Il suffit de créer l'objet GDirections sans lui donner de map ou de panel, et il ne l'affichera pas. Et ensuite a priori tu fais un directions.getDistance.meters ou directions.getDuration.seconds et hop.
(ceci dit je n'ai jamais essayé)
Jacques.
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
- Code: Tout sélectionner
directions = new GDirections();
directions.load("from:"+adresse[1]+" to:"+magasin1.adresse);
alert(directions.getDuration.seconds);
L'alert me renvoie "undefined"...
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
J'ai presque réussit !
L'alerte m'affiche les bonnes valeurs.
Le soucis c'est que je veux exploiter ces données à l'extérieur du GEvent.addListener().
Mais si je fais un alert(iti.distance); par exemple, il ne m'affiche rien...
- Code: Tout sélectionner
directions = new GDirections();
directions.load("from:"+adresse[1]+" to:"+magasin1.adresse);
GEvent.addListener(directions,"load", function() {
var mesure = directions.getDistance().meters;
var duree = directions.getDuration().seconds;
var iti = new dist(mesure,duree);
alert("Distance en metres : "+iti.distance+"\nTemps en secondes : "+iti.duree);
});
L'alerte m'affiche les bonnes valeurs.
Le soucis c'est que je veux exploiter ces données à l'extérieur du GEvent.addListener().
Mais si je fais un alert(iti.distance); par exemple, il ne m'affiche rien...
- jeroen
- WRInaute passionné

- Messages: 2461
- Inscription: 30 Aoû 2002
ta variable iti doit être déclarée de façon globale > il ne faut par mettre
mais
sinon tu peux ajouter un listener sur le chargement
qui te te permet de balancer la fonction
- Code: Tout sélectionner
var iti=...
mais
- Code: Tout sélectionner
iti=...
sinon tu peux ajouter un listener sur le chargement
- Code: Tout sélectionner
GEvent.addListener(directions, "load", onGDirectionsLoad);
qui te te permet de balancer la fonction
- Code: Tout sélectionner
function onGDirectionsLoad()
{
ce que tu veux
}
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
J'ai enlevé le var de iti et ça me fait la même chose...
- Code: Tout sélectionner
directions = new GDirections();
directions.load("from:"+adresse[1]+"to:"+magasin1.adresse);
GEvent.addListener(directions,"load", function() {
mesure = directions.getDistance().html;
duree = directions.getDuration().html;
mesure = mesure.replace(" "," ");
iti = new dist(mesure,duree);
});
alert("Trajet : Votre domicile - "+magasin1.nom+"\nDistance : "+iti.distance+"\nTemps de trajet : "+iti.duree);
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
J'arrive a avoir mon alerte !
Mais iti est vide...
Mais iti est vide...
- Code: Tout sélectionner
function dist(distance,duree){
this.distance = distance;
this.duree = duree;
}
var iti = new dist('','');
directions = new GDirections();
directions.load("from:"+adresse[1]+" to:"+magasin1.adresse);
GEvent.addListener(directions,"load", function() {
var mesure = directions.getDistance().html;
var duree = directions.getDuration().html;
mesure = mesure.replace(" "," ");
iti.distance = mesure;
iti.duree = duree;
});
alert("Trajet : Votre domicile - "+magasin1.nom+"\nDistance : "+iti.distance+"\nTemps de trajet : "+iti.duree);
- jeroen
- WRInaute passionné

- Messages: 2461
- Inscription: 30 Aoû 2002
c'est quoi ça ?
perso je viens de faire un test,
rend "duree" disponible à l'extérieur.
- Code: Tout sélectionner
var iti = new dist('','');
var mesure = directions.getDistance().html;
var duree = directions.getDuration().html;
mesure = mesure.replace(" "," ");
iti.distance = mesure;
iti.duree = duree;
perso je viens de faire un test,
- Code: Tout sélectionner
duree = directions.getDuration().html;
rend "duree" disponible à l'extérieur.
- numerodix
- WRInaute discret

- Messages: 108
- Inscription: 13 Déc 2007
Duree et mesure ne sont pas disponibles a l'extérieur pour moi... :/
- Code: Tout sélectionner
directions = new GDirections();
directions.load("from:"+adresse[1]+"to:"+magasin1.adresse);
GEvent.addListener(directions,"load", function() {
mesure = directions.getDistance().html;
duree = directions.getDuration().html;
mesure = mesure.replace(" "," ");
});
iti = new dist(mesure,duree);
alert("Trajet : Votre domicile - "+magasin1.nom+"\nDistance : "+iti.distance+"\nTemps de trajet : "+iti.duree);
12 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Maps, Google News et Google Images : apprenez comment optimiser le référencement de votre site pour la recherche universelle et notamment Google Maps, Google Actualités et Google Images. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Changer les icones dans le calcul d'itinéraire de Google Map
- Existence d'une session
- Liste d'URL Google Map -> Une seul carte Google Map avec tous les points
- [Google Maps API] - Calculer une distance à vol d'oiseau
- URL Google de calcul de pagerank ?
- calcul du google rank et annuaires
- Algorithme de calcul du checksum Google a jour ?
- Tester les requêtes google
- calcul du zoom dans google maps
- Formation à distance
Consultez la description détaillée des produits ou services de Google suivants : Google Measure Map
- Test de redirection
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
