Lancer une fonction sans appuie de bouton

pierrotm777 Messages postés 24 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 27 mai 2013 - 1 juin 2010 à 16:44
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 2 juin 2010 à 20:22
Bonjour,
Je suis nouveau quant à l'utilisation de Java et ne suis pas certain d'utiliser le bon titre de 'thème' mais bon.

J'ai récupéré une page html qui fonctionne autour des api de de goole maps.

Elle est constituée de deux input, deux boutons pour valider chaque input, puis d'un dernier bouton pour lancer le calcul final (donne un tracé d'une route dans google maps).

Le code est le suisvant:
[code= html]




Google Maps Multi-Point Routing for Ride Runner












Enter the address of the starting point or click the map.









Enter the address of the destination point or click the map.










Drag the markers as required.




JavaScript must be enabled in order for you to use Google Maps.
However, it seems JavaScript is either disabled or not supported by your browser.
To view Google Maps, enable JavaScript by changing your browser options, and then
try again.



//Create a Client Geocoder
var geo = new GClientGeocoder(new GGeocodeCache());

// Array for decoding the failure codes
var reasons=[];
reasons[G_GEO_SUCCESS] = "Success";
reasons[G_GEO_MISSING_ADDRESS] = "Missing Address: The address was either missing or had no value.";
reasons[G_GEO_UNKNOWN_ADDRESS] = "Unknown Address: No corresponding geographic location could be found for the specified address.";
reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address: The geocode for the given address cannot be returned due to legal or contractual reasons.";
reasons[G_GEO_BAD_KEY] = "Bad Key: The API key is either invalid or does not match the domain for which it was given";
reasons[G_GEO_TOO_MANY_QUERIES] = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
reasons[G_GEO_SERVER_ERROR] = "Server error: The geocoding request could not be successfully processed.";
reasons[G_GEO_BAD_REQUEST] = "A directions request could not be successfully parsed.";
reasons[G_GEO_MISSING_QUERY] = "No query was specified in the input.";
reasons[G_GEO_UNKNOWN_DIRECTIONS] = "The GDirections object could not compute directions between the points.";

// Geocoding
function showAddress() {
if (state==0) {
var search = document.getElementById("search").value;
addresses[0] = search;
}
if (state==1) {
var search = document.getElementById("search2").value;
addresses[4] = search;
}
geo.getLatLng(search, function (point)
{
if (point) {
if (state==1) {doEnd(point)}
if (state==0) {doStart(point)}
}
else {
var result=geo.getCache().get(search);
if (result) {
var reason="Code "+result.Status.code;
if (reasons[result.Status.code]) {
reason = reasons[result.Status.code]
}
} else {
var reason = "";
}
alert('Could not find "'+search+ '" ' + reason);
}
}
);
}

function swapMarkers(i) {
map.removeOverlay(gmarkers[i]);
createMarker(path[i],i,icon2);
}

var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.iconSize=new GSize(24,38);

var icon1 = G_START_ICON;
var icon2 = G_PAUSE_ICON;
var icon3 = G_END_ICON;
var icon4 = new GIcon(baseIcon,"http://labs.google.com/ridefinder/images/mm_20_white.png");
icon4.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
icon4.iconSize = new GSize(12, 20);
icon4.shadowSize = new GSize(22, 20);
icon4.iconAnchor = new GPoint(6, 20);
icon4.infoWindowAnchor = new GPoint(5, 1);


function createMarker(point,i,icon) {
var marker = new GMarker(point, {draggable:true,icon:icon});
gmarkers[i]=marker;
GEvent.addListener(marker, "dragend", function() {
path[i] = marker.getPoint();
if (!active[i]) {
setTimeout('swapMarkers('+i+')', 1000);
}
active[i] = true;
addresses[i] = "";
});
map.addOverlay(marker);
}


// Array to contain the points of the path
var path = [];
var active = [true,false,false,false,true];
var gmarkers = [];
var addresses = [];

// State Driven Processing
var state = 0;

