Ok, so after reading the Leaflet file, it seems to be an appropriate way to send a HTTP request to the server and get the response back as variables I could process in my script. Now I wonder how I could take this interesting piece of code and adapt it to my AngularJS implementation.
2015-02-12 15:00 GMT+01:00 Romain NKONGO <[email protected]>: > Thanks to all for your suggestions. > > To Guillaume : I searched about the $http.get function and I wrote this > function to test if all goes well (I think I've tried it before) : > var getItinerary2=function(){ > $http.get(" > http://localhost:5000/viaroute?loc=47.3654647,0.6822917&loc=47.3905003,0.6920979&compression=false > " > .success(function(data, status, headers, config) { > console.log(data); > }). > error(function(data, status, headers, config) { > console.log("error"); > }); > }; > > Then I call it when I press Submit but the error function is triggered > (the browser console prints "error"). > Am I doing something wrong? > > To Patrick : I will take a look at the JS file to find what could be > helpful. But, to be clear, what I'm trying to do is send a query to the > OSRM server and get back the response in the backend, in my script, not > directly in frontend, as I want to extract some information from the output. > > To Emil : I saw the Cucumber Suite in the OSRM project but those are > precomputed tests, with known responses to the requests. In my case, I will > run tests on a large map (OSM file size : 122 Mo) with random locations > pairs inside the area. > > 2015-02-12 13:47 GMT+01:00 Emil Tin <[email protected]>: > >> >> The OSRM project includes a set of cucumber tests that does a lot of >> testing of binaries, including preparing data and querying the server. It’s >> ruby based but maybe it can help you. Look in the folder features/. The >> various support files that queries osrm are in features/support/ >> >> See https://github.com/Project-OSRM/osrm-backend/wiki/Cucumber-Test-Suite for >> more. >> >> >> Emil >> >> >> >> On 12 Feb 2015, at 10:46 , Romain NKONGO <[email protected]> wrote: >> >> Hello to all the OSRM community. >> >> I'm a french student who works on a university project, along with my >> supervisor and uses the open source project OSRM to achieve it. >> >> At some point, I have to run some tests (like thousands of tests) to >> extract some values from the JSON outputs (e.g. the total time). Now our >> problem is we tried several ways to do this, by sending HTTP GET requests >> to the running server and treat the returned response as JSON. But we tried >> with Javascript, jQuery and AngularJS, with functions like $resource.get, >> jQuery.getJSON $http.get or $http.jsonp and we never managed to get the >> returned response in a way that we could use it for further treatment in >> our script. Actually, we were able to send the requests to the server but >> the response is returned in the fom of an URL link which contains the JSON >> output in its body, not in the form of a variable in our Javascript that we >> could manipulate. >> >> As a matter of fact, we have two issues for this : >> - some of the functions we used (which are based on jsonp) added a >> callback parameter to the sent URL, so the request became invalid with >> 'Query malformed at the position' errors >> - I've seen in the OSRM documentation that the JSON output is encoded >> with the Google polyline algorithm so it could be an invalid JSON for >> Javascript (we also observed errors like SyntaxError: JSON.parse: >> unexpected end of data at line 1 column 1 of the JSON data >> >> We essentially want to use the viaroute service, so our URL is something >> like that : "htttp://localhost:5000/viaroute?loc=a,b&loc=c,d" with a,b, >> c and d random float numbers. >> >> Has anyone ever tried to run some customized tests on OSRM, with any Web >> language, and if so can he give me some tricks of how he succeeded to get >> the JSON ouptut where he wanted? >> >> To be clearer of how I proceeded in AngularJS, here the code of my app.js >> : >> var app = angular.module('clientOSRM', ['ngResource']); >> >> app.controller('appController', ['$scope','$http', 'appServices', >> function ($scope,$http, appServices) { >> //Initialisation de notre input, sa valeur sera stockée en instantané >> dans cette variable (ng-model) >> $scope.valueInput1 = "47.3654647,0.6822917"; >> $scope.valueInput2 = "47.3905003,0.6920979"; >> >> >> var getItineraryParams = function () { >> return { >> start: $scope.valueInput1, >> end: $scope.valueInput2 >> //start: "47.3654647,0.6822917", >> //end: "47.3905003,0.6920979" >> //start: "a,b", >> //end: "c,d" >> } >> }; >> >> //Une fonction accessible que dans ce controleur (mot clé var) >> var getItinerary = function () { >> appServices.osrm.get(getItineraryParams(), >> function (itinerary) { >> alert("Succes : "+typeof itinerary); >> console.log(itinerary); >> }, >> function (error) { >> alert("erreur : "+typeof error+"; status : "+error.status); >> console.log(error); >> } >> ); >> /*$http.jsonp(" >> http://localhost:5000/viaroute?loc=47.3654647,0.6822917&loc=47.3905003,0.6920979&alt=false&geometry=false&output=json >> ") >> .success(function(data, status, headers, config) { >> console.log(data); >> }). >> error(function(data, status, headers, config) { >> console.log(data); >> });*/ >> >> }; >> >> //Une fonction accessible depuis la vue >> //Fonction appelée à l'envoi du formulaire (balise ng-submit dans >> <form>) >> $scope.submit = function () { >> //On peut récupérer la valeur de notre input ! >> //console.log($scope.valueInput1); >> getItinerary(); >> }; >> }]); >> >> app.run(function ($rootScope) { >> >> $rootScope.safeApply = function (fn) { >> var phase = $rootScope.$$phase; >> if (phase === '$apply' || phase === '$digest') { >> if (fn && (typeof(fn) === 'function')) { >> fn(); >> } >> } else { >> this.$apply(fn); >> } >> }; >> >> }); >> >> and also the appServices.js code : >> app.factory('appServices', function ($resource) { >> >> return { >> osrm: $resource("", {}, { >> 'get': { >> method: 'GET', >> params: {start: '@start', end: '@end'}, >> isArray:true, >> url: " >> http://localhost:5000/viaroute?loc=:start&loc=:end&alt=false&geometry=false >> " >> } >> }) >> }; >> }); >> >> In the getItinerary function in app.js, the error function (the 3rd >> parameter) is always triggered even with a HTTP status code '200 OK' of the >> request. >> >> Any ideas where it could go wrong? >> >> Thanks in advance. >> >> >> _______________________________________________ >> OSRM-talk mailing list >> [email protected] >> https://lists.openstreetmap.org/listinfo/osrm-talk >> >> >> >> _______________________________________________ >> OSRM-talk mailing list >> [email protected] >> https://lists.openstreetmap.org/listinfo/osrm-talk >> >> >
_______________________________________________ OSRM-talk mailing list [email protected] https://lists.openstreetmap.org/listinfo/osrm-talk
