Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

autant l'annoncer tout de suite "je suis nul", à quoi sert de le cacher, ca va se voir !!!

 

j'essayer à partir de mapquest récuperer la distance d'un parcourt défini:

 

l'adresse de l'api est: https://www.mapquestapi.com/directions/v2/route?key=pEKtQ21opd7YxXXXXXXXXX&from=48.8469154,2.4396014&to=48.84,2.4430214&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false

 

j'ai mis dans mon VD:

HC2 = Net.FHttp("www.mapquestapi.com",80);
 
local response, status, errorCode = HC2:GET("/directions/v2/route?key=pEKtQ21opd7YxBQW&from=48.84691,2.439&to=48.8,2.443021499&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false")
 
jsonTable = json.decode(response);
fibaro:debug("distance : " .. jsonTable.distance .. " m - ");
fibaro:debug(jsonTable.time .. " : min : " .. jsonTable.time);
 
Distance = fibaro:getGlobalValue("jsonTable.distance").. " m"
local Distance = (" distance : " ..jsonTable.distance .."m" ..jsonTable.distance);
 
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", Distance);
fibaro:log(Distance)

ca me remonte rien même j'ai comme message d'erreur: 

 

[ERROR] 10:42:58: line 7: attempt to concatenate field 'distance' (a nil value)

Merci de votre aide

 

Sébastien

Posté(e)

Bonjour,

 

Essaie juste cela :

 

HC2 = Net.FHttp("www.mapquestapi.com",80);
 
local response, status, errorCode = HC2:GET("/directions/v2/route?key=pEKtQ21opd7YxBQW&from=48.84691,2.439&to=48.8,2.443021499&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false")
if tonumber(status) == 200 then
    local jsonTable = json.decode(response)
    fibaro:debug("distance : " .. jsonTable.distance .. " m - ")
    fibaro:debug(jsonTable.time .. " : min : " .. jsonTable.time)
else
    fibaro:debug("Status:" .. status .. " err: " .. errorCode )
end

 

Quelle est ta ligne 7 ?

A mon avis tu confonds avec tes getGlobalValue et setglobal et tes declarations de variable

Posté(e)

Bonjour,

 

merci. J'ai le même message d'erreur.

 

Par contre quand je mets l'url sur internet j'ai come retour: et comme j'ai "distance" je pensais que c'était ca que je devait mettre pour récupérer cette variable

 

{"route":{"hasTollRoad":false,"hasBridge":false,"computedWaypoints":[],"fuelUsed":0.01,"hasTunnel":false,"hasUnpaved":false,"hasHighway":false,"realTime":-1,"boundingBox":{"ul":{"lng":2.43998,"lat":48.847942},"lr":{"lng":2.444597,"lat":48.846908}},"distance":0.275,"time":46............

 

Ma ligne 7 est

 

fibaro:debug("distance : " .. jsonTable.distance .. " m - ");

 

Posté(e)

C'est ce que j'ai fait....

 

et j'ai 

 

[ERROR] 10:42:58: line 6: attempt to concatenate field 'distance' (a nil value)

avec le code:

 

HC2 = Net.FHttp("www.mapquestapi.com",80);
 
local response, status, errorCode = HC2:GET("/directions/v2/route?key=pEKtQ21opd7YxBQWCsTCMVCehFzJmo4N&from=48.846915499999994,2.4396014999999998&to=48.847921,2.4430214999999995&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false")
if tonumber(status) == 200 then
    local jsonTable = json.decode(response)
    fibaro:debug("distance : " .. jsonTable.distance .. " m - ")
    fibaro:debug(jsonTable.time .. " : min : " .. jsonTable.time)
else
    fibaro:debug("Status:" .. status .. " err: " .. errorCode )
end

 

Posté(e)

ah ok, pardon.

Mets en forme ton json pour etre sur en ajoutant dans ton navigateur un module type json viewer, ca rend "plus" lisible le json en le formatant.

 

Donc tu te connectes bien à l'API, pas de souci de ce côté là.

C'est peut-etre  : jsonTable.route.distance

Posté(e)

Voila la mise en forme. Je n'ai pas tout mis.....

 

{
route: 
{
hasTollRoad: false,
hasBridge: false,
computedWaypoints: [ ],
fuelUsed: 0,
hasTunnel: false,
hasUnpaved: false,
hasHighway: false,
realTime: -1,
boundingBox: 
{
ul: 
{
lng: 2.4396,
lat: 48.847942
},
lr: 
{
lng: 2.44302,
lat: 48.846908
}
},
distance: 0.221,
    • LE "jsonTable.route.distance je le met ou sur mon url?
    Merci encore
Posté(e)

T'as une distance de 0,2 m ?
,-)

 

Essaie comme ceci, sans certitude ;-)


 

HC2 = Net.FHttp("www.mapquestapi.com",80);
 
local response, status, errorCode = HC2:GET("/directions/v2/route?key=pEKtQ21opd7YxBQWCsTCMVCehFzJmo4N&from=48.846915499999994,2.4396014999999998&to=48.847921,2.4430214999999995&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false")
if tonumber(status) == 200 then
    local jsonTable = json.decode(response)
    fibaro:debug("Connexion OK")
    fibaro:debug("Distance : " .. jsonTable.route.distance)
else
    fibaro:debug("Status:" .. status .. " err: " .. errorCode )

end

 

Posté(e)

super, c'est ca..... j'ai un retour...

 

Qu'as tu fait......?

 

Il me reste plus qu'a avoir ma current location (sans passé par HC2 pour avoir un plan B.....) :)

 

Merci beaucoup

Posté(e) (modifié)

Moi rien, c'est toi en mettant en forme le json ;-)

tu peux voir :

{ -- debut du json

route : -- 1ere entree du json (cest peut-etre pas le bon terme technique..)

{ -- debut des sous-entrees derriere "route"

....

...

distance :

time...

 

Donc pour recuperer la valeur de distance :

tu as ecris :

local  jsonTable = json.decode(response)

pour descendre dans "l'arborescence" du json :

jsonTable.route.distance

jsonTable.route.time...

 

Essaie cela alors

 

HC2 = Net.FHttp("www.mapquestapi.com",80);
 
local response, status, errorCode = HC2:GET("/directions/v2/route?key=pEKtQ21opd7YxBQWCsTCMVCehFzJmo4N&from=48.846915499999994,2.4396014999999998&to=48.847921,2.4430214999999995&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false")

if tonumber(status) == 200 then
    local jsonTable = json.decode(response)
    fibaro:debug("Connexion OK")
    fibaro:debug("Distance : " .. jsonTable.route.distance.. " m")
    fibaro:debug("Temps : " .. jsonTable.route.time.. " mins ")
else
    fibaro:debug("Status:" .. status .. " err: " .. errorCode )
end

 

Modifié par pepite
Posté(e)

C'est génial, merci beaucoup. 

 

Je cherche maintenant sur le net pour des solutions de récupérer ma current location.

 

Très bonne fin de journée

 

Seb

  • Upvote 1
  • 2 semaines après...
Posté(e)

Re bonjour,

 

grrr je tombe sur un noeud.... je n'arrive pas à retrouver la street en json decode

 

le json:

 

{

  • "info": { },
  • "options": {
    • "maxResults": 1,
    • "thumbMaps": true,
    • "ignoreLatLngInput": false
    },
  • "results": [
    • {
      • "providedLocation": {
        • "latLng": {
          • "lat": 48.847633,
          • "lng": 2.452675
          }
        },
      • "locations": [
        • {
          • "street": "Rue de l'Industrie",
          • "adminArea6": "",
          • "adminArea6Type": "Neighborhood",
          • "adminArea5": "Vincennes",
          • "adminArea5Type": "City",
          • "adminArea4": "",

et je mets 

fibaro:debug(jsonTable3.results.locations.street)

et ca ne marche pas (message d'erreur

[ERROR] 15:25:37: line 11: attempt to index field 'locations' (a nil value)

Merci

 

Sébastien

Posté(e) (modifié)

Partage aussi ton code stp.

 

Est ce que tu as qqch dans 

jsonTable3.results.providedLocation.latLng.lat

 

Modifié par pepite
Posté(e)

Non je n'ai rien avec la ligne que tu me donne.

 

Voici le code:

HC2 = Net.FHttp("www.mapquestapi.com",80);
local EmplacementDEPART = "48.847633,2.452675"
local EmplacementARRIVEE = "48.8103843,2.343642100000011"
local URL3 = "/geocoding/v1/reverse?key=pEKtQ21opd7YxBQWCsTCMVCehFzJmo4N&location=" ..EmplacementDEPART.."&includeRoadMetadata=true&includeNearestIntersection=true"
fibaro:debug(URL3);
local response3, status3, errorCode3 = HC2:GET(URL3)
if tonumber(status3) == 200 then
    local jsonTable3 = json.decode(response3)
    fibaro:debug("Connexion OK")
     fibaro:debug("Street Depart : " .. jsonTable3.results.providedLocation.latLng.lat)
    fibaro:debug("Ville Depart : " .. jsonTable3.results.locations.adminArea5)
  fibaro:debug("Pays Depart : " .. jsonTable3.results.locations.adminArea1)
  fibaro:debug("Departement Depart : " .. jsonTable3.results.locations.adminArea3)
  fibaro:debug("Code Postal Depart : " .. jsonTable3.results.locations.postalCode)
else
    fibaro:debug("Status adresse:" .. status3 .. " err: " .. errorCode3 )
end

 

Posté(e)

et voici le log:

[DEBUG] 16:45:35: /geocoding/v1/reverse?key=pEKtQ21opd7YxBQWCsTCMVCehFzJmo4N&location=48.847633,2.452675&includeRoadMetadata=true&includeNearestIntersection=true
[DEBUG] 16:45:35: Connexion OK
[ERROR] 16:45:35: line 10: attempt to index field 'providedLocation' (a nil value)

 

Posté(e)

c'est pas le même lien... L'a c'est pour décoder latitude et longitude en adresse....

 

le json complet:

 

{

}

Posté(e)

je n'avais pas vu sur mon tel, mais ça vient des [crochets] après results ;-) 

 

et ben là, je ne sais pas encore comment faire pour passer la marche ;-) , je cherche

Posté(e)

Bonsoir @Sebbrunie1,

 

J'ai reconnecté mes neurones ;-)

 

Pour la syntaxe : 

 - [] : tableau

 - {} : objets

 - " " : elements. 

 

En fait pour rentrer dans un tableau, il faut les crochets dans lequel on et le numéro du tableau

 

A tester bien sur, mais c'est ok chez moi ;-) 

 

 

HC2 = Net.FHttp("www.mapquestapi.com",80);
local EmplacementDEPART = "48.847633,2.452675"
local EmplacementARRIVEE = "48.8103843,2.343642100000011"
local URL3 = "/geocoding/v1/reverse?key=pEKtQ21opd7YxBQWCsTCMVCehFzJmo4N&location=" ..EmplacementDEPART.."&includeRoadMetadata=true&includeNearestIntersection=true"
fibaro:debug(URL3);
local response3, status3, errorCode3 = HC2:GET(URL3)
if tonumber(status3) == 200 then
    local jsonTable3 = json.decode(response3)
    fibaro:debug("Connexion OK")
     fibaro:debug("Street Depart : " .. jsonTable3.results[1].locations[1].street)
   fibaro:debug("Ville Depart : " .. jsonTable3.results[1].locations[1].adminArea5)
  fibaro:debug("Pays Depart : " .. jsonTable3.results[1].locations[1].adminArea1)
  fibaro:debug("Departement Depart : " .. jsonTable3.results[1].locations[1].adminArea3)
  fibaro:debug("Code Postal Depart : " .. jsonTable3.results[1].locations[1].postalCode)
else
    fibaro:debug("Status adresse:" .. status3 .. " err: " .. errorCode3 )
end

 

Posté(e)

Hello,

 

impeccable ca marche. C'est super sympa de m'avoir aidé. Par contre je ne comprends pas pourquoi je n'ai eu besoin de le faire pour l'autre json?

 

C'est parce que ce que le tableau était a une seule entrée?

 

Merci en tout cas

Posté(e)

Super de rien.

 

Oui si tu regardes bien le precedent json, il ne contenant pas de tableau [], mais bien que des objets {}

×
×
  • Créer...