[OSRM-talk] (no subject)

Romain NKONGO romain.rnk49 at gmail.com
Thu Feb 12 14:00:46 UTC 2015


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/54c9bebc/attachment.html>


More information about the OSRM-talk mailing list