Fix annotations=true handling in NodeJS bindings & libosrm (#6415)
This commit is contained in:
parent
d65e8c7d1e
commit
fb1bb7a15b
@ -1,6 +1,7 @@
|
||||
# Unreleased
|
||||
- Changes from 5.27.1
|
||||
- Misc:
|
||||
- FIXED: Fix annotations=true handling in NodeJS bindings & libosrm. [#6415](https://github.com/Project-OSRM/osrm-backend/pull/6415/)
|
||||
- FIXED: Fix bindings compilation issue on the latest Node. Update NAN to 2.17.0. [#6416](https://github.com/Project-OSRM/osrm-backend/pull/6416)
|
||||
# 5.27.1
|
||||
- Changes from 5.27.0
|
||||
|
@ -439,7 +439,7 @@ class RouteAPI : public BaseAPI
|
||||
{
|
||||
// AnnotationsType uses bit flags, & operator checks if a property is set
|
||||
flatbuffers::Offset<flatbuffers::Vector<float>> speed;
|
||||
if (parameters.annotations_type & RouteParameters::AnnotationsType::Speed)
|
||||
if (requested_annotations & RouteParameters::AnnotationsType::Speed)
|
||||
{
|
||||
double prev_speed = 0;
|
||||
speed =
|
||||
@ -778,7 +778,7 @@ class RouteAPI : public BaseAPI
|
||||
util::json::Object annotation;
|
||||
|
||||
// AnnotationsType uses bit flags, & operator checks if a property is set
|
||||
if (parameters.annotations_type & RouteParameters::AnnotationsType::Speed)
|
||||
if (requested_annotations & RouteParameters::AnnotationsType::Speed)
|
||||
{
|
||||
double prev_speed = 0;
|
||||
annotation.values["speed"] = GetAnnotations(
|
||||
|
@ -799,6 +799,9 @@ inline bool parseCommonParameters(const v8::Local<v8::Object> &obj, ParamType &p
|
||||
if (annotations->IsBoolean())
|
||||
{
|
||||
params->annotations = Nan::To<bool>(annotations).FromJust();
|
||||
params->annotations_type = params->annotations
|
||||
? osrm::RouteParameters::AnnotationsType::All
|
||||
: osrm::RouteParameters::AnnotationsType::None;
|
||||
}
|
||||
else if (annotations->IsArray())
|
||||
{
|
||||
@ -845,6 +848,9 @@ inline bool parseCommonParameters(const v8::Local<v8::Object> &obj, ParamType &p
|
||||
Nan::ThrowError("this 'annotations' param is not supported");
|
||||
return false;
|
||||
}
|
||||
|
||||
params->annotations =
|
||||
params->annotations_type != osrm::RouteParameters::AnnotationsType::None;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -286,9 +286,9 @@ test('route: routes Monaco with several (duration, distance, nodes) annotations
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.distance;}), 'every leg has annotations for distance');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.duration;}), 'every leg has annotations for durations');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.nodes;}), 'every leg has annotations for nodes');
|
||||
assert.notOk(first.routes[0].legs.every(l => { return l.annotation.weight; }), 'has no annotations for weight')
|
||||
assert.notOk(first.routes[0].legs.every(l => { return l.annotation.datasources; }), 'has no annotations for datasources')
|
||||
assert.notOk(first.routes[0].legs.every(l => { return l.annotation.speed; }), 'has no annotations for speed')
|
||||
assert.notOk(first.routes[0].legs.every(l => { return l.annotation.weight; }), 'has no annotations for weight');
|
||||
assert.notOk(first.routes[0].legs.every(l => { return l.annotation.datasources; }), 'has no annotations for datasources');
|
||||
assert.notOk(first.routes[0].legs.every(l => { return l.annotation.speed; }), 'has no annotations for speed');
|
||||
|
||||
options.overview = 'full';
|
||||
osrm.route(options, function(err, full) {
|
||||
@ -303,7 +303,7 @@ test('route: routes Monaco with several (duration, distance, nodes) annotations
|
||||
});
|
||||
|
||||
test('route: routes Monaco with options', function(assert) {
|
||||
assert.plan(11);
|
||||
assert.plan(17);
|
||||
var osrm = new OSRM(monaco_path);
|
||||
var options = {
|
||||
coordinates: two_test_coordinates,
|
||||
@ -322,6 +322,12 @@ test('route: routes Monaco with options', function(assert) {
|
||||
assert.ok(first.routes[0].legs[0]);
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.steps.length > 0; }), 'every leg has steps');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation;}), 'every leg has annotations');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.distance;}), 'every leg has annotations for distance');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.duration;}), 'every leg has annotations for durations');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.nodes;}), 'every leg has annotations for nodes');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.weight; }), 'every leg has annotations for weight');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.datasources; }), 'every leg has annotations for datasources');
|
||||
assert.ok(first.routes[0].legs.every(l => { return l.annotation.speed; }), 'every leg has annotations for speed');
|
||||
|
||||
options.overview = 'full';
|
||||
osrm.route(options, function(err, full) {
|
||||
|
@ -584,7 +584,7 @@ void test_manual_setting_of_annotations_property(bool use_json_only_api)
|
||||
.values["annotation"]
|
||||
.get<json::Object>()
|
||||
.values;
|
||||
BOOST_CHECK_EQUAL(annotations.size(), 6);
|
||||
BOOST_CHECK_EQUAL(annotations.size(), 7);
|
||||
}
|
||||
BOOST_AUTO_TEST_CASE(test_manual_setting_of_annotations_property_old_api)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user