Skip to content

Commit

Permalink
Actually expose snapping in node bindings.
Browse files Browse the repository at this point in the history
  • Loading branch information
danpat committed Feb 3, 2019
1 parent cb2a46b commit 6c37b71
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 30 deletions.
58 changes: 29 additions & 29 deletions include/nodejs/node_osrm_support.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,35 @@ inline bool argumentsToParameter(const Nan::FunctionCallbackInfo<v8::Value> &arg
}
}

if (obj->Has(Nan::New("snapping").ToLocalChecked()))
{
v8::Local<v8::Value> snapping = obj->Get(Nan::New("snapping").ToLocalChecked());
if (snapping.IsEmpty())
return false;

if (!snapping->IsString())
{
Nan::ThrowError("Snapping must be a string: [default, any]");
return false;
}
const Nan::Utf8String snapping_utf8str(snapping);
std::string snapping_str{*snapping_utf8str, *snapping_utf8str + snapping_utf8str.length()};

if (snapping_str == "default")
{
params->snapping = osrm::RouteParameters::SnappingType::Default;
}
else if (snapping_str == "any")
{
params->snapping = osrm::RouteParameters::SnappingType::Any;
}
else
{
Nan::ThrowError("'snapping' param must be one of [default, any]");
return false;
}
}

return true;
}

Expand Down Expand Up @@ -944,35 +973,6 @@ argumentsToRouteParameter(const Nan::FunctionCallbackInfo<v8::Value> &args,
}
}

if (obj->Has(Nan::New("snapping").ToLocalChecked()))
{
v8::Local<v8::Value> snapping = obj->Get(Nan::New("snapping").ToLocalChecked());
if (snapping.IsEmpty())
return route_parameters_ptr();

if (!snapping->IsString())
{
Nan::ThrowError("Snapping must be a string: [default, any]");
return route_parameters_ptr();
}
const Nan::Utf8String snapping_utf8str(snapping);
std::string snapping_str{*snapping_utf8str, *snapping_utf8str + snapping_utf8str.length()};

if (snapping_str == "default")
{
params->snapping = osrm::RouteParameters::SnappingType::Default;
}
else if (snapping_str == "any")
{
params->snapping = osrm::RouteParameters::SnappingType::Any;
}
else
{
Nan::ThrowError("'snapping' param must be one of [default, any]");
return route_parameters_ptr();
}
}

bool parsedSuccessfully = parseCommonParameters(obj, params);
if (!parsedSuccessfully)
{
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "osrm",
"version": "5.21.0-customsnapping.1",
"version": "5.21.0-customsnapping.2",
"private": false,
"description": "The Open Source Routing Machine is a high performance routing engine written in C++14 designed to run on OpenStreetMap data.",
"dependencies": {
Expand Down
15 changes: 15 additions & 0 deletions test/nodejs/table.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,21 @@ test('table: test annotations paramater combination', function(assert) {
});
});

test('table: snapping parameter passed through OK', function(assert) {
assert.plan(2);
var osrm = new OSRM(data_path);
var options = {
coordinates: [[7.448205209414596,43.754001097311544],[7.447122039202185,43.75306156811368]],
annotations: ['duration', 'distance'],
snapping: 'any'
};
console.log(options);
osrm.table(options, function(err, result) {
assert.ifError(err);
assert.equal(Math.round(result.distances[0][1] * 10), 1315); // Round it to nearest 0.1m to eliminate floating point comparison error
});
});

test('table: returns buffer', function(assert) {
assert.plan(3);
var osrm = new OSRM(data_path);
Expand Down

0 comments on commit 6c37b71

Please sign in to comment.