Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
A la rigueur, je suis prets a l'ht mais j'ai pas reussi à le faire fonctionner
Je ne sais pas si c'est un probleme de fireall ou autre ...
Je ne sais pas non plus s'il faut faire une install sur chaque poste ou pas ....
Sans ces elements je ne veux pas investire et je pense que d'ici peu toutes les fonctionnalités seront dispo sur google
Si qq'un a fait le test et a reussi à le faire marcher je suis preneur
Hors ligne
qui peut m'aider ?
voici mon code htlm et je ne sais pas pourquoi
var marque = gdir1.getMarker(i);
map.removeOverlay(gdir1.getMarker(i));
marque = new GMarker(marque.getPoint(),{icon:car});
map.addOverlay(marque);
ne marche pas. Cela doit remplacer les marqueurs de l'itineraire par d'autres marqueurs
Merci
<!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"; function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); map.addControl(new GMapTypeControl()); map.addControl(new GLargeMapControl()); map.addControl(new GScaleControl()); gdir1 = new GDirections(map, document.getElementById("directions1")); GEvent.addListener(gdir1, "load", onGDirectionsLoad1); GEvent.addListener(gdir1, "error", handleErrors); setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale); } } function setDirections(fromAddress, toAddress,fromAddress2, toAddress2, locale) { gdir1.loadFromWaypoints([fromAddress,toAddress], {getPolyline:true,getSteps:true,"locale":locale }); } 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_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 alert("Une erreur inconnue s'est produite ."); } function onGDirectionsLoad1(){ distance = ""; for (var i = 0; i +1 < gdir1.getNumGeocodes(); i++) { var car = new GIcon(); car.image="icon0.png" car.iconSize=new GSize(32,32); car.shadowSize=new GSize(56,32); car.iconAnchor=new GPoint(16,32); var marque = gdir1.getMarker(i); map.removeOverlay(gdir1.getMarker(i)); marque = new GMarker(marque.getPoint(),{icon:car}); map.addOverlay(marque); } } //]]> </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> <td valign="top"><div id="directions1" style="width: 275px"></div></td> <td valign="top"><div id="map" style="width: 310px; height: 400px"></div></td> </tr> </table> </body> </html>
Dernière modification par JCZ (10-07-2007 18:55:38)
Hors ligne
il faut que tu declares la variable car
var car = new GIcon(); car.image="http://www.mapbuzz.com/images/marker.gif" car.iconSize=new GSize(40,30); car.iconAnchor=new GPoint(30,22);
Hors ligne
c'est fait juste au dessus ...
var car = new GIcon();
car.image="icon0.png"
car.iconSize=new GSize(32,32);
car.shadowSize=new GSize(56,32);
car.iconAnchor=new GPoint(16,32);
Hors ligne
ou se trouve icon0.png ?
le probleme vient de la... remplace par le chemin que je t'ai donné pour voir si c'est bien ca...
Hors ligne
pick ouic a écrit:
ou se trouve icon0.png ?
le probleme vient de la... remplace par le chemin que je t'ai donné pour voir si c'est bien ca...
cela ne marche pas
icon0.png est dans le repertoire ou se trouve le fichier html et est bien accesible
on peut le remplacer par n'importe quel icone c'est pareil
Cela doit remplacer les marqueurs de l'itineraire par cet nouvel icone
Hors ligne
JCZ a écrit:
qqu'un a qqchose a me proposer ?
En attendant pour recuperer le chemin google dans une variable (qui porte le nom 'chemin" )
--> exploitable dans pb
<!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=ABQIAAAAi44TY0V29QjeejKd2l3ipRTRERdeAiwZ9EeJWta3L_JZVS0bOBQlextEji5FPvXs8mXtMbELsAFL0w" type="text/javascript"></script> <style type="text/css"> v\:* { behavior:url(#default#VML); } body { font-family: Verdana, Arial, sans serif; font-size: 11px; margin: 2px; } table.directions th { background-color:#EEEEEE; } img { color: #000000; } </style> <script type="text/javascript"> //<![CDATA[ var chemin = ""; var map; var gdir; var geocoder = null; var addressMarker; var fromAddress = "48.004970, -2.002816"; var toAddress = "12 bd macdonald 75019 Paris to: 150 rue de flandre 75 Paris"; var locale = "fr"; function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); gdir = new GDirections(map, document.getElementById("directions")); GEvent.addListener(gdir, "load", onGDirectionsLoad); GEvent.addListener(gdir, "error", handleErrors); setDirections(fromAddress, toAddress, locale); GEvent.addListener(gdir,"load", function() { setTimeout('customPanel(map,"map",gdir,document.getElementById("path"))', 1); }); } } // ============ custom direction panel =============== function customPanel(map,mapname,gdir,div) { var html = ""; // ===== local functions ===== // === waypoint banner === function waypoint(point, type, address) { chemin += ' ' + address; } // === route distance === function routeDistance(dist) { chemin += ' ' + dist; } // === step detail === function detail(point, num, description, dist) { chemin += ' ' + num+ '.' + description; } // === read through the GRoutes and GSteps === for (var i=0; i<gdir.getNumRoutes(); i++) { if (i==0) { var type="play"; } else { var type="pause"; } var route = gdir.getRoute(i); var geocode = route.getStartGeocode(); var point = route.getStep(0).getLatLng(); // === Waypoint at the start of each GRoute waypoint(point, type, geocode.address); routeDistance(route.getDistance().html+" (about "+route.getDuration().html+")"); for (var j=0; j<route.getNumSteps(); j++) { var step = route.getStep(j); // === detail lines for each step === detail(step.getLatLng(), j+1, step.getDescriptionHtml(), step.getDistance().html); } } alert(chemin); // === the final destination waypoint === var geocode = route.getEndGeocode(); var point = route.getEndLatLng(); waypoint(point, "stop", geocode.address); // alert(chemin); } // ============ end of customPanel function =========== function setDirections(fromAddress, toAddress, locale) { gdir.load("from: " + fromAddress + " to: " + toAddress , { "locale": locale }); } function handleErrors(){ if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code); else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code); else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code); // else if (gdir.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: " + gdir.getStatus().code); else if (gdir.getStatus().code == G_GEO_BAD_KEY) alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code); else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code); else alert("An unknown error occurred."); } function onGDirectionsLoad(){ // Use this function to access information about the latest load() // results. // e.g. // document.getElementById("getStatus").innerHTML = gdir.getStatus().code; // and yada yada yada... } //]]> </script> </head> <body onload="load()" onunload="GUnload()"> <form action="#" onsubmit="setDirections(this.from.value, this.to.value, locale); return false"> </form> <br/> <table class="directions"> <tr><th>Itineraire </th><th></th></tr> <tr> <td valign="top"><div id="directions" style="width: 500px"></div></td> <td valign="top"><div id="map" style="width: 0px; height: 0px"></div></td> </tr> </table> </body> </html>
Hors ligne
petite mise à jour de la version 3,
par rapport au nouveau lien du site, et par rapport à l'information ramenée par virtual earth
Hors ligne
J'ai trouvé cela pour avoir l'adresse en fonction des coordonnées ici
Visiblemement, il ne connait pas beaucoup d'adresse ...
Je recherche toujours comment remplacer les marqueurs de l'itineraire par d'autres marqueurs
Hors ligne
Dommage qu'il y ai un objet OLE car cela empêche la migration vers PocketBuilder.
Est-ce que quelqu'un a une idée pour faire sans OLE ni DDE ?
Hors ligne
JCZ a écrit:
j'arrive pas à le faire marcher
ci joint codeCode: html
<!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>Cela doit remplacer les marqueurs de l'itineraire par d'autres marqueurs
Merci
un p'tit up
Merci
Hors ligne
j'ai testé sous PB11 : migration OK
il faut juste faire un global replace "pbadonf.monforum.net" par "pbadonf.fr/forum"
(à moins qu'il y ait une version plus récente, j'ai DL cette version : http://pbadonf.fr/sam1/pb6earthmapi3.zip )
seul les boutons "rechercher" ne fonctionnent pas : quand je saisis ville et/ou CP et/ou adresse il renvoie 0,0
Hors ligne
il faut migrer autre chose... n'oublies pas la gestion de l'unicode.
genre dans l'objet n_cst_internet :
is_data = string(data,EncodingANSI!)
par contre la partie suivez le chemin et itineraire google map ne fonctionne plus... et je n'ai pas cherché depuis...
Hors ligne
pick ouic a écrit:
il faut migrer autre chose... n'oublies pas la gestion de l'unicode.
genre dans l'objet n_cst_internet :Code: pb
is_data = string(data,EncodingANSI!)
ça marche, il faut au moins l'adresse et la ville
pick ouic a écrit:
par contre la partie suivez le chemin et itineraire google map ne fonctionne plus... et je n'ai pas cherché depuis...
si si, ça marche
Hors ligne
si tu peux mettre à dispo ta version 11, je veux bien voir.
Hors ligne
je te l'ai mailée
Hors ligne
ça dépend peut-être de la version d'IE (?)
pour ma part je suis resté sur la version de base XP (6.0)
Hors ligne
Hello,
ça à l'air super comme appli mais malheureusement , je ne sais pas si le problème vient de moi où si le lien est mort mais lorsque je lance l'application , J'ai une belle "action annulée" sous IE
Hors ligne
Déterrage de topic...
Je n'arrive plus à le faire fonctionner, c'est normal ?
J'ai un vieux "Site web indisponible" dans l'OLE IE...
Hors ligne