function handleState() {
if (state == 0) {
document.getElementById("start").style.display = "block";
document.getElementById("end").style.display = "none";
document.getElementById("drag").style.display = "none";
}
if (state == 1) {
document.getElementById("start").style.display = "none";
document.getElementById("end").style.display = "block";
document.getElementById("drag").style.display = "none";
}
if (state == 2) {
document.getElementById("start").style.display = "none";
document.getElementById("end").style.display = "none";
document.getElementById("drag").style.display = "block";
}
}

handleState();

GEvent.addListener(map, "click", function(overlay,point) {
if (point) {
if (state == 1) { doEnd(point) }
if (state == 0) { doStart(point) }
}
});

function doStart(point) {
createMarker(point,0,icon1);
path[0] = point;
state = 1;
handleState();
}

function doEnd(point) {
createMarker(point,4,icon3);
path[4] = point;
state = 2;
handleState();
for (var i=1; i0; i--) {
if (active[i]) {
b = path[i].toUrlValue(6) +" to: "+b;
}
}
var a = "from: "+a + " to: " + b;
gdir.load(a, {getPolyline:true});
}
}

// display a warning if the browser was not compatible
else {
alert("Sorry, the Google Maps API is not compatible with this browser");
}







Je voudrais que la fontion direction(), partie en rouge, soit lancée directement après l'appui sur le deuxième bouton.

Merci de votre aide

7 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
1 juin 2010 à 22:25
Bonjour,
Je voudrais que la fontion direction(), partie en rouge, soit lancée directement après l'appui sur le deuxième bouton
intègres la fonction sur le onclick du 2éme bouton.
;O)
0
pierrotm777 Messages postés 24 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 27 mai 2013
2 juin 2010 à 11:46
Déjà merci de ta réponse,

C'est bien ce que je pensais faire, j'ai d'ailleurs essayé mais sans succès .

Merci de ton aide par avance
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 juin 2010 à 18:04
Bonjour,
rien ne t'empêches d'écrire...
<form onsubmit="showAddress(); directions(); return false" action="#">

;O)
0
pierrotm777 Messages postés 24 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 27 mai 2013
2 juin 2010 à 19:04
J'ai déjà essayé cette possibilité .

J'obtient alors un message du genre:

Ce programme ne peut pas afficher la page Web.

Causes les plus probables :
Vous n’êtes pas connecté à Internet.
Le site Web rencontre des problèmes.
Il se peut que l’adresse contienne une erreur de frappe.

Essayez la chose suivante :
Vérifiez votre connexion Internet. Essayez d’accéder à un autre site Web pour vérifier que vous êtes connecté.

Saisissez à nouveau l’adresse.

Aller à la page précédente.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 juin 2010 à 19:17
...dans ce cas modifies la fonction handleState comme suit
function handleState() {
  if (state == 0) {
    document.getElementById("start").style.display = "block";
    document.getElementById("end").style.display = "none";
    document.getElementById("drag").style.display = "none";
  }
  if (state == 1) {
    document.getElementById("start").style.display = "none";
    document.getElementById("end").style.display = "block";
    document.getElementById("drag").style.display = "none";
  }
  if (state == 2) {
    document.getElementById("start").style.display = "none";
    document.getElementById("end").style.display = "none";
    //-- SUPPRIMER l'affichage du bouton
    //  document.getElementById("drag").style.display = "block";
    //-- AJOUT fonction ICI
    directions();
  }
}
cela devrait le faire...

;O)
0
pierrotm777 Messages postés 24 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 27 mai 2013
2 juin 2010 à 19:43
Moi je dis, MONSIEUR !!!

Merci beaucoup !

C'est exactement ce que je voulais
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 juin 2010 à 20:22
- N'oubliez pas qu'un forum ne sert pas qu'à poser sa question!
- Il sert aussi, aux autres, à trouver une réponse satisfaisante à une question.
- Merci de mettre en réponse acceptée, la réponse qui vous a aidé ou même votre propre solution.
- C'est aussi cela l'esprit d'un forum...

;O)
0
Rejoignez-nous