Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
J'ai ce code et j'aimerai faire des ameliorations mais je ne sais pas comment ni si cela est possible.
J'aimerai
1. avoir un n° ou l'adresse du point dans les icones de la map pour le 1 itineraire
(exemple "1" pour le depart "2" pour le passage "3" pour l'arrivée) (voir meme changer les icones)
2. avoir 2 couleurs dif pour les 2 itineraires
3. pourvoir imprimer le premier ou le 2ieme itineraire ou la map
4. pouvoir recuperer dans l'itineraire 1 le temps et le Km entre le point 1 et le point 2 et entre le point 2 et le point 3 ( je sais recuperer le temps total grace à "getDuration" &"getDistance")
Merci pour votre aide
<!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"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google Map</title> <script src="http://maps.google.com/?file=api&v=2.x&key=ABQIAAAAh2zoWMP0DQLo9f7vBYl0hBSyaqskaCUMELwiGYjmANrqiZdV2BQ0uMpj7_WCl34Qp6K8cwrz9MMJpg" type="text/javascript"></script> <style type="text/css"> v\:* { behavior:url(#default#VML); } body { font-family: Verdana, Arial, sans serif; font-size: 11px; margin: 1px; } table.directions1 th { background-color:#EEEEEE; } table.directions2 th { background-color:#EEEEEE; } img { color: #000000; } </style> <script type="text/javascript"> //<![CDATA[ var map; var gdir1; var gdir2; var geocoder = null; var addressMarker; var fromAddress = "6 BIS RUE JULES GUESDE 59390 LYS LEZ LANNOY"; var toAddress = "1 RUE PAUL LANGEVIN 59260 LEZENNES to: 27 AVENUE DE LA REPUBLIQUE 59160 LOMME"; var fromAddress2 = "4 BOULEVARD GAMBETTA 59100 ROUBAIX"; var toAddress2 = "40 RUE SAINT JACQUES 59200 TOURCOING"; var locale = "fr"; function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); gdir1 = new GDirections(map, document.getElementById("directions1")); GEvent.addListener(gdir1, "load", onGDirectionsLoad); GEvent.addListener(gdir1, "error", handleErrors); gdir2 = new GDirections(map, document.getElementById("directions2")); GEvent.addListener(gdir2, "load", onGDirectionsLoad); GEvent.addListener(gdir2, "error", handleErrors); setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale); } } function setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale) { gdir1.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale }); gdir2.load("from: " + fromAddress2 + " to: " + toAddress2, { "locale": locale } ,{getPolyline:false}); // { "locale": locale } ,{getPolyline:false}); } function handleErrors(){ if (gdir1.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("Aucun endroit géographique correspondant n'a pu être trouvé pour une des adresses indiquées. Ceci peut être dû au fait que l'adresse est relativement nouvelle, ou elle peut être incorrecte.\nError code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_SERVER_ERROR) alert("Geocoding ou une demande de directions ne pourrait pas être avec succès traité, pourtant la raison exacte de l'échec n'est pas connue.\n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_MISSING_QUERY) alert(" Le paramètre de HTTP q ne manquait ou a eu aucune valeur. Pour des demandes de geocoder, ceci signifie qu'une adresse vide a été indiquée comme entrée. Pour des demandes de directions, ceci signifie qu'aucune question n'a été indiquée dans l'entrée .\n Error code: " + gdir1.getStatus().code); // else if (gdir1.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_KEY) alert("La clef donnée est invalide ou pas match le domaine pour lequel il a été donné . \n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_REQUEST) alert("Une demande de directions n'a pas pu être avec succès analysée .\n Error code: " + gdir1.getStatus().code); else if (gdir2.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("Aucun endroit géographique correspondant n'a pu être trouvé pour une des adresses indiquées. Ceci peut être dû au fait que l'adresse est relativement nouvelle, ou elle peut être incorrecte.\nError code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_SERVER_ERROR) alert("Geocoding ou une demande de directions ne pourrait pas être avec succès traité, pourtant la raison exacte de l'échec n'est pas connue.\n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_MISSING_QUERY) alert(" Le paramètre de HTTP q ne manquait ou a eu aucune valeur. Pour des demandes de geocoder, ceci signifie qu'une adresse vide a été indiquée comme entrée. Pour des demandes de directions, ceci signifie qu'aucune question n'a été indiquée dans l'entrée .\n Error code: " + gdir2.getStatus().code); // else if (gdir2.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_KEY) alert("La clef donnée est invalide ou pas match le domaine pour lequel il a été donné . \n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_REQUEST) alert("Une demande de directions n'a pas pu être avec succès analysée .\n Error code: " + gdir2.getStatus().code); else alert("Une erreur inconnue s'est produite ."); } function onGDirectionsLoad(){ // Use this function to access information about the latest load() // results. // e.g. document.getElementById("getDuration").value = gdir1.getDuration().seconds; document.getElementById("getDistance").value = gdir1.getDistance().meters; // document.getElementById("getDuration").value = gdir2.getDuration().seconds; // document.getElementById("getDistance").value = gdir2.getDistance().meters; } //]]> </script> </head> <body onload="load()" onunload="GUnload()"> <input type="hidden" id="getDuration" name="getDuration" size="30" /> <input type="hidden" id="getDistance" name="getDistance" size="30" /> <input type="hidden" id="getSummaryHtml" name="getSummaryHtml" size="10000" /> <form action="#" onsubmit="setDirections(this.from.value, this.to.value,this.from.value, this.to.value, locale); return false"> </form> <br/> <table class="directions"> <tr><th>Itineraire1 </th><th>Itineraire2 </th><th>Map</th></tr> <tr> <td valign="top"><div id="directions1" style="width: 275px"></div></td> <td valign="top"><div id="directions2" style="width: 275px"></div></td> <td valign="top"><div id="map" style="width: 410px; height: 500px"></div></td> </tr> </table> </body> </html>
Dernière modification par JCZ (13-06-2007 11:47:31)
Hors ligne
JCZ a écrit:
Merci chef
Mais en pb10 cela explose
Il faut ajouter dans event externalexception de ole_BrowserCode: pb
Action = ExceptionSubstituteReturnValue! ReturnValue = 0
Moi j'ai mis l'appel au GoBack() en commentaire pour que ça marche en 10.5
Je vais ajouter tes deux lignes...
Hors ligne
Chrnico a écrit:
JCZ a écrit:
Merci chef
Mais en pb10 cela explose
Il faut ajouter dans event externalexception de ole_BrowserCode: pb
Action = ExceptionSubstituteReturnValue! ReturnValue = 0Moi j'ai mis l'appel au GoBack() en commentaire pour que ça marche en 10.5
Je vais ajouter tes deux lignes...
En ajoutant les deux lignes dans externalexception avec le ReturnValue 0 ça boucle à l'infini et ça ouvre des pages web à neplus finir
Donc finalement il vaut mieux laisser l'appel au GoBack() en commentaire pour le moment.
Hors ligne
Il y en a qui planchent sur le même problème et qui ont des soluces a priori
http://grenoble.jeudego.org/indexF.php? … vt268.html
Extrait
Après quelques experimentations, il semble que le mieux pour obtenir les coordonnées soit d'uiliser google map:
1- Aller sur google map: http://maps.google.fr
2- Entrer l'adresse à localiser
3- double-cliquer sur la punaise du lieu recherché
3- cliquer sur 'obtenir l'url de cette page' (au dessus à droite de la map)
4- Récupérer les coordonnées latitude et longitude dans la barre d'adresse. Les valeurs se trouvent derrière le tag &ll OU, si le tag &ll n'existe pas, derriere le tag &sll. S'il y a les 2, prendre les valeurs derriere &ll.
Reste a résoudre le prob du double-clique sur la punaise
Autre lien :
http://seig.ensg.ign.fr/fiche.php3?NOCO … =&RPC=
Dernière modification par Chrnico (14-06-2007 19:07:07)
Hors ligne
je ne sais pas si tu as vu, mais nous savons deja faire cela...
recuperer les coordonnees latitude et longitude...
c'est plutot l'adresse qui nous interesse... à moins que j'ai loupé quelque chose dans ses liens...
Hors ligne
pick ouic a écrit:
je ne sais pas si tu as vu, mais nous savons deja faire cela...
recuperer les coordonnees latitude et longitude...
c'est plutot l'adresse qui nous interesse... à moins que j'ai loupé quelque chose dans ses liens...
Non j'avais pas vu. Désolé
Hors ligne
pick ouic a écrit:
je ne sais pas si tu as vu, mais nous savons deja faire cela...
recuperer les coordonnees latitude et longitude...
c'est plutot l'adresse qui nous interesse... à moins que j'ai loupé quelque chose dans ses liens...
J'arrive peut-être encore après la bataille mais le paragraphe "Extracting Structured Address Information" de la page suivante me semble assez instructif....
http://www.google.com/apis/maps/documen … g_Examples
Hors ligne
en mettant comme ca, ca ira peut etre mieux ?
/**********************************************************************************************/ /* Nom : titlechange ole_browser */ /* But : */ /* Arguments: */ /* Appel : */ /* Remarques: */ /* Histo : SKA - juin 2007 */ /**********************************************************************************************/ // contenu l'url is_url = Text if len(trim(is_url)) > 0 and not isnull(is_url) then if lower(is_url) <> 'application google map' then this.Object.GoBack() end if end if
Hors ligne
Yep
Hors ligne
Chrnico a écrit:
Moi j'ai mis l'appel au GoBack() en commentaire pour que ça marche en 10.5
Je vais ajouter tes deux lignes...
Il y a effectivement 2 problemes en pb 10.2
1. une explosion -> corriger par
Action = ExceptionSubstituteReturnValue!
ReturnValue = 0
2. pas de chargement de la page ( pick ouic j'ai pas testé ton code )
je pense qu'il faut plutot un truc du style
if len(trim(is_url)) > 0 and not isnull(is_url) then
if pos( lower(is_url) , 'application google map') = 0 then
this.Object.GoBack()
end if
end if
mais je crois qu'on n'a pas le droit de faire cela. C'est les conditions pour utiliser googlemap
----------
pick ouic tu as la meme chose que ( geocodage.php + GoogleMapsHTTPRequest.class.php )
echo '<br />LATITUDE: '.$ga->getVar('latitude');
echo '<br />LONGITUDE: '.$ga->getVar('longitude');
pour pouvoir recuperer la distance et le kmage entre 2 points ?
Cela peut me servir quand j'ai plusieurs etapes dans un itineraie
----------
vous avez trouvé qqchose pour : post #34
J'aimerai
1. avoir un n° ou l'adresse du point dans les icones de la map pour le 1 itineraire
(exemple "1" pour le depart "2" pour le passage "3" pour l'arrivée) (voir meme changer les icones)
2. avoir 2 couleurs dif pour les 2 itineraires
3. pourvoir imprimer le premier ou le 2ieme itineraire ou la map
4. pouvoir recuperer dans l'itineraire 1 le temps et le Km entre le point 1 et le point 2 et entre le point 2 et le point 3 ( je sais recuperer le temps total grace à "getDuration" &"getDistance")
je suis preneur meme avec virtualearth mais il faudrait voir s'il existe une option de langue comme avec google ...
(j'ai pas eu le temps de regarder virtualearth )
----------
vous avez vue que google
http://www.infos-du-net.com/telecharger … -5288.html
Avec pb en version pocketpc .....
mais c'est pour plus tard
@+ les amis
Hors ligne
adresses de geocoding...
on peut trouver la ville à partir des latitudes et longitudes.
http://ws.geonames.org/findNearbyPlaceN … g=2.298605
http://www.geonames.org/export/
Hors ligne
voila, il faut juste mettre ca sur l'evenement titlechange
/**********************************************************************************************/ /* Nom : titlechange ole_browser */ /* But : */ /* Arguments: */ /* Appel : */ /* Remarques: */ /* Histo : SKA - juin 2007 */ /**********************************************************************************************/ // contenu l'url is_url = Text
puis sur l'event documentcomplete
/**********************************************************************************************/ /* Nom : documentcomplete ole_browser */ /* But : */ /* Arguments: */ /* Appel : */ /* Remarques: */ /* Histo : SKA - juin 2007 */ /**********************************************************************************************/ // contenu html du résultat is_html = this.Object.Document.DocumentElement.InnerHTML if lower(is_url) = 'untitled document' then this.Object.GoBack() end if if lower(is_url) = 'google maps' then this.Object.GoBack() end if
Hors ligne
petit up de la version 3, à telecharger...
Hors ligne
Tracage de l'itineraire, pour le mode GPS... à voir dans la derniere version 3.
Hors ligne
une solution pour trouver une adresse, par rapport à la latitude et longitude ?
comme vous pouvez le voir sur le map gps, j'ai trouvé un code pour changer la couleur de tracage.
var points = []; for (var i = 0; i < poly.getVertexCount(); i++) { points[i] = poly.getVertex(i); } var mypoly = new GPolyline(points, "#FF0000", 9, 0.6); map.addOverlay(mypoly);
Hors ligne
pick ouic a écrit:
une solution pour trouver une adresse, par rapport à la latitude et longitude ?
non
pick ouic a écrit:
comme vous pouvez le voir sur le map gps, j'ai trouvé un code pour changer la couleur de tracage.
Merci J'avais pas vu ... mais j'arrive pas à le faire marcher ( j'ai pas beaucoup chercher ) si tu as une idée
ci joint code
<!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"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google Map</title> <script src="http://maps.google.com/?file=api&v=2.x&key=ABQIAAAAh2zoWMP0DQLo9f7vBYl0hBSyaqskaCUMELwiGYjmANrqiZdV2BQ0uMpj7_WCl34Qp6K8cwrz9MMJpg" type="text/javascript"></script> <style type="text/css"> v\:* { behavior:url(#default#VML); } body { font-family: Verdana, Arial, sans serif; font-size: 11px; margin: 1px; } table.directions1 th { background-color:#EEEEEE; } table.directions2 th { background-color:#EEEEEE; } img { color: #000000; } </style> <script type="text/javascript"> //<![CDATA[ var eol; var tick = 100; // milliseconds var poly; var map; var distance; var gdir1 = new GDirections(); var gdir2; var geocoder = null; var load_fin = false; var addressMarker; var fromAddress = "6 BIS RUE JULES GUESDE 59390 LYS LEZ LANNOY"; var toAddress = "1 RUE PAUL LANGEVIN 59260 LEZENNES to: 27 AVENUE DE LA REPUBLIQUE 59160 LOMME"; var fromAddress2 = "4 BOULEVARD GAMBETTA 59100 ROUBAIX"; var toAddress2 = "40 RUE SAINT JACQUES 59200 TOURCOING"; var locale = "fr"; var car = new GIcon(); car.image="caricon.png" car.iconSize=new GSize(32,18); car.iconAnchor=new GPoint(16,9); var baseIcon = new GIcon(); baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; baseIcon.iconSize = new GSize(20, 34); baseIcon.shadowSize = new GSize(37, 34); baseIcon.iconAnchor = new GPoint(9, 34); baseIcon.infoWindowAnchor = new GPoint(9, 2); baseIcon.infoShadowAnchor = new GPoint(18, 25); function load() { var icone_perso = new GIcon(); icone_perso.image="caricon.png" icone_perso.iconSize=new GSize(32,18); icone_perso.iconAnchor=new GPoint(16,9); if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); // map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GLargeMapControl()); map.addControl(new GScaleControl()); map.addControl(new GOverviewMapControl()) gdir1 = new GDirections(map, document.getElementById("directions1")); GEvent.addListener(gdir1, "load", onGDirectionsLoad1); GEvent.addListener(gdir1, "error", handleErrors); gdir2 = new GDirections(map, document.getElementById("directions2")); GEvent.addListener(gdir2, "load", onGDirectionsLoad2); GEvent.addListener(gdir2, "error", handleErrors); setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale); } } function setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale) { gdir1.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale }); gdir2.load("from: " + fromAddress2 + " to: " + toAddress2, { "locale": locale } ,{getPolyline:false}); } function handleErrors(){ if (gdir1.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("Aucun endroit géographique correspondant n'a pu être trouvé pour une des adresses indiquées. Ceci peut être dû au fait que l'adresse est relativement nouvelle, ou elle peut être incorrecte.\nError code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_SERVER_ERROR) alert("Geocoding ou une demande de directions ne pourrait pas être avec succès traité, pourtant la raison exacte de l'échec n'est pas connue.\n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_MISSING_QUERY) alert(" Le paramètre de HTTP q ne manquait ou a eu aucune valeur. Pour des demandes de geocoder, ceci signifie qu'une adresse vide a été indiquée comme entrée. Pour des demandes de directions, ceci signifie qu'aucune question n'a été indiquée dans l'entrée .\n Error code: " + gdir1.getStatus().code); // else if (gdir1.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_KEY) alert("La clef donnée est invalide ou pas match le domaine pour lequel il a été donné . \n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_REQUEST) alert("Une demande de directions n'a pas pu être avec succès analysée .\n Error code: " + gdir1.getStatus().code); else if (gdir2.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("Aucun endroit géographique correspondant n'a pu être trouvé pour une des adresses indiquées. Ceci peut être dû au fait que l'adresse est relativement nouvelle, ou elle peut être incorrecte.\nError code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_SERVER_ERROR) alert("Geocoding ou une demande de directions ne pourrait pas être avec succès traité, pourtant la raison exacte de l'échec n'est pas connue.\n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_MISSING_QUERY) alert(" Le paramètre de HTTP q ne manquait ou a eu aucune valeur. Pour des demandes de geocoder, ceci signifie qu'une adresse vide a été indiquée comme entrée. Pour des demandes de directions, ceci signifie qu'aucune question n'a été indiquée dans l'entrée .\n Error code: " + gdir2.getStatus().code); // else if (gdir2.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_KEY) alert("La clef donnée est invalide ou pas match le domaine pour lequel il a été donné . \n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_REQUEST) alert("Une demande de directions n'a pas pu être avec succès analysée .\n Error code: " + gdir2.getStatus().code); else alert("Une erreur inconnue s'est produite ."); } function onGDirectionsLoad1(){ distance = ""; for (var i = 0; i +1 < gdir1.getNumGeocodes(); i++) { distance = distance + "#" + gdir1.getRoute(i).getDistance().meters; var marque = gdir1.getMarker(i); marque = new GMarker(marque.getPoint(),{icon:car}); map.addOverlay(marque); } document.getElementById("distance").value = distance; alert(distance); load_fin = true; } function onGDirectionsLoad2(){ // Use this function to access information about the latest load() // results. // e.g. } GEvent.addListener(gdir1,"load", function() { document.getElementById("controls").style.display="none"; poly=gdir1.getPolyline(); eol=poly.Distance(); map.setCenter(poly.getVertex(0),17); map.addOverlay(new GMarker(poly.getVertex(0),G_START_ICON)); map.addOverlay(new GMarker(poly.getVertex(poly.getVertexCount()-1),G_END_ICON)); marker = new GMarker(poly.getVertex(0),{icon:car}); map.addOverlay(marker); for (var i = 0; i < poly.getVertexCount(); i++) { points[i] = poly.getVertex(i); } var mypoly = new GPolyline(points, "#FF0000", 9, 0.6); map.addOverlay(mypoly); var steptext = gdir1.getRoute(0).getStep(stepnum).getDescriptionHtml(); document.getElementById("step").innerHTML = steptext; setTimeout("animate(0)",2000); // Allow time for the initial map display }); //]]> </script> </head> <body onload="load()" onunload="GUnload()"> <input type="hidden" id="getDuration" name="getDuration" size="30" /> <input type="hidden" id="Distance" name="Distance" size="300" /> <input type="hidden" id="getSummaryHtml" name="getSummaryHtml" size="30" /> <form action="#" onsubmit="setDirections(this.from.value, this.to.value,this.from.value, this.to.value, locale); return false"> </form> <br/> <table class="directions"> <tr><th>Itineraire1 </th><th>Itineraire2 </th><th>Map</th></tr> <tr> <td valign="top"><div id="directions1" style="width: 275px"></div></td> <td valign="top"><div id="directions2" style="width: 275px"></div></td> <td valign="top"><div id="map" style="width: 310px; height: 400px"></div></td> </tr> </table> </body> </html>
Par contre j'ai trouvé pour recuperer la distance et le temps entre les points d'un itineraire
--> voir message alert & meme ajouter un icone ( aujourd'hui "caricon.png" ) pour mettre "depart" "1ieme pause" "arrivée")
Dernière modification par JCZ (19-06-2007 19:08:31)
Hors ligne
function onGDirectionsLoad1(){ distance = ""; for (var i = 0; i +1 < gdir1.getNumGeocodes(); i++) { distance = distance + "#" + gdir1.getRoute(i).getDistance().meters; var marque = gdir1.getMarker(i); marque = new GMarker(marque.getPoint(),{icon:car}); map.addOverlay(marque); } for (var i = 0; i < poly.getVertexCount(); i++) { points[i] = poly.getVertex(i); } var mypoly = new GPolyline(points, "#FF0000", 9, 0.6); map.addOverlay(mypoly); document.getElementById("distance").value = distance; alert(distance); load_fin = true; }
Hors ligne
tu peux mettre le code de la page html entiere
Cela explose quand je remplace la fonction onGDirectionsLoad1
C'est peut etre parce que j'ai un probleme actuellement avec mon poste ...
P.S :
1. la chaine avec les'#' c'est pour pouvoir la traiter dans pb. Je ne sais pas créer, envoyer ( coté html)et recuperer des tableaux ( cote pb ) provenant d'une page html ... mais cela doit etre faisable
2. il nous reste (pour l'instant ) a :
a. recuperer une adresse a partir de coordonnée
b. avoir des icones imprimer pour map ou itineraire
c. recup dans pb de l'itineaire google
d. avoir uniquement l'icone ajouté pour l'itinearie 1
e. voir si google propose des calcule d'itineraire temps ou Km
voir + si vous avez d'autres idées
Dernière modification par JCZ (20-06-2007 00:21:53)
Hors ligne
<!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"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google Map</title> <script src="http://maps.google.com/?file=api&v=2.x&key=ABQIAAAAh2zoWMP0DQLo9f7vBYl0hBSyaqskaCUMELwiGYjmANrqiZdV2BQ0uMpj7_WCl34Qp6K8cwrz9MMJpg" type="text/javascript"></script> <style type="text/css"> v\:* { behavior:url(#default#VML); } body { font-family: Verdana, Arial, sans serif; font-size: 11px; margin: 1px; } table.directions1 th { background-color:#EEEEEE; } table.directions2 th { background-color:#EEEEEE; } img { color: #000000; } </style> <script type="text/javascript"> //<![CDATA[ var eol; var tick = 100; // milliseconds var poly; var map; var distance; var gdir1 = new GDirections(); var gdir2; var geocoder = null; var load_fin = false; var addressMarker; var fromAddress = "6 BIS RUE JULES GUESDE 59390 LYS LEZ LANNOY"; var toAddress = "1 RUE PAUL LANGEVIN 59260 LEZENNES to: 27 AVENUE DE LA REPUBLIQUE 59160 LOMME"; var fromAddress2 = "4 BOULEVARD GAMBETTA 59100 ROUBAIX"; var toAddress2 = "40 RUE SAINT JACQUES 59200 TOURCOING"; var locale = "fr"; var points = []; var car = new GIcon(); car.image="caricon.png" car.iconSize=new GSize(32,18); car.iconAnchor=new GPoint(16,9); var baseIcon = new GIcon(); baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; baseIcon.iconSize = new GSize(20, 34); baseIcon.shadowSize = new GSize(37, 34); baseIcon.iconAnchor = new GPoint(9, 34); baseIcon.infoWindowAnchor = new GPoint(9, 2); baseIcon.infoShadowAnchor = new GPoint(18, 25); function load() { var icone_perso = new GIcon(); icone_perso.image="caricon.png" icone_perso.iconSize=new GSize(32,18); icone_perso.iconAnchor=new GPoint(16,9); if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); // map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GLargeMapControl()); map.addControl(new GScaleControl()); map.addControl(new GOverviewMapControl()) gdir1 = new GDirections(map, document.getElementById("directions1")); GEvent.addListener(gdir1, "load", onGDirectionsLoad1); GEvent.addListener(gdir1, "error", handleErrors); gdir2 = new GDirections(map, document.getElementById("directions2")); GEvent.addListener(gdir2, "load", onGDirectionsLoad2); GEvent.addListener(gdir2, "error", handleErrors); setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale); } } function setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale) { gdir1.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale }); gdir2.load("from: " + fromAddress2 + " to: " + toAddress2, { "locale": locale } ,{getPolyline:false}); } function handleErrors(){ if (gdir1.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("Aucun endroit géographique correspondant n'a pu être trouvé pour une des adresses indiquées. Ceci peut être dû au fait que l'adresse est relativement nouvelle, ou elle peut être incorrecte.\nError code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_SERVER_ERROR) alert("Geocoding ou une demande de directions ne pourrait pas être avec succès traité, pourtant la raison exacte de l'échec n'est pas connue.\n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_MISSING_QUERY) alert(" Le paramètre de HTTP q ne manquait ou a eu aucune valeur. Pour des demandes de geocoder, ceci signifie qu'une adresse vide a été indiquée comme entrée. Pour des demandes de directions, ceci signifie qu'aucune question n'a été indiquée dans l'entrée .\n Error code: " + gdir1.getStatus().code); // else if (gdir1.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_KEY) alert("La clef donnée est invalide ou pas match le domaine pour lequel il a été donné . \n Error code: " + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_REQUEST) alert("Une demande de directions n'a pas pu être avec succès analysée .\n Error code: " + gdir1.getStatus().code); else if (gdir2.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("Aucun endroit géographique correspondant n'a pu être trouvé pour une des adresses indiquées. Ceci peut être dû au fait que l'adresse est relativement nouvelle, ou elle peut être incorrecte.\nError code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_SERVER_ERROR) alert("Geocoding ou une demande de directions ne pourrait pas être avec succès traité, pourtant la raison exacte de l'échec n'est pas connue.\n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_MISSING_QUERY) alert(" Le paramètre de HTTP q ne manquait ou a eu aucune valeur. Pour des demandes de geocoder, ceci signifie qu'une adresse vide a été indiquée comme entrée. Pour des demandes de directions, ceci signifie qu'aucune question n'a été indiquée dans l'entrée .\n Error code: " + gdir2.getStatus().code); // else if (gdir2.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_KEY) alert("La clef donnée est invalide ou pas match le domaine pour lequel il a été donné . \n Error code: " + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_REQUEST) alert("Une demande de directions n'a pas pu être avec succès analysée .\n Error code: " + gdir2.getStatus().code); else alert("Une erreur inconnue s'est produite ."); } function onGDirectionsLoad1(){ distance = ""; for (var i = 0; i +1 < gdir1.getNumGeocodes(); i++) { distance = distance + "#" + gdir1.getRoute(i).getDistance().meters; var marque = gdir1.getMarker(i); marque = new GMarker(marque.getPoint(),{icon:car}); map.addOverlay(marque); } poly=gdir1.getPolyline(); for (var i = 0; i < poly.getVertexCount(); i++) { points[i] = poly.getVertex(i); } var mypoly = new GPolyline(points, "#FF0000", 9, 0.6); map.addOverlay(mypoly); document.getElementById("distance").value = distance; alert(distance); load_fin = true; } function onGDirectionsLoad2(){ // Use this function to access information about the latest load() // results. // e.g. } //]]> </script> </head> <body onload="load()" onunload="GUnload()"> <input type="hidden" id="getDuration" name="getDuration" size="30" /> <input type="hidden" id="Distance" name="Distance" size="300" /> <input type="hidden" id="getSummaryHtml" name="getSummaryHtml" size="30" /> <form action="#" onsubmit="setDirections(this.from.value, this.to.value,this.from.value, this.to.value, locale); return false"> </form> <br/> <table class="directions"> <tr><th>Itineraire1 </th><th>Itineraire2 </th><th>Map</th></tr> <tr> <td valign="top"><div id="directions1" style="width: 275px"></div></td> <td valign="top"><div id="directions2" style="width: 275px"></div></td> <td valign="top"><div id="map" style="width: 310px; height: 400px"></div></td> </tr> </table> </body> </html>
Hors ligne
j'ai trouvé ce lien... pour determiner une adresse à partir des lattitudes et longitudes.
http://stevemorse.org/jcal/latlon.php?
Hors ligne
Il y a des exemples ici
Si tu peux en faire qqchose
Hors ligne
tres tres interessant
Hors ligne
petite info intéressante : cliquer ici
Hors ligne
JCZ a écrit:
si on peut l'exploiter ....
L'auteur du site m'a répondu ...
The connection protocol is straightforward. Simply do a post request to the soapdemo url and pass it the values of Longitude and Latitude as post parameters.
If you can't get that to work, then you might need to see my code that does the connection. Normally I consider my code proprietary, but some people have asked to buy it and have offered me $300 for it. If you want, I would make it available to you for the same price.
-- Steve Morse
Hors ligne
pour une somme modique de 300$
Hors ligne