[OSRM-talk] (no subject)

Romain NKONGO romain.rnk49 at gmail.com
Thu Feb 12 15:38:53 UTC 2015


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 <romain.rnk49 at gmail.com>:

> 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 <emil at tin.dk>:
>
>>
>> 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 <romain.rnk49 at gmail.com> 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
>> OSRM-talk at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/osrm-talk
>>
>>
>>
>> _______________________________________________
>> OSRM-talk mailing list
>> OSRM-talk at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/osrm-talk
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/osrm-talk/attachments/20150212/5626e09a/attachment-0001.html>


More information about the OSRM-talk mailing list