[R] Extraction de latitude/longitude à partir d'une carte

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
tomy46
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 08 juin 2009 19:24
Localisation : Cahors (France)
Status : Hors ligne

[R] Extraction de latitude/longitude à partir d'une carte

#1

Message par tomy46 »

Bonjour à tous :D !

J’ai encore une fois besoin de vos talents !
Je fais un logiciel de base de données client. Etant dans une zone géographique ou les adresses ne sont pas suffisamment précises pour être affiché sur une carte, j’ai besoin de repérer les maisons des clients grâce à leur latitude et leur longitude.
Pour l’affichage de la carte, j’utilise Google Map UDF de Seangriffin …
Seulement je n’arrive pas à trouver un moyen en « pointant » sur la carte, d’extraire les coordonnés géographique des domiciles …
Je suis ouvert à toute idées/propositions même si on doit passer par un autre système que google map …

Merci


P.S : J'avais cru lire que The Google Latitude API permettait de faire ca, mais celui-ci est fermé depuis Août 2013 ... il nous faut donc une autre solution/idée ...
Modifié en dernier par tomy46 le dim. 22 sept. 2013 20:27, modifié 1 fois.
==============================================
Just for fun ... ;)
==============================================
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2273
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Extraction de latitude/longitude à partir d'une car

#2

Message par jchd »

Avec Map, tu fais clic droit à l'endroit choisi et "plus d'info sur cet endroit". Les coordonnées GPS déboulent dans le champ adresse géographique (pas URL). Tu dois pouvoir automatiser ça (ou plus simple) avec AutoIt.

Désolé je n'ai pas trop le temps ce w-e.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraction de latitude/longitude à partir d'une car

#3

Message par mikell »

D'après ce site http://universimmedia.pagesperso-orange.fr/geo/loc.htm
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
tomy46
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 08 juin 2009 19:24
Localisation : Cahors (France)
Status : Hors ligne

Re: [..] Extraction de latitude/longitude à partir d'une car

#4

Message par tomy46 »

Ouaaa que dire : PARFAIT :)

Juste, c'est possible de me l'expliquer grosso modo car les incrustations IE de ce style avec interaction IE<>Autoit je suis complètement pommé :

Pourquoi le code web se trouve à la fin du script sous forme de "commentaire" ?
C'est possible de l'inclure réellement dans mes fonction autoit?
Voir même d'y "injecter" des variables spécifiques comme la lat' long' du point d'origine ?

C'est quoi ce :

Code : Tout sélectionner

StringRegExpReplace(FileRead(@scriptfullpath), '(?s).+#cs(.+?)#ce.*?', "$1")
La fonction en elle même je la connais, mais là, mystère mystère...
Sans parler du fait que je suis une bille en JS...

Bref ce que j'ai compris, c'est que Autoit récupère la valeur des deux champs "lng" et "lat" en cas de modification ... mais c'est à peu près tout ...

Bref comme cette magnifique fonction est soumise a modification si google le décide, j'aimerai bien savoir un peu comment ça marche histoire de suivre le mouvement :)
==============================================
Just for fun ... ;)
==============================================
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraction de latitude/longitude à partir d'une car

#5

Message par mikell »

C'est vrai je t'ai balancé tout ça sans explications :oops:

Le StringRegExpReplace lit le code html qui est en commentaire et s'en sert pour créer le fichier .html qui s'affiche ensuite dans la gui, j'ai fait comme ça pour avoir tout dans un seul fichier au3 mais tu peux très bien éviter ce trafic en lisant un fichier html déjà existant

Code : Tout sélectionner

$oIE.navigate("file://" & @scriptdir & "\loc.html")
Mais tu peux aussi te passer de fichier html externe en faisant comme ça

Code : Tout sélectionner

$oIE = ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($oIE, 0, 0, 740, 660)
_IENavigate($oIE, "about&#058;blank")  ; "&#058;" c'est les 2 points
_IEDocWriteHTML($oIE, $html)
$oIE.refresh()
Pour que la carte se cale sur un point d'origine à l'ouverture, tu peux écrire les coordonnées dans le html, ou encore injecter l'adresse dans le html au moment de sa création ,ou commander directement la page à l'ouverture avec les fonctions _IE
► Afficher le texte
etc
En fait je me suis pas foulé (un grand merci au site où j'ai pris ce code) nous on a juste à manipuler la carte comme des blaireaux parce que c'est les 2 fonctions javascript de la page qui se tapent tout le boulot de communication avec les apis google :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
tomy46
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 08 juin 2009 19:24
Localisation : Cahors (France)
Status : Hors ligne

Re: [..] Extraction de latitude/longitude à partir d'une car

#6

Message par tomy46 »

Yes tip top ...
En tout cas, nickel pour la réponse a ma question et nickel pour les explications !
Un grand merci à toi !! :mrgreen:
==============================================
Just for fun ... ;)
==============================================
Avatar du membre
tomy46
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 08 juin 2009 19:24
Localisation : Cahors (France)
Status : Hors ligne

Re: [R] Extraction de latitude/longitude à partir d'une cart

#7

Message par tomy46 »

Petite info de dernière minute :

Pour le "about&#058;blank" pas besoin du "&#058;" les ":" suffisent.
Et surtout ne pas oublier le :

Code : Tout sélectionner

While $oIE.busy
    sleep(200)
Wend
Sinon ça passe trop vite à la suite avant la fin du chargement de la carte et ça plante sur le

Code : Tout sélectionner

[b]$new_long = $long.innertext[/b]
Voila la version final du code avec toute la page dans la variable "$html" :

Code : Tout sélectionner

GUICreate("Localisation : Longitude / Latitude", 740, 600)

$oIE = ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($oIE, 0, 0, 740, 540)
_IENavigate($oIE, "about&#058;blank")
_IEDocWriteHTML($oIE, $html)
$oIE.refresh()

$input_lat = GUICtrlCreateInput("", 20, 550, 200, 30)
$input_long = GUICtrlCreateInput("", 240, 550, 200, 30)

GUISetState()

While $oIE.busy
    sleep(200)
Wend

$long = _IEGetObjById($oIE, "lng")
$lat = _IEGetObjById($oIE, "lat")

While 1
    $old_long = GuiCtrlRead($input_long)
    $old_lat = GuiCtrlRead($input_lat)
    Sleep(100)
    $new_long = $long.innertext
    $new_lat = $lat.innertext
    If $new_long <> $old_long OR $new_lat <> $old_lat Then
        GuiCtrlSetData($input_long, $new_long)
        GuiCtrlSetData($input_lat, $new_lat)
    EndIf
Wend
==============================================
Just for fun ... ;)
==============================================
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Extraction de latitude/longitude à partir d'une cart

#8

Message par mikell »

tomy46 a écrit :Et surtout ne pas oublier le :

Code : Tout sélectionner

While $oIE.busy
    sleep(200)
Wend
Sinon ça passe trop vite à la suite avant la fin du chargement de la carte et ça plante
Foutre c'est vrai j'y avais pas pensé, heureusement que ça s'est trouvé là par hasard dans le code, quelle merveilleuse et bien opportune coïncidence :mrgreen:
Pour info la fonction _IENavigate($oIE, "url") a par défaut un paramètre pour attendre la fin du chargement de la page (idem pour _IEAction($oIE, "refresh") ), mais les commandes $oIE.navigate() et $oIE.refresh() n'en disposent pas

Pour le "about&#058;blank" c'est le forum qui de façon indésirable mais carrément autoritaire te remplace le ":" par le "&#058;" (ce qui s'est produit aussi dans le code que tu as posté :wink: )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
tomy46
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 08 juin 2009 19:24
Localisation : Cahors (France)
Status : Hors ligne

Re: [R] Extraction de latitude/longitude à partir d'une cart

#9

Message par tomy46 »

Je viens de voir les ":" ^^

Petit bonus pour ceux qui voudrait aller un peu plus loin :
Voici une balise Body un peu modifiée pour rendre l'intégration IE plus transparente au sein de l'appli :

Code : Tout sélectionner

<body oncontextmenu=""return false"" ondragstart=""return false"" onselectstart=""return false"" onload=""load()"" onunload=""GUnload()"" >
==============================================
Just for fun ... ;)
==============================================
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Extraction de latitude/longitude à partir d'une cart

#10

Message par mikell »

Bonne idée mais pourquoi les double double-quotes ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
tomy46
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 08 juin 2009 19:24
Localisation : Cahors (France)
Status : Hors ligne

Re: [R] Extraction de latitude/longitude à partir d'une cart

#11

Message par tomy46 »

Car j'ai tout fait passer dans ce style :

Code : Tout sélectionner

" </body>" & @CRLF & _
Simple question de goût et d'habitude je dirais ^^
Je boss avec pas mal de commande SQL à coté du coup ça me permet de pas trop jongler avec différentes syntaxes ...
==============================================
Just for fun ... ;)
==============================================
Répondre