Page 1 sur 1
[R] Comment fonctionne _GUICtrlGoogleMap_GetLatLng
Posté : ven. 24 sept. 2010 17:06
par pierrotm777
Bonjour,
J'ai trouvé cette fonction sur le forum anglais.
Elle est censée me restituer les Latitude et Longitude si on lui donne une adresse et une adresse si on lui donne les Latitude et Longitude .
Je pense qu'elle fonctionne puisqu'elle provient de l'UDF Google Maps.au3 qui l'utilise .
Mais comme vous pouvez le constater, ma message box reste vide .
Une idée svp ?
Merci
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
#include <IE.au3>
$MyPos = _GUICtrlGoogleMap_GetLatLng("[color=#408000]48.86,2.31[/color]")
$MyPos2 = _GUICtrlGoogleMap_GetLatLng("[color=#FF0000]Paris, France[/color]")
msgbox (0,"*******",$MyPos&@crlf&$MyPos2)
func _GUICtrlGoogleMap_GetLatLng($address)
Local $latlng[2]
$address_part = StringSplit($address, ",")
_ArrayDelete($address_part, 0)
; if the geocode is a lat long
if UBound($address_part) = 2 and IsNumber($address_part[0]) = True and IsNumber($address_part[1]) = True Then
$latlng[0] = StringStripWS($address_part[0], 3)
$latlng[1] = StringStripWS($address_part[1], 3)
Else
; convert the address to a lat long
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET","http://maps.google.com/maps/api/geocode/json?address=" & $address & "&sensor=false")
$oHTTP.Send()
$HTMLSource = $oHTTP.Responsetext
$geocode_line = StringSplit($HTMLSource, @LF, 1)
$latlng[0] = $geocode_line[_ArraySearch($geocode_line, """lat"":", 0, 0, 1, 1)]
$latlng[0] = StringStripWS(StringReplace(StringReplace($latlng[0], """lat"":", ""), ",", ""), 3)
$latlng[1] = $geocode_line[_ArraySearch($geocode_line, """lng"":", 0, 0, 1, 1)]
$latlng[1] = StringStripWS(StringReplace(StringReplace($latlng[1], """lng"":", ""), ",", ""), 3)
EndIf
Return $latlng
EndFunc
d'aprés ce que je comprends , la page HTML aprés le GET créé un fichier au format JSON du type:
► Afficher le texte
Code : Tout sélectionner
{
"status": "OK",
"results": [ {
"types": [ "locality", "political" ],
"formatted_address": "[color=#FF0000]Paris, France[/color]",
"address_components": [ {
"long_name": "Paris",
"short_name": "Paris",
"types": [ "locality", "political" ]
}, {
"long_name": "Paris",
"short_name": "75",
"types": [ "administrative_area_level_2", "political" ]
}, {
"long_name": "Ile-de-France",
"short_name": "IDF",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "France",
"short_name": "FR",
"types": [ "country", "political" ]
} ],
"geometry": {
"location": {
"lat": 48.8566667,
"lng": 2.3509871
},
"location_type": "APPROXIMATE",
"viewport": {
"southwest": {
"lat": 48.7979015,
"lng": 2.2229277
},
"northeast": {
"lat": 48.9153630,
"lng": 2.4790465
}
},
"bounds": {
"southwest": {
"lat": 48.8155414,
"lng": 2.2241006
},
"northeast": {
"lat": 48.9021461,
"lng": 2.4699099
}
}
}
} ]
}
S'il comporte une adresse et non des coordonnées GPS , ce fichier est traité par le reste de la fonction.
Mon but est de récupérer les coordonnées GPS de l'adresse .
Re: [..]Cooment fonctionne _GUICtrlGoogleMap_GetLatLng
Posté : ven. 24 sept. 2010 17:58
par pierrotm777
Bon, j'ai essayé de comprendre si cette fonction marche.
J'ai donc essayé de lire le fichier json.txt dans un tableau et de lancer le traitement qui marche bien .
Je n'ai donc récupéré pour ce test que la partie de la fonction après le 'ELSE' puisque je donne une adresse pour obtenir des coordonnées.
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
Local $latlng[2]
;$address_part = StringSplit($address, ",")
;_ArrayDelete($address_part, 0)
$HTMLSource = FileRead(@ScriptDir&"\json.txt")
$geocode_line = StringSplit($HTMLSource, @LF, 1)
_ArrayDisplay ($geocode_line)
$latlng[0] = $geocode_line[_ArraySearch($geocode_line, """lat"":", 0, 0, 1, 1)]
;msgbox(0,"******",$latlng[0])
$latlng[0] = StringStripWS(StringReplace(StringReplace($latlng[0], """lat"":", ""), ",", ""), 3)
;msgbox(0,"******",$latlng[0])
$latlng[1] = $geocode_line[_ArraySearch($geocode_line, """lng"":", 0, 0, 1, 1)]
;msgbox(0,"******",$latlng[1])
$latlng[1] = StringStripWS(StringReplace(StringReplace($latlng[1], """lng"":", ""), ",", ""), 3)
;msgbox(0,"******",$latlng[1])
msgbox(0,"******",$latlng[0]&@crlf&$latlng[1])
que dois je modifier dans le script du post #1 pour obtenir mes coordonnées dans la msgbox ?
Re: [..]Comment fonctionne _GUICtrlGoogleMap_GetLatLng
Posté : ven. 24 sept. 2010 18:34
par pierrotm777
Bon ,
Pour une fois , j'ai résolu mon problème seul.
En Fait , le résultat de la fonction est déjà un tableau .
J'ai donc remplacer la ligne :
par