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
Dernière modification par JCZ (13-06-2007 13: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 21: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 */ /**********************************************************************************************/ 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
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 21: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 02: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( + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_SERVER_ERROR) alert( + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_MISSING_QUERY) alert( + 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( + gdir1.getStatus().code); else if (gdir1.getStatus().code == G_GEO_BAD_REQUEST) alert( + gdir1.getStatus().code); else if (gdir2.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert( + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_SERVER_ERROR) alert( + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_MISSING_QUERY) alert( + 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( + gdir2.getStatus().code); else if (gdir2.getStatus().code == G_GEO_BAD_REQUEST) alert( + 